Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Непонятка с компилятором у WinAVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Tcom
Пишу прогу в среде WinAVR использую Notepad.
Всё работало работало, написано уже достадочное количество кода и тут проблема:
Код
int main (void)
{ ....
   ....
     //много чего тут инициализация и тд.
  .....
....

while (1)
{
  SCREEN = 0b101;
}
return(0);
}


Получаю следующий код после компиляции
Код
..................
while(1)
{

SCREEN = 0b101;
    1386:    ff cf           rjmp    .-2      ; 0x1386 <main+0xc0>

почему так ?
Что это глюк?
где присваивание?

У меня настроены прерывания от таймера и там выполняется вся работа,
а в этом цыкле я сделал опрос кнопок.
Странно то что операторы while if компилируются норамально в теле этого бесконечного цыкла.
В других функциях всё нормально.
beer_warrior
Оптимзация. Какой смысл делать присваивание в цикле?
Ищите его где-то рядом.
singlskv
объявите SCREEN как volatile переменную
тогда он ее не соптимизирует
Tcom
Цитата(beer_warrior @ Mar 3 2007, 12:58) *
Оптимзация. Какой смысл делать присваивание в цикле?
Ищите его где-то рядом.

Это пример в реали там обработка событий нажатия кнопок, а реакция на событие это присваивание.
Спасибо singlskv обьявил как volatile и всё заработало.
Тема закрыта.
beer_warrior
Цитата
Это пример в реали там обработка событий нажатия кнопок, а реакция на событие это присваивание.

А где в коде это видно? Присваивается константа, а не значение порта.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.