Was macht die CPU, bei einem IRQ ?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 23 4 2024  21:10:44      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
Was macht die CPU, bei einem IRQ ?
Suche nach: cpu (1424)

    







BID = 981474

Gamtja

Gelegenheitsposter



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



Beiträge: 2246
Wohnort: Bozen

 

  

Prinzipiell ist das so richtig.

Unterschiede sind dann Prozessorabhängig.

_________________
Simon
IW3BWH

BID = 981503

perl

Ehrenmitglied



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.


Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


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 15 Beiträge verfasst
© x sparkkelsputz        Besucher : 180971231   Heute : 8313    Gestern : 9907    Online : 519        23.4.2024    21:10
8 Besucher in den letzten 60 Sekunden        alle 7.50 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0466890335083