Здравствуйте,
К пинам PORTB5, PORTB6, PORTB7 подключены кнопки. При нажатии на кнопку, на соответствующий пин подается логическая 1. Необходимо при нажатии любой из них вызывать прерывание. Симулирую в протеус. Дело в том что при первом нажатии любой из кнопок - прерывание отрабатывает. Когда же пытаешься нажать на эту кнопку второй, третий.. раз, то прерывание не вызывается и регистр InterrCount не инкрементируется.
Подскажите что не так, или может это очередной глюк протеуса. Контроллер attiny2313
Инициализирую прерывание таким вот образом (это в RESET):
Код:
outi PCMSK, (1<<PCINT5)|(1<<PCINT6)|(1<<PCINT7) ; vkliuciaem prerivanie na opredelennih pinah
outi GIMSK, (1<<PCIE) ;vkliuciaem prerivanie
Обработчик прерываний:
Код:
EXTERN_OVF:
cli
inc InterrCount ; incrementiruem registr pri kajdom vizove prerivaniya
out PORTD, InterrCount
outi PCMSK, (0<<PCINT5)|(0<<PCINT6)|(0<<PCINT7) ; otkliuciaem prerivanie na pinah, cito bi vernuti pin v pred. sostoianie
outi PINB, (0<<PINB5)|(0<<PINB6)|(0<<PINB7) ; menyaem sostoianie PIN
outi PCMSK, (1<<PCINT5)|(1<<PCINT6)|(1<<PCINT7) ; vkliuciaem prerivanie obratno
sei
reti