Was macht die CPU, bei einem IRQ ? Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
Was macht die CPU, bei einem IRQ ? Suche nach: cpu (1441) |
|
|
|
|
BID = 981474
Gamtja Gelegenheitsposter
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 67
|
|
IRQ = Interrupt Request.
Angenommen, es kommt ein Interrupt Request, weil der ADC mit seiner Messung fertig ist. Dieser schickt den Interrupt Request.
Wie geht die CPU nun vor ?
Bitte um Korrektur falls das nciht richtig ist.
1. Hauptprogramm wird unterbrochen und zwischengespeichert, indem der Befehlszählerstand, oder das Statusregister am Stack gespeichert wird.
2. Die Adresse der Interrupt Service Routine (ISR) wird aus einer Vector Tabelle eingelesen, zm zu wissen welche ISR für diesen IRQ zuständig ist.
3. ISR wird gestartet
4. ISR beginnt mit der jeweiligen Operation, z.B. einlesen und speichern des ADC Wertes.
5. ISR wird beendet.
6. CPU hohlt sich das Statusregister, oder den Befehlszählerstand vom Stack, und das Hauptprogramm geht weiter, so als wäre nichts geschehen. |
|
BID = 981501
wulf Schreibmaschine
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 2246 Wohnort: Bozen
|
|
Prinzipiell ist das so richtig.
Unterschiede sind dann Prozessorabhängig.
_________________
Simon
IW3BWH |
|
BID = 981503
perl Ehrenmitglied
![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif) ![](/phpBB/images/stars/star.gif)
Beiträge: 11110,1 Wohnort: Rheinbach
|
0. Wenn nicht das entsprechende Interrupt-Enable-Bit UND (falls vorhanden) das Global-Interrupt Enable-Bit gesetzt ist, passiert garnix.
1. Das Interrupt-Enable-Bit oder GIE wird gelöscht, und damit weitere Interrupts verhindert.
Gewöhnlich landet nur der Programmzähler auf dem Stack. Um das Sichern des Statusregisters muss sich die ISR kümmern.
Es gibt auch Prozessoren, die keinen expliziten Stackpointer haben, sondern bei denen Call/Return und auch die Interrupt Behandlung erfolgt, indem der Program Counter einfach mit einem Register vertauscht wird.
Der Einsprung ins Unterprogramm bzw. in die ISR erfolgt dann mit exakt der gleichen Instruktion wie die Rückkehr von dort.
2. Kann so sein, aber es gibt auch andere Konzepte, wie feste Interrupt Adressen, oder dass der Interrupt Vector von der externen Hardware geliefert wird.
5. "ISR wird beendet" ist ein bischen kurz gegriffen.
Sämtliche benutzten Register müssen restauriert werden, auch Status, dann erst kann 6. erfolgen.
6. Da gibt es oft spezielle Instruktionen die das abgeschaltete Interrupt-Enabel wieder setzen.
Ausserdem wird automatisch entweder jetzt, oder bevor die Interrupt Sequenz begonnen wurde der Program Counter erhöht, sonst würde die betreffende Instruktion im Hauptprogramm doppelt ausgeführt.
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 23 Beiträge im Durchschnitt pro Tag heute wurden bisher 10 Beiträge verfasst © x sparkkelsputz Besucher : 183069177 Heute : 4404 Gestern : 18294 Online : 251 17.2.2025 15:30 1 Besucher in den letzten 60 Sekunden alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.0505990982056
|