роботы робототехника микроконтроллеры


 Страниц (1): [1]   

> Без описания
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Не изменяется ГЛОБАЛЬНАЯ ПЕРЕМЕННАЯ в обработчике прерывания!!!!!!



int a=0;
DDRD = 0b00010000; // PD4 - выход (на этом порту светодиод)
PORTD = 0b00000000;// на всякий случай гасим свет


SIGNAL(USART0_RXC){ // прерывание по приёму символа
// ПРЕРЫВАНИЕ СРАБАТЫВАЕТ !!!

PORTD = 0b00010000;// светодиод зажигается и остаётся гореть
a++; // a=a+1 - увеличивает "а" на один

}


int main(void){

while(1){
; //По идее каждый раз при прерывании USART0_RXC "а" должно увеличиваться!?
; // но "а" остаётся = 0
; //цикл продолжается!

}

}
 
 Top
бот_м_16 Супермодератор Post Id



Супермодератор


Сообщений всего: 1033
Дата рег-ции: Окт. 2008  



Замешательство
пользуйся CVAVR
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



redcat
Используется ли переменная a где-либо ещё в программе? Если нет, проверьте степень оптимизации в настройках компилятора - возможно при компиляции обработка неиспользуемой далее переменной опускается.
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Я присваивал переменной разные значения при инициализации. Сейчас попробую в main задать параметр.
 
 Top
Белый Волк Супермодератор Post Id



Супермодератор


Сообщений всего: 648
Дата рег-ции: Февр. 2007  



При прерывании флаг I в регистре SREG очищается. Попробуйте в теле прерывания после всех действий поставить глобальное разрешение прерываний при помощи sei()
 
 Top
redcat Post Id



Главнокомандующий


Сообщений всего: 387
Дата рег-ции: Янв. 2009  



Глобальное разрешение устанавливал, в общем проблема решена. Мотайте все на УС -
перед обьявлением переменной, которая будет менаться в прерывании используйте функцию VOLATILE.
Напр. volatile int peremennaja
 
 Top
Страниц (1): [1]
« Программирование микроконтроллеров »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru