Complex IRQ Controller

Funktion


Der Interruptkontroller ermittelt aus allen anliegenden Interruptsignalen das Signal mit der höchsten Priorität und meldet dieses der CPU. In der Behandlung kann über das Register INT_PRI die zur Zeit größte Nummer, und damit auch das Signal mit der höchsten Priorität ermittelt werden. Eine Unterbrechung eines laufenden Interrupts durch einen Interrupt höherer Priorität ist möglich, da das Signal des RFE-Befehls ausgewertet wird. Solange noch nicht die Abarbeitung eines RFE Befehl erkannt wurde, können nur Interrupts mit einer höheren Priorität als der aktuell bearbeitete diesen unterbrechen, wenn in der Interruptbehandlung mit dem Befehl SBITS 2 (in C durch Aufruf der Funktion interrupt_enable();) die CPU wieder zur Annahme von Interrupts freigegeben wird. Es können maximal 8 Interrupts verschachtelt aufgerufen werden. Der 8. wird dabei intern mit der höchstmöglichen Priorität bewertet, so dass er nicht mehr unterbrochen werden kann. Die Funktion des Interruptkontrollers kann mit der TEST3 Konfiguration überprüft werden.

Register

OffsetRegisterFunktionZugriff
0 INT_PRINummer des aktiven Interrupts mit der zur Zeit höchsten Priorität.read
1 INT_BIT0Auflistung des Zustandes der ersten 18 Interruptleitungenread
2 INT_BIT1Auflistung des Zustandes der zweiten 18 Interruptleitungenread
3 INT_BIT2Auflistung des Zustandes der dritten 18 Interruptleitungenread
.........read


Bitbelegung INT_PRI

BitBedeutungReset
7-0Nummer des aktuellen Interrupt mit der höchsten Priorität0
10-8Anzahl der aktuell geschachtelten ISR Aufrufe0
17-11not used0

Protokolle von dreifach geschachtelten ISR-Funktionen im Test 3.

Einstellungen für den Interrupt Controller (jConfig)





SpartanMC