PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programm verlässt Interrupt-Routine nicht



Björn
15.11.2008, 09:42
Hallo!

Ich verwende einen ATmega8. Dort habe ich eine Photodiode (gehört zu einer Lichtschranke) am INT0 - Eingang angeschlossen.
Das Programm soll nun bei steigender Flanke in die Interrupt-Routine springen und nach einmaligem Durchlauf wieder zurück ins Hauptprogramm.
Leider bleibt es jedoch in der Routine (oder ruft sie immer wieder auf), was ich daran sehen konnte, dass ich zum Test eine Variable auf dem LCD anzeigen lassen habe, welche sich bei jedem Routinendurchlauf erhöht.

Die relevanten Code-Passagen:


Config Int0 = Rising 'Beide Male bei steigender Flanke reagieren
On Int0 Isr_schranke
Enable Int0

Enable Interrupts

Portd.2 = 1 'PullUp-Widerstand aktivieren



Isr_schranke:
Disable Int0
Waitms 2000
Koppler = 1 'Koppler steht für PortB.2
Waitms 1500
Koppler = 0
Enable Int0
Return

Wüsstet ihr woran es liegen kann?

Grüße, Björn

Michael
15.11.2008, 11:06
Hallo Björn,


Wüsstet ihr woran es liegen kann?
es wäre besser, du würdest den ganzen Code posten. Der Fehler kann auch im für dich als nicht relevant betrtachtetem Teil liegen.

Warum disablest du den Int0 in der Routine?
Deine Routine ist durch die Wartezeit sehr lang, dadurch kannst du Ereignisse verpassen.

Gruß, Michael