Wstyd się do tego przyznać, ale nie mogę sobie z tym poradzić. Chcę by przerwanie INT0 było wyzwalane zboczem opadającym. Kod źródłowy programu znajduje się poniżej:
Jednak pojawiające się zbocze nie zgłasza przerwania. Ponadto ręczne ustawienie flagi w trakcie debuggowania powoduje brak reakcji, lub czasem reset mikrokontrolera.
.nolist
.include "m16def.inc" ;dołączenie listy stałych
.list
.cseg
;konfiguracja przerwań zewnętrznych
.EQU ISC0 = 2 ;ISC00 i ISC01 aktywne zbocza opadające dla INT0 i INT1
.EQU ISC1 = 2 ;ISC10 i ISC11
.EQU MCUCR_ = 4*ISC1 + ISC0
.EQU PIN_INT0 = 1 ;zezwolenia na INT0 i INT1
.EQU PIN_INT1 = 0
.EQU GICR_ = 128*PIN_INT1 + 64*PIN_INT0
.EQU LED = 7
.org 0x0000 rjmp RESET
.org 0x0002 rjmp INTERRUPT_INT0
.org 0x0004 rjmp INTERRUPT_INT1
INTERRUPT_INT0:
cbi PORTA,LED
reti
INTERRUPT_INT1:
reti
RESET:
ldi R18,low(RAMEND)
out SPL,R18
ldi R18,high(RAMEND)
out SPH,R18
ldi R18,MCUCR_
out MCUCR,R18
ldi R18,GICR_
out GICR,R18
sbi DDRA,LED
sbi PORTA,LED
sei
stop:
rjmp stop
Jednak pojawiające się zbocze nie zgłasza przerwania. Ponadto ręczne ustawienie flagi w trakcie debuggowania powoduje brak reakcji, lub czasem reset mikrokontrolera.
