Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Циклы по условию WinAVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
RAmsi
Eсть два вложенных цикла while. Конструкция следующая

.....
прерывания по таймеру с накруткой переменной peremennaja++
.....
while (1)
{
while (peremennaja<8)
peremennaja = 0;
........
какой-то код
........
}

В прерываниях переменная по таймеру увеличивается на 1. Программа в это время крутится на строчке while (peremennaja<8).
Как только переменная становится равной 8 - программа идет дальше выполнять код.
Раньше такая конструкция работала без проблем в CVAVR и VMLAB.
Теперь пытаюсь повторить в WinAVR и AVRStudio - программа навсегда зацикливается на строчке while (peremennaja<8), код дальше не выполняется, а сама peremennaja в ноль не сбрасывается и после каждого прерывания продолжает распухать на единицу.
Палыч
Спецификатор volatile нужен, что бы оптимизатор всё правильно понял.

Например, как-то так
volatile int peremennaja;
aesok
Цитата(RAmsi @ Apr 24 2009, 15:30) *
В прерываниях переменная по таймеру увеличивается на 1. Программа в это время крутится на строчке while (peremennaja<8).


avr-libc-user-manual FAQ #1

Анатолий
RAmsi
Спасибо!
Все работает smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.