(8515) Probleme mit Interrupt - wird von selbst ausgelöst

Gast #268811
Lesenswert?

Hallo,

ich bin ein Anfänger und experementiere gerade mit einem AT90S8515 und
versuche einen Interrupt-Handler zu starten, sobald eine der beiden
Tasten, die an INT0 und INT1 angeschlossen sind, gedrückt wird.

Die Tasten sind so anschlossen, wie in "AVR-Tutorial - 2.
I/O-Grundlagen" gezeigt.

Auch die Interrupt-Behandlung erfolgt analog zum Quellcode, der in
"AVR-Tutorial - 5. Interrupts" vorgestellt ist.

Die Steuer-Register sind folgendermaßen belegt:

MCUCR <- 0b00001010
GIMSK <- 0b11000000

Dann wird mit SEI das Interrupt aktiviert.


Interrupt0-Handler inkrementiert den Wert eines Registers und gibt ihn
auf die LED-Leiste am Port A aus und kehrt mit RETI zurück.

Interrupt1-Handler tut nichts und kehrt mit RETI zurück.

Ansonsten befindet sich das Programm in einer Endlossschleife:

loop:
RJMP loop

Folgendes passiert aber: ohne, dass ich die Tasten berühre, wird der
LED-Register hochfrequent inkrementiert, sodass die LED des
niederwertigsten Bits mit vermutlich 20 Hz flimmert.

Drücke ich nun auf eine der BEIDEN Tasten, hält der Zähler an! Wie
gesagt: es ist egal, ob ich auf Int0- oder Int1-Taste drücke; beide
bewirken das Gleiche!

Wo liegt das Problem?! Warum löst der Interrupt von alleine aus?

Mux
Gast #268812
Lesenswert?

is der interrupt low oder high aktiv? hast du eventuell pull ups
vergessen?? So wie es aussieht hast du den Taster falsch belegt! Also
beim Drücken auf GND statt VCC oder auf VCC statt GND ziehen!

Mfg, Mathias
Gast #268813
Lesenswert?

Hallo Mathias,

Unter
http://www.avr-asm-tutorial.net/avr_de/beginner/portdetail.html#MCUCR
ist dokumentiert, welche Bits für Interrupt verantwortlich sind.

Zitat: "10: Fallende Flanke löst Interrupt aus", d.h. MCUCR <-
0b00001010 sorgt dafür, dass Interrupt auf der fallenden Flanke
ausgelöst wird. Im Zweifel habe ich aber alle Kombinationen
ausprobiert, ohne dass es was gebracht hat.

Über ein Widerstand wird der Pegel an INT-Eingängen stabil gehalten
(Widerstand ist an Vcc angeschlossen).

Die Tasten verbinden die INT-Eingänge dann direkt mit GND.

Mux
Gast #268816
Lesenswert?

@OTTOM
Hallo, mit den internen Pull-up Widerständen hatte ich auch keinen
Erfolg; ich mußte extern 10 Kiloohm vorsehen, dann war es i.O.
Komischerweise aber nur bei diesen Eingängen.

MfG Paul

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