Hvordan virker Interrupt egentlig? Hvordan ved Processoren hvilken adresse i programmet den skal hoppe til når der kommer et interrupt fra en given instans? Hvordan er koblingen fra et fysisk ben der bliver trukket lav til at "Program Counteren" (er det ikke det den hedder?) sættes til en helt anden adresse?
"Terry Andersen" skrev i en meddelelse news:br72d2$lej$ snipped-for-privacy@news.net.uni-c.dk...
i
Det afhænger hva for en MPU du snakker om...
Tror du må formulere dette på en anden måde, men jeg gætter på du hendtyder til at du bruger et eksternt Hardware interupt ben, som trigges når det går lavt ??? igen så afhænger det af hva MPU vi snakker om.
"Terry Andersen" skrev i en meddelelse news:br72d2$lej$ snipped-for-privacy@news.net.uni-c.dk...
i
Som tidligere nævnt afhænger det af hvilken MPU vi taler om.
En oplagt implementering er dog, at indgangssignalet til programtælleren (PC), styres af en multiplexer, som afhængigt af et kontrolsignal, hvor bl.a. "det fysiske ben" indgår, sender en af følgende værdier ind i PC'en:
1) Efterfølgende adresse - dvs. PC+1 (eller 4 afhængig af MPU)
2) branchadresse - dvs. en beregnet værdi af PC'en
3) interruptadresse - ofte en prædefineret værdi
Det er vist en brugbar kort oversigt, der skal nok lidt flere detaljer på
3'eren:
3a) Først fuldføres den instruktion der er igang
3b) Efterfølgende adresse - dvs. PC+1 gemmes
3c) Der springes til interrupt adressen
3d) Når interrupten er udført springes tilbage til adressen fra 3b
Og så er der en masse omkring f.eks. hvordan adresser gemmes, hvordan registre gemmes før/under interrupt rutinen og prioritering af interrupt.
--
Med venlig hilsen, Ove Kjeldgaard, nospam AT privat DOT dk
Natur og Friluftsliv:
Mange tak for jeres svar. Det var selve hardware-opbygningen med en multiplexer for PC jeg var ude efter. Mange tak, det forstår jeg godt. På hver MPU må der jo så sidde en Interrupt Controller der føder multiplexeren med den korrekte adresse i forhold til hvilket interrupt der er opstået (externt interrupt ben, intern overløb af timer, m.m.). Så skal compiler blot vide på hvilke adresser de forskellige interrupt rutienr skal ligges. Korrekt ikke?
Jo, PC bliver typisk gemt på stacken og hentet efter interruptet vha push/pop.
--
mvh/rg. Christian
Påkører du klovbærende vildt, afmærk stedet
og ring til en fra Schweisshunderegistret:
http://www.schweiss.dk/ eller Falck: 70 10 20 30
ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here.
All logos and trade names are the property of their respective owners.