Björn
15.11.2008, 10: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
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