Liste der Anhänge anzeigen (Anzahl: 1)
ISR wird nach enable INT2 ausgeführt, obwohl Pin auf high
Hallo Leute,
ich hock hier seit inigen Stunden an einem Problem und komm nicht mehr weiter.
Leider ist mein Programm schon äußerst umfangreich (Über 1000 Zeilen in Bascom). Desshalb hänge ich das Programm als anhang mal mit dran, falls sich jemand die Mühe machen möchte da mal drüber zu schaun.
Mein Problem ist recht schnell beschrieben: Immer wenn ich in meinem Code den Befehl "Enable INT2" verwende, springt mein Programm in die ISR Routine.
In der ISR wird der INT2 disabled. Dann werden Daten verarbeitet und der INT2 wieder Enabled und mit diesem Enable springt er wieder direkt in die ISR und so weiter....
Problem ist: Der INT2 Pin ist die ganze Zeit auf glatten 5V
Habe den INT2 als Falling configuriert.
Aber dennoch: Die ISR wird beim enablen aufgerufen, trotz das der Pin auf High ist.
Ich nutze einen Mega32. Die Frames sind wie folgt eingestellt:
$hwstack = 128
$swstack = 64
$framesize = 80
Hat irgendjemand vielleicht eine Idee was zu diesem, mir unerklärlichen, Verhalten führen kann?
Re: ISR wird nach enable INT2 ausgeführt, obwohl Pin auf hig
Zitat:
Zitat von robodriver
Problem ist: Der INT2 Pin ist die ganze Zeit auf glatten 5V
Habe den INT2 als Falling configuriert.
Aber dennoch: Die ISR wird beim enablen aufgerufen, trotz das der Pin auf High ist.
Zitat:
Zitat von robodriver
Weil bei mir ist es so, das der Interrupt unzählig oft kommt. Aber halt während er disabeld ist (desshalb disable ich ihn ja).
Was stimmt denn nun?
Bleibst du so lange in der INT2 ISR, bis keine impulse mehr kommen? Woher weißt du das?
Die aufgelaufenen Interrupts kannst du über EIFR Register (zumindestens bei meinem Mega128) löschen. Unmittelbar vor dem Enable musst du das entsprechende Bit auf 1 setzen, dann sind die mittlerweile aufgelaufenen Interrupts für diesen Typ gelöscht. Schau mal unter INTF2 in deinem Manual.
Gruß
Rolf