[an error occurred while processing this directive]
Ещё один вопрос по написанию программ....
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Валера 09 марта 2005 г. 17:43

Недавно я открывал уже подобную тему, в которой выяснилось, что на всякий случай переменные нужно делать volatile. Но в данном случае и
этот совет не помог :( Проблема в том, что в этой програмке переменная не всегда досчитывает до 280, как должна. Это я выяснил в
эмуляторе. Иногда счёт идёт до 256 и начинается выполнение условия, хотя посмотрев в опциях эмулятора в этот момент было видно, что под
неё отведена та же самая память в размере 2-ух байт. Почему она не досчитывает до конца???? И как-то это не постоянно: может досчитать до 280, а может и до 256. Чё я не так сделал или может инклуда какого-нибудь не хватает?

#include //описание железа ATMega8
#include //библиотека прерываний

volatile unsigned short a;

SIGNAL(SIG_OVERFLOW2) { //опрос 13,983 кГц
a++;
}

int main (void){
init();
while(1){
if (a>279) { //прерывание 20 мс
........
a=0;
}}}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru