Interrupt-Koinzidenz PIC18F

OP #3283747
Lesenswert?

Im Datenblatt des PIC18F4525 finde ich die Aussage „Low-priority 
interrupts are not processed while high-priority interrupts are in 
progress.” Streng genommen, sagt der Satz, dass ein Low-Priority 
Interrupt ins Leere geht, wenn gerade ein High-Priority Interrupt 
abgearbeitet wird. Wenn der LP-Interrupt ein Sekunden-Timer ist, dann 
kann es also passieren, dass eine Sekunde ausfällt. Ist das korrekt?

Oder, - wird der HP-Interrupt abgearbeitet und unmittelbar anschließend 
der LP-Interrupt nachgeholt?

Grüße, attersee
#3283777
Lesenswert?

Du solltest nur beachten, dass die Abarbeitung des HP-Interupts nicht 
länger als die Zeitspanne des LP-Interupts dauert. Andernfalls verlierst 
du die entprechenden Events da das jeweilige IF nur auf den Interupt 
hinweist, nicht jedoch auf die Anzahl. Ausnahme ist der UART, der Buffer 
ist 2 Byte tief, kann also quasi 2 Interupts speichern und das IF wird 
erst zurückgesetzt wenn der UART-Buffer komplett leer ist.
OP #3284525
Lesenswert?

Hallo spontan. Das ist ok. Systemspezifische 'Terminals' lesen über 
einen allseitig optogekoppelten Bus einen längeren von einer 'Zentrale' 
gesendeten Daten-Burst. Private Anwendung. Selbst gemachtes Protokoll. 
Lange Leitungen. Mir geht es um robuste Kommunikation. Nochmals danke.
Grüße, attersee
Gast #3284535
Lesenswert?

Es gibt zwei Sachen, processed and signalized. Ein Interrupt wird 
signalized
wenn das entsprechende Flag ausgelöst wird. Dies ist in HW und 
unabhängig
von der CPU. Dann gibt es processed, also daß ein Interrupt angesprungen
wird. Wenn das Flag ausgelöst wird, während ein low priority interrupt
in Gange ist, und dann wird dieser von einem High priority Interrupt 
unterbrochen, wenn dieser beendet wird dann der low priority interrupt
weitergearbeitet wird, beendet wird, und erst dann könnte der inzwischen
eingetroffene low priority Interrupt abgearbeitet werden. Da kann unter
Umständen ein Interrupt verloren gehen, oder das Timing ausser spec 
sein.
OP #3286885
Lesenswert?

Kurzer Abschlussbericht. Die SW läuft nun mehr als 48 Stunden im 
Dauerbetrieb und es kam zu keinem Übertragungsfehler. Eine Verzögerung 
beim LP Sekundentakt konnte ich nicht feststellen. Die Impuls-Zählung 
liegt weit innerhalb der Quarztoleranz. Ist auch kein Wunder, bei einer 
Wahrscheinlichkeit von etwa 0,7 Kollisionen pro 24 h, des (ach so 
langen) HP Interrupts mit dem LP Zeitgeber. Also, alles bestens.

Danke für alle Beiträge, attersee

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren