Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Atmega 8535 - сорная отработка прерывания


Автор: Serbis 20.6.2011, 17:25
В общем столкнулся со странной проблемой. По входу INT0 и INT1 имеются прерывания по нисходящему фронту. Инициализация как всегда - 
Код

DDRC = 0xFF;                          //Порт C - выход
PORTC = 0xFF;                         //Весь порт C лог. 1
MCUCR = 0b00000000;
GICR = 0b11000000;
sei();                                //Глобальное разрешение прерываний

Обработчики прерываний идут в самом конце программы. Все работает нормально, прерывания срабатывают в нужный момент, если бы не одно но - в самом начале работы программы происходит сампроизвольное срабатывание прерывания. В начале думал что дело в месте инициализации портов, после инициализации прерываний. Переставил, по логике вещей прерывание не может свершиться раньше того пока не будут настроенны порты, а получается совсем наооборот. Мало того, имеется эффект залипания сигнала, при попадение нисходщего фронта на выводы с первого раза прерывание не срабатывает только со второго.

А теперь суть, программа тестируется в ISIS Proteus 7, так как у меня сейчас нет возможности зашить ее в реальный камень. Хотелось бы понять - если это глюк протеуса, то и хрен с ним, больших проблем он мне пока не создает, а если виноват не он, то найти решение проблемы.

Автор: Mazzi 20.6.2011, 19:41
Я всегда после инициализации и перед глобальным разрешением прерываний на всякий случай сбрасываю флажки всех прерываний.
Протеусом не пользуюсь.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)