Nabend Die Frage wurde zwar sicherlich schon gestellt, aber über die Suche fand ich jetzt nichts was mein Problem anspricht. Ich habe da folgende Frage: Angenommen ich habe ein Interruptsignal an einem µC angeschlossen. Sobald das Interruptsignal also auf High is geht der µC in die ISR. Was geschieht aber, wenn der Interrupt kommt, der µC die kurze ISR ausführt und das Interruptsignal immer noch auf High ist? Geht er dann sofort wieder in die ISR oder wartet er bis das Signal mindestens einmal wieder auf Low war? Meine Fage richtet sich besonders an AVRs. mfg Florian
Florian wrote: > Sobald das Interruptsignal also auf High is geht der µC in die ISR. Kommt drauf an, ob der Interrupt high oder low aktiv ist. > Was > geschieht aber, wenn der Interrupt kommt, der µC die kurze ISR ausführt > und das Interruptsignal immer noch auf High ist? Geht er dann sofort > wieder in die ISR oder wartet er bis das Signal mindestens einmal wieder > auf Low war? Kommt drauf an, ob der Interrupt Pegel oder Flankengesteuert ist.
Floria, Wenn der INT pegelgestriggert ist, dann erfolgt sofort wieder ein neuer Interupt wie Benedikt schon schrieb, allerdings nicht wörtlich "sofort". Es wird zuvor ein ASM-Befehl der Hauptroutine ausgeführt bevor der neue Int wieder feuert. Bei flankengetriggertem INT ist das natürlich anders, denn die Flanke ist ja schon vorbei wenn die ISR einmal gezündet hatte. Jochen Müller
Ich kenne das jetzt nur von PICs, aber müsste der AVR nicht auch erst seine momentane ISR abarbeiten bis er aus der ISR mit einem Returnbefehl zurück in die Hauptroutine springt um dann gleich wieder in die ISR zu springen? Ich habe die Frage jetzt zumindest so verstanden, das der Poster wissen will, ob die gerade laufende ISR abgebrochen wird, wenn ein neuer Interrupt rein kommt oder ob der µC erst die laufende ISR abarbeitet. Sven
Sven, Ich denke zwar nicht, dass der OP das so gemeint hatte, dessen Frage war eigentlich offensichtlich. Aber trotzdem würde das, was Du angesprochen hast auch gehen, Stichwort verschachtelte Interrupts. Ganz vereinfacht müsstest Du dann bereits am Beginn der ISR die INTS wieder enablen und nicht erst mit dem abschliessenden RETI wie üblich. Klingt erstmal simpel, kann aber einen ganzen Haufen Zusatzarbeit hinsichtlich Sicherheit und Variablenverwaltung bringen. Aber gehen tut es. Jochen Müller
Hallo Nein, ich habe gemeint ob der µC wieder in eine ISR springt nachdem er die vorherige verlassen hat. Aber nun habe ich es verstanden, ich wusste nicht, dass man den Interrupt konfigurieren kann auf welches Ereignis er anspringen soll. Ich laß bisher immer nur anwendungen bei denen er auf einen High-Level reagiert. Danke!
Florian wrote: > Hallo > > Nein, ich habe gemeint ob der µC wieder in eine ISR springt nachdem er > die vorherige verlassen hat. Ich fand die Frage auch eigentlich recht eindeutig gestellt. > Aber nun habe ich es verstanden, ich wusste nicht, dass man den > Interrupt konfigurieren kann auf welches Ereignis er anspringen soll. > Ich laß bisher immer nur anwendungen bei denen er auf einen High-Level > reagiert. Auf einen High-Pegel kann kein einziger AVR reagieren. Wenn überhaupt, dann ein Low-Pegel! Die externen Interrupts können i.A. positive, negative Flanke und Low-Pegel, manche können zusätzlich noch auf beide Flanken getriggert werden. Die Pin-Change-Interrupts reagieren grundsätzlich auf jeden Pegelwechsel (also auf beide Flanken), aber nicht auf die Pegel selbst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.