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

 
 
 
Reply to this topicStart new topic
> код
forastr
сообщение Jun 23 2011, 09:14
Сообщение #1


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

Группа: Участник
Сообщений: 99
Регистрация: 28-03-11
Из: Минск
Пользователь №: 63 930



Помогите,пожалуйста, разобрать строчку кода:
#define HW_XMEM_Enable() MCUCR = _BV(SRE)|_BV(SRW10)|MCUCR_SLEEP_MODE
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 23 2011, 10:13
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Это было обязательно писать в разделе НЕ для самых начинающих? И даже самым начинающим ну надо ОБЯЗАТЕЛЬНО хоть что-то для начала почитать, ну букварь какой....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Jun 23 2011, 10:14
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(forastr @ Jun 23 2011, 13:14) *
Помогите,пожалуйста, разобрать строчку кода:
#define HW_XMEM_Enable() MCUCR = _BV(SRE)|_BV(SRW10)|MCUCR_SLEEP_MODE

Это макро: #define
имя макро: HW_XMEM_Enable()
тело макро, то есть то, что будет вставляться вместо имени: MCUCR = _BV(SRE)|_BV(SRW10)|MCUCR_SLEEP_MODE
Что делает, не точно, на вскидку:
регистру MCUCR присваивается значение состоящее из побитового ИЛИ последующих значений.
_BV(somebit) - это макро установки в 1 бита номер somebit.
Получаем, что установлены в единицу биты SRE и SRW10.
В итоге в регистре установлены в 1 биты SRE и SRW10 и сделано ещё побитовое ИЛИ с MCUCR_SLEEP_MODE.
MCUCR_SLEEP_MODE это некоторое число, определяющее что-то для режима молого потребления. Это надо смотреть документацию на контроллер.

Как-то так. laughing.gif


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
forastr
сообщение Jun 23 2011, 11:27
Сообщение #4


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

Группа: Участник
Сообщений: 99
Регистрация: 28-03-11
Из: Минск
Пользователь №: 63 930



Цитата(mdmitry @ Jun 23 2011, 09:14) *
Это макро: #define
имя макро: HW_XMEM_Enable()
тело макро, то есть то, что будет вставляться вместо имени: MCUCR = _BV(SRE)|_BV(SRW10)|MCUCR_SLEEP_MODE
Что делает, не точно, на вскидку:
регистру MCUCR присваивается значение состоящее из побитового ИЛИ последующих значений.
_BV(somebit) - это макро установки в 1 бита номер somebit.
Получаем, что установлены в единицу биты SRE и SRW10.
В итоге в регистре установлены в 1 биты SRE и SRW10 и сделано ещё побитовое ИЛИ с MCUCR_SLEEP_MODE.
MCUCR_SLEEP_MODE это некоторое число, определяющее что-то для режима молого потребления. Это надо смотреть документацию на контроллер.

Как-то так. laughing.gif

спасибо большое!я нигде не мог найти что значит _BV(x).
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Jun 23 2011, 14:57
Сообщение #5


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

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



Цитата(forastr @ Jun 23 2011, 07:27) *
спасибо большое!я нигде не мог найти что значит _BV(x).

http://www.nongnu.org/avr-libc/user-manual...95a93800b3d9546


--------------------
ASB
Go to the top of the page
 
+Quote Post

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

 


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


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