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

 
 
> Циклы по условию WinAVR
RAmsi
сообщение Apr 24 2009, 11:30
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-04-09
Пользователь №: 47 200



Eсть два вложенных цикла while. Конструкция следующая

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

В прерываниях переменная по таймеру увеличивается на 1. Программа в это время крутится на строчке while (peremennaja<8).
Как только переменная становится равной 8 - программа идет дальше выполнять код.
Раньше такая конструкция работала без проблем в CVAVR и VMLAB.
Теперь пытаюсь повторить в WinAVR и AVRStudio - программа навсегда зацикливается на строчке while (peremennaja<8), код дальше не выполняется, а сама peremennaja в ноль не сбрасывается и после каждого прерывания продолжает распухать на единицу.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Палыч
сообщение Apr 24 2009, 11:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Спецификатор volatile нужен, что бы оптимизатор всё правильно понял.

Например, как-то так
volatile int peremennaja;
Go to the top of the page
 
+Quote Post
aesok
сообщение Apr 24 2009, 11:44
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



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


avr-libc-user-manual FAQ #1

Анатолий
Go to the top of the page
 
+Quote Post
RAmsi
сообщение Apr 24 2009, 12:04
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 5-04-09
Пользователь №: 47 200



Спасибо!
Все работает smile.gif
Go to the top of the page
 
+Quote Post

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

 


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


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