Hallo zusammen,
habe eine kleine Schaltung zusammengebaut und wollte im ersten Schritt
einfach mal eine Diode durch einen Interrupt leuchten lassen. Schalter
gedrückt - Diode für 20ms an. In MAINLOOP klappt es auch, als externer
Interrupt nicht - was mache ich falsch?
1 | ;Reset and Interrupt vector
|
2 | rjmp main ;1 SB POWER ON RESET
|
3 | rjmp isr_int_0 ;2 SB Int0-Interrupt (EXT INT 0)
|
4 | ...
|
...
1 | sbi DDRD,DDD3 ;Port D (INT0) auf IN
|
2 | sbi DDRB,0x0 ;Port B (Pin0) auf OUT
|
...
1 | ldi r16,MCUCR
|
2 | ldi r17,0b11111100
|
3 | and r16,r17
|
4 | ldi r17,0b00000000
|
5 | or r16,r17
|
6 | out MCUCR,r16 ;00 LOW löst INT aus - müßte ständig ausgelöst werden; andere Kombis auch schon probiert
|
...
1 | ;GIMSK bzw. GICR [0..7] Bit 6 auf 1 (Ext.INT0 on)
|
2 | ldi r16,GICR
|
3 | ldi r17,0b00111111
|
4 | and r16,r17
|
5 | ldi r17,0b11000000
|
6 | or r16,r17
|
7 | ;out GIMSK, r16
|
8 | out GICR, r16
|
...
...
1 | isr_int_0:
|
2 |
|
3 | push r16
|
4 | ;funktioniert in MAINLOP
|
5 | pop r16
|
6 | reti
|
Pin4 hat gemessene 4,8V bei Schalter gedrückt.
Die Diode flackert ab und an mal - ohne erkenntlichen Grund. Schalter
gedrückt ohne Reaktion der Diode.
Was mach ich hier falsch?
Danke für den ein oder anderen Tipp!
Gruß
Pizza