|
|
  |
IAR, AVR Studio, WinAVR, вопрос чайника |
|
|
|
May 31 2012, 17:03
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(_Артём_ @ May 31 2012, 22:45)  Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO. Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же. Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
May 31 2012, 17:57
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(дымок @ May 31 2012, 20:03)  Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно. Записать то можно по разному - всё равно это константа Код #define TWI_BYTE 0x94
TWCR=TWI_BYTE; // тот же результат Код 22: TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)); +00000070: E984 LDI R24,0x94 Load immediate +00000071: 93800074 STS 0x0074,R24 Store direct to data space Может почему-то автору так было удобней в тот момент.
|
|
|
|
|
Jun 1 2012, 03:59
|
Местный
  
Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940

|
Цитата Может почему-то автору так было удобней в тот момент. Ага,клавиша "+" располагается удобнее на клавиатуре, или клавишу "|" заело.
|
|
|
|
|
Jun 6 2012, 17:36
|

Частый гость
 
Группа: Свой
Сообщений: 103
Регистрация: 17-05-09
Из: Ижевск
Пользователь №: 49 190

|
Цитата(дымок @ Jun 6 2012, 23:15)  Помогите, не могу понять: #define CH 0x07 temp=I2C_Rx(NOT_ACK); if(temp&(1<<CH)) - что за операция здесь происходит? единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp. Если седьмой бит переменной temp равен единице, то их побитовая (поразрядная) сумма будет больше нуля, а если значение в скобках if больше нуля, то выполнится соотвествующий код. в противном случае выполнение перейдет на else 1<<CH = 1<<0x07 = 10000000 допустим значение переменной temp = 11011100, тогда 11011100 & 10000000 ____________ 10000000 или temp = 01110000 01110000 &10000000 ____________ 00000000
--------------------
Шизоидный холерик
|
|
|
|
|
Jun 7 2012, 16:39
|

Местный
  
Группа: Свой
Сообщений: 401
Регистрация: 7-05-10
Из: Оренбург
Пользователь №: 57 135

|
Цитата(Marto @ Jun 6 2012, 23:36)  единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp. Большое спасибо, теперь всё ясно. Я то думал что 0х07 сдвигается на один бит, получался полный ступор.
--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|