volatile C AVR Atmega8

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Adekamer
Родился
Сообщения: 19
Зарегистрирован: Ср июн 14, 2006 06:41:06

volatile C AVR Atmega8

Сообщение Adekamer »

в общем хочу поделиться некоторым вопросом - мыслей:
на некотором ресурсе по AVR есть такая фраза:
volatile - если нужно предотвратить повреждение содержимого переменной в прерывании, компилятор просто не будет размещать эту переменную ни в одном из 32-х регистров общего назначения и не будет пытаться выкинуть её при оптимизации кода.
у меня же на практике - наоборот - переменная обьявленная как volatile - нормально модифицируется (меняется) в подпрограмме обработки прерывания
компилил в WinAVR камушек ATmega8
Реклама
Аватара пользователя
xelos
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн мар 20, 2006 13:05:08
Контактная информация:

Сообщение xelos »

не так интерпретируешь
переменная, не объявленная как volatile может быть размещена как в регистре, так и в памяти.
если она размещена в регистре, то этот регистр может быть изменен в ходе выполнения какого-то прерывания без твоего ведома, т.е. значение может быть изменено самим контроллером.
а volatile указывает что переменная должна быть обязательно размещена в памяти, т.е. по служебным надобнастям мк она изменена не будет.
Я просто верю в то, что рушить догмы - лучший способ не стареть.
Реклама
Gena

Volative

Сообщение Gena »

А шоб программа обработки прерывания не гавнякала регистры-пишем при входе:
push r16
in r16,SREG
push r16
push r17
push r18
.............тута сама подпрограмма
..............
pop r18 ;востанавливаем регистры при выходе
pop r17
pop r16
out SREG,r16
pop r16
rety

или другие регистры, которые использует подпрограмма обработки. прерывания.
Аватара пользователя
xelos
Потрогал лапой паяльник
Сообщения: 336
Зарегистрирован: Пн мар 20, 2006 13:05:08
Контактная информация:

Сообщение xelos »

если пишешь на С, то эту вставку можно заменить средствами самого С.

к асму рекомендую прибегать тока в самом, самом крайнем случае. иначе весь смысл программирования на С теряется.
Я просто верю в то, что рушить догмы - лучший способ не стареть.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Abakt
Вечно гонимый
Сообщения: 568
Зарегистрирован: Ср янв 10, 2007 19:15:51

Сообщение Abakt »

volatile - советую использовать всегда новичкам если вы не знаете точно механизм компиляции компилятора и не можете отключить оптимизацию полностью.
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»