реклама на сайте
подробности

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> IAR, AVR Studio, WinAVR, вопрос чайника
Smoky
сообщение May 31 2012, 16:33
Сообщение #61


Местный
***

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



Коллеги, объясните что это за опрерация и применима ли она в WinAVR?
TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 16:45
Сообщение #62


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(дымок @ May 31 2012, 19:33) *
Коллеги, объясните что это за опрерация и применима ли она в WinAVR?
TWCR=((1<<TWEN)+(1<<TWINT)+(1<<TWSTO))

Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.
Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.
Go to the top of the page
 
+Quote Post
Smoky
сообщение May 31 2012, 17:03
Сообщение #63


Местный
***

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



Цитата(_Артём_ @ May 31 2012, 22:45) *
Запись в TWCR байта с установленными (равными 1) битами TWEN, TWINT и TWSTO.
Чаще пишут TWCR=((1<<TWEN)|(1<<TWINT)|(1<<TWSTO)) . Но результат тот же.


Спасибо. Меня смущает только то что в одной функции одновременно одна и таже операция записана по разному: так как привёл я и так как привели вы. Весьма странно.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 31 2012, 17:57
Сообщение #64


Гуру
******

Группа: Свой
Сообщений: 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

Может почему-то автору так было удобней в тот момент.
Go to the top of the page
 
+Quote Post
alexeyv
сообщение Jun 1 2012, 03:59
Сообщение #65


Местный
***

Группа: Участник
Сообщений: 298
Регистрация: 26-01-09
Из: Пермь
Пользователь №: 43 940



Цитата
Может почему-то автору так было удобней в тот момент.

Ага,клавиша "+" располагается удобнее на клавиатуре, или клавишу "|" заело.
Go to the top of the page
 
+Quote Post
Smoky
сообщение Jun 6 2012, 17:15
Сообщение #66


Местный
***

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



Помогите, не могу понять:
#define CH 0x07
temp=I2C_Rx(NOT_ACK);
if(temp&(1<<CH)) - что за операция здесь происходит?


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post
Marto
сообщение Jun 6 2012, 17:36
Сообщение #67


Частый гость
**

Группа: Свой
Сообщений: 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


--------------------
Шизоидный холерик
Go to the top of the page
 
+Quote Post
Smoky
сообщение Jun 7 2012, 16:39
Сообщение #68


Местный
***

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



Цитата(Marto @ Jun 6 2012, 23:36) *
единичка сдвигается на семь битов (0x07) и поразрядно складывается с переменной temp.


Большое спасибо, теперь всё ясно. Я то думал что 0х07 сдвигается на один бит, получался полный ступор.


--------------------
Лень, оттвори дверь, сгоришь - а хоть и сгорю, но не оттворю.
Go to the top of the page
 
+Quote Post

5 страниц V  « < 3 4 5
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 22:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01424 секунд с 7
ELECTRONIX ©2004-2016