Решил вот на днях сваять хронограф для личных нужд. Написал прошивку, собрал схему в симуляторе - сразу полезли баги. Оно то как раз вполне ожидаемо. Но ТАКИХ я не ожидал! Сразу после запуска симуляции флаги прерываний INT1..2 стоят в 1, пытался сбросить вручную до выставления флага глобального разрешения прерываний - не реагирует. После sei(); уходит в обработчики, второй ра з не взодит в них ни под каким предлогом.
WinAvr gcc;
Симуляция в Proteus
ATmega16;
LCD HD44780;
прошивка и файл симуляции в архиве:
http://fantomasavia.ucoz.ru/tpr/Chrono.tar
Подскажите, в чём грабли?
ЗЫ
За вывод на ЖКИ не пинать, было лень.
Проблемы с прерываниями(AVR)
Re: Проблемы с прерываниями(AVR)
Фантомас писал(а):пытался сбросить вручную
Код: Выделить всё
InitLcd();
GIFR=(1<<INTF1)|(1<<INTF0)|(1<<INTF2); // Сброс флагов прерываний
sei(); //разрешаем все прерывания
Таким образом пытался?
— Не говорите мне что делать и я не скажу куда Вам идти...
- Meteor
- Друг Кота
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
- Контактная информация:
Re: Проблемы с прерываниями(AVR)
Скорее проблема в том что реагируете на уровень (высокий или низкий) при этом получается такая картина.
Заходя в прерывание идет обработка.
Затем выходя из обработки, смотрится на установленный уровень и вновь уходит в обработку.
Настройте на фронты - должно помочь.
Заходя в прерывание идет обработка.
Затем выходя из обработки, смотрится на установленный уровень и вновь уходит в обработку.
Настройте на фронты - должно помочь.
Загружая на вход компьютера "мусор", на выходе получим "мусор^32".
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
PS. Не работаю с: Proteus, Multisim, EWB, Micro-Cap... не спрашивайте даже
Re: Проблемы с прерываниями(AVR)
md5sum писал(а):Фантомас писал(а):пытался сбросить вручнуюКод: Выделить всё
InitLcd();
GIFR=(1<<INTF1)|(1<<INTF0)|(1<<INTF2); // Сброс флагов прерываний
sei(); //разрешаем все прерывания
Таким образом пытался?
И так тоже.
Meteor писал(а):Скорее проблема в том что реагируете на уровень (высокий или низкий) при этом получается такая картина.
Заходя в прерывание идет обработка.
Затем выходя из обработки, смотрится на установленный уровень и вновь уходит в обработку.
Настройте на фронты - должно помочь.
Будем пробовать. Хотя, если я не забыл всё к чертям, реагирую на срез.