Hallo, Ich versuche mich gerade mit Interrupt Service Routine auseinander zu setzen und habe leider keine für mich verständliche Erklärung gefunden, was sie bewirken soll. Dennoch habe ich mir Mühe gemacht und mit verschiedenen logischen Ansätzen eine für mich verständliche Definition herauskristallisiert. ISR läuft parallel zu Hauptprogramm (main) und unterbricht sie und andere ISRs, falls die Überwachte Bedingung eintritt. würde diese Definition so stimmen? Danke für Ihre Hilfe
Alex S. schrieb: > würde diese Definition so stimmen? Eher nicht! Entweder unterbricht etwas, oder es läuft parallel. Beides geht irgendwie nicht. (bei unseren µC) Alex S. schrieb: > und unterbricht ... ISRs, So allgemein, ist das falsch.
Hi, ich bin auch gerade dabei, sie zu verstehen(oder es zu versuchen). Meine Erkenntnisse sind: - Sie werden unabhängig von deinem Programm (quasi hardwareseitig) ausgelöst (wenn du es zulässt) und Unterbrechen dessen Ausführung dann um ihren Code auszuführen, danach läuft dein Programm (mit eventuell veränderten Registerzuständen)weiter. - ISR's unterbrechen sich nicht gegenseitig, wenn während der Ausführung von ISR1 eine ISR2 ausgelöst wird, wird diese nach Beendigung von ISR1 ausgeführt. Ich hoffe das stimmt so, wenn nicht, bitte korrigieren. Gruß Matthias
https://www.mikrocontroller.net/articles/Interrupt https://www.mikrocontroller.net/articles/AVR-Tutorial:_Interrupts https://homepages.thm.de/~hg6458/semsts/Interrupt-Techniken_Schoendube.pdf etc. Ich frage mal nicht, ob dir google bekannt ist ...
Hallo Alex, diese Definition stimmt so nicht. Gem. Wikepdia - https://de.wikipedia.org/wiki/Unterbrechungsroutine: > Eine Unterbrechungsroutine (auch Unterbrechungsbehandlung genannt, engl. > interrupt handler, interrupt service routine oder kurz ISR) ist ein > Programmstück, das von einem Hauptprozessor (CPU) ausgeführt wird, wenn er > durch einen Softwareinterrupt oder Unterbrechungsanforderung (engl. Interrupt > Request) gezwungen wird, den gegenwärtigen Programmablauf zu unterbrechen und > einen Interrupt auszuführen. Das bedeutet, tritt ein IRQ ein - SW oder HW - wird das notmal ablaufende Programm unterbrochen, der Stack gesichert, die ISR abgearbeitet, Stack wieder hergestellt, das unterbrochene Programm an der Stelle weiter abgearbeitet, an der es durch den IRQ unterbrochen wurde. IRQs & IRS können auch verschachtelt - nested - sein. mfg Olaf
Wie wäre es einmal damit ein gutes Buch zu kaufen und es dann zu lesen?
Thomas H. schrieb: > Wie wäre es einmal damit ein gutes Buch zu kaufen und es dann zu lesen? Ja, genau. Platos "Staat" oder Christian Morgensterns "Galgenlieder". @ Alex S. (sirius7) Also das ist alles so ein bisschen richtig und ein bisschen falsch. Ist aber auch OK. Dauert ne halbe Stunde ehe man das kapiert hat. 1. Ein Prozessor führt, sobald er mit Strom und Takt versorgt wird immer ständig ein Programm aus. 2. Es kann immer nur ein Befehl gleichzeitig ausgeführt werden. Der gegenwärtig ausgeführte Befehl wird durch den Befehlszähler (auch Programmzähler oder ähnlich genannt) bestimmt. 3. Der nächste Befehl ist 3.a. der dem gegenwärtigen Befehl unmittelbar im Speicher nachfolgende Befehl 3.b. der durch einen Befehl, der den Programmzähler verändert, bestimmte Befehl 3.c. der durch einen Interrupt, der den Programmzähler verändert, bestimmte Befehl. Damit die unterbrochene Befehlssequenz später fortgesetzt werden kann, wird der Programmzähler auf einem Stack abgelegt und bei der Beendigung der ISR wieder von dort geladen. 4. Interrupts können sich oder können sich nicht gegenseitig unterbrechen. Das hängt von der Prozessorarchitektur ab. Dazu werden Begriffe wie "Priorität" und "Interrupt-Flag" definiert und verwendet. 5. Es gibt je nach Architektur gewisse quantitative und qualitative Variationen dieser Schemata. Abstrakt aber sind diese 4 Punkte immer gleich.
Hallo, vielen Dank für eure Mühe! Ihr habt hat mir sehr weitergeholfen!
Hallo Klaus, ganz besonderen Dank an Sie, habe nicht nur ISR verstanden, sondern darüber hinaus auch Stack und andere wichtige Sachen! Diese Erklärung könnte man glatt für Wikipedia und andere Medien übernehmen. Noch mal vielen Dank!
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.