PIC Interrupt priorität

Gast #321673
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
Gast #321674
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
Gast #321675
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
Gast #321677
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.