Forum: Mikrocontroller und Digitale Elektronik PIC Interrupt priorität


von Eddy Ilg (Gast)


Lesenswert?

Kurze Frage:

Ich habe auf einem PIC mehrere Prozesse laufen, die alle über
Interrupts abgearbeitet werden. Einer davon darf aber auf keinen fall
verzögert werden, d.h. muss ohne unterbrechung laufen.

Kann ich ihm die "höchste priorität" geben oder die anderen
Interrupts ausschalten? (Sind andere Interrupts genrerll nicht
zugelassen, wenn man schon in einem Interrupt ist?)

Eddy

von Rainer Spitzhirn (Gast)


Lesenswert?

Hallo,

bei den PIC gibt es meist nur eine Prioritätsstufe. Bei den größeren
PIC18xxx gibt es zwei Stufen. Hier kannst Du dann die Interrupts eine
der beiden Stufen zuweisen.


Fall a: Nur eine Stufe vorhanden.

Wenn die Aufgabe wirklich dringend ist, dann musst Du wohl alle anderen
Aufgaben per Polling im Main abfragen. Die wirklich wichtige Aufgabe
dann per Interrupt. Nur dann hast Du eine garantierte Reaktionszeit.


Fall b: Zwei Stufen vorhanden.

Die unwichtigen Aufgaben auf die niedrige Stufe, die wichtige Aufgabe
auf die höhere Stufe.


Ein Interrupt kann die Abarbeitung einer Interruptbehandlung nicht
unterbrechen. Es sei denn, es liegt eine höhere Priorität vor.

Gruß,
Rainer

von Eddy Ilg (Gast)


Lesenswert?

Hi Rainer,

danke für die Antwort. Noch eine Frage: Benutzt der PIC 2 verschiedene
Interrupt-Vektoren für High- und Low-Priority Interrupts? Scheint mir
irgendwie so.

Ich benutze den PCWH compiler und dort gibt es das keyword FAST für
high priority interrupts. Allerdings muss man dann selber seine
register sichern und wiederherstellen. Hat jemand vielleicht assembler
code, der genau das macht? (alle register sichern und
wiederherstellen)

Danke

Eddy

von Schoaschi (Gast)


Lesenswert?

Ja, der PIC hat 2 Vektoren für die Interrupts. Der High-Vektor ist 0x08
und der Low-Vektor ist 0x18(also bei den PIC18F ist es so).

von Rainer Spitzhirn (Gast)


Lesenswert?

Hallo Eddy,

da gibt es doch was von Ratiopharm ...

Spaß bei Seite, bietet der Compiler keine eigenen Befehle an, mit denen
die Register gesichert werden können? Der cc5x hat so etwas, zum
Beispiel.

Gruß,
Rainer

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.