Forum: Mikrocontroller und Digitale Elektronik ATMEGA644P Interrupt in ISR


von Stef (Gast)


Lesenswert?

Guten Abend zusammen,

mein Problem wäre folgendes: In meinem Programm wird per Pin Change 
Interrupt eine ISR aufgerufen. In dieser ISR muß ich warten, bis der 
entsprechende Pin, welcher -auch- die ISR steuert, wieder die Flanke 
ändert. Nun nimmt dies der AVR -laut AvrStudio4- natürlich zum Anlaß, 
nach verlassen der ISR sofort diese wieder aufzurufen. Gibt es 
irgendeine Möglichkeit, das zu unterbinden? Das löschen des 
dazugehörigen Interruptflags in PCIFR nach Auftreten des Interrupts bzw 
entsprechendem Bit im PCMSK-Register innerhalb der ISR bringt nichts. 
Außerhalb kein Problem. Auf Int0...2 kann der Pin aufgrund der gegebenen 
Hardware nicht gelegt werden. Es bleibt augrund der relativ hohen 
Frequenz des Taktes am Interrupt-Pin (20 MHz AVR:1 MHz Takt am PCINT) 
kaum Zeit für die Ausführung von Kommandos.

Vielen Dank & Viele Grüsse

von Der Nachbauer (Gast)


Lesenswert?

Wenn ich Dich richtig verstanden habe, willst Du also per Interrupt auf 
die Änderung an einem Pin reagieren - und zwar derart, dass Du auf eine 
erneute Änderung des entsprechenden Pins wartest. Diese löst den 
Interrupt jedoch erneut auf, was Dein Problwm ist.

Warum verwendest Du nicht einfach ein Bit, welches djen aktuellen Status 
speichert ?

von Stef (Gast)


Lesenswert?

Weil der Rücksprung aus der ISR so viele Zyklen verbraucht, das der 
Status wieder hinfällig ist. Alles schon probiert.

von Stef (Gast)


Lesenswert?

Will sagen, das ich -sehr zeitnah- auf diesen Pin Change Interrupt mit 
einer Aktion reagieren muß. Bit setzen, aus der ISR rauspringen, bit 
prüfen, Aktion ausführen etcpp dauert zu lange.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.