www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC Interrupt priorität


Autor: Eddy Ilg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rainer Spitzhirn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Eddy Ilg (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Rainer Spitzhirn (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.