Microcontroller Interrupt

Dec 10, 2003 5 Replies

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?



Mvh. Terry


"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.

VH Lars Molnit

"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

- der er sikkert flere muligheder...

Håber det giver mening!

/Kenneth

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:

PC'en:

registre

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?

Mvh. Terry

programtælleren

multiplexeren

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

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required