ATmega8-16PU - Standard INT0 - Alles Mist

Gast #1138967
Lesenswert?

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
sei
...
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
#1138978
Lesenswert?

Tiefkuehlpizza wrote:
> Pin4 hat gemessene 4,8V bei Schalter gedrückt.

Merkwürdig, was ist denn Deine VCC?

Taster sollten niederohmig sein, also VCC = 5,0V meßbar.

Aber die Preisfrage ist, welchen Pulldown verwendest Du?

Hint:
Man schaltet Taster üblicher Weise gegen GND, damit man den internen 
Pullup verwenden kann (spart 3 Eurocent).


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren