Programmable Interrupt Controller
Een Programmable Interrupt Controller (afgekort PIC) werkt als een soort manager voor een op interrupts gebaseerd computersysteem. Het ontvangt vragen van I/O-apparaten, in de vorm van interrupts en beslist aan de hand van prioriteiten welke aanvraag eerst wordt behandeld. PIC levert dan een interrupt aan de processor. Nu moet PIC informatie aan de CPU leveren. Die informatie zal naar de juiste service wijzen. Deze verwijzing (pointer) wordt bijgehouden in een vectortabel. Om software en real time overhead te minimaliseren, worden interrupts hardwarematig afgehandeld.
Advanced PIC is de nieuwe opvolger van PIC. Deze kan meer interrupts behandelen, en kan werken met flexibele prioriteiten.
Werking
[bewerken | brontekst bewerken]PIC bestaat uit 3 registers: Interrupt Mask Register (IMR), Interrupt Request Register (IRR) en In Service Register (ISR). De meeste PIC’s kunnen tot 8 interruptlijnen ontvangen. IMR controleert of de binnengekomen interrupts gemaskeerd zijn of niet. De niet gemaskeerde interrupts worden door gestuurd. De gemaskeerde interrupts worden genegeerd.
Het volgende register, IRR, houdt alle interrupts bij die het van IMR ontvangen heeft tot ze behandeld worden. De prioriteiten van de interrupts worden allemaal bijgehouden door de ISR. Deze worden bijgewerkt bij het ontvangen van een ‘einde van interrupt’ commando. Nu dat PIC weet welke interrupts als eerste moet behandelen worden berichten gestuurd naar de processor. Er wordt een interrupt naar de processor gestuurd. Nadat deze klaar is met zijn huidige bewerking, stuurt het een bevestiging terug naar PIC. Bij het ontvangen van de bevestiging toont de IRR welk service eerst behandeld moet worden. Deze wordt dan uitgevoerd door de processor.