LPC2000 Spurious Interrupt Handling

Gast #337567
Lesenswert?
• ▲
▼
Es ist schon ein paar Tage her, daß ich hier einmal das Thema Spurious
Interrupts ansprach.

Ich bin noch am Setup des Default Interrupt Handler dran.

Zum Thema Spurious Interrupts bei den Philips LPC2000 Serien hätte ich
noch ein paar Fragen:

Arbeite mit Keil Tools, und überlege gerade eine Handhabung der
Spurious Interrupts, wie auch in der Philips AN10414 beschrieben.

Die Surprise Interrupts habe ich bereits in der Startup.s direkt an den
Interrupt-Vektoren, mit ein wenig Assemblercode, gemanagt. Das
funktioniert gut.

Jetzt die Spurious Interrupts: Interrupts können ja hier sowohl als
reguläre Interrupts als auch als Default-Interrupts auftreten. Meine
Idee ist, alle Interrupt-Funktionen jetzt als normale C-Funktionen zu
deklarieren, die von 2 Quellen (Interrupts) angesprungen werden können,
und zwar aus dem regulären Interrupt als auch aus dem
Default-Interrupt-Handler, also aus 2 Quellen.

Dazu rufe ich sowohl aus dem regulären Interrupt als auch aus dem
Default-Handler, also von 2 verschiedenen Seiten, die Funktion auf.

Im Test funktioniert das gut.

Die reguläre Interrupt-Funktion, so wie sie ist, kann nicht aus dem
Default-Handler aufgerufen werden. Es entstehen zwar keine
Kompilier-Fehler, aber nach einem Aufruf des regulären Interrupts aus
dem Default-Handler entsteht ein Undef-Abort. Ist ja auch klar, auf
Grund der unterschiedlichen Rücksprungadressen und Regenerierung des
Betriebsmodes.

Hat da jemand Einwände, bzw. einen anderen (besseren) Vorschlag?

Sehe ich was kompliziert, was auch einfach geht?

Gruß

Dietmar
Gast #337568
Lesenswert?
• ▲
▼
Unentschieden scheint mir weiterhin, ob man sich die Mühe überhaupt
machen muss. Ich habe bislang kein Szenario erkennen können, in dem es
notwendig scheint, im Spurious Interrupt Handler auf derartige
Interrupts zu testen.

Wenn der Interrupt verschütt ging, weil ihn jemand bewusst
ausgeschaltet hat, warum sich die Mühe machen?

Wenn er verschütt ging, weil die Ursache nicht mehr besteht, warum
dann.?

Die UART-Beispiele von Philips jedenfalls sehen mir so aus, als ob man
zwar einen Spurious Interrupt kaum vermeiden kann, aber sich das Ganze
von selbst erledigt wenn man im Handler schlicht garnichts tut. Führt
allenfalls zu einer geringen Verzögerung empfangener Bytes, aber das
liegt sowieso in der Natur vom CTI.
Gast #337569
Lesenswert?
• ▲
▼
"von selbst erledigt wenn man im Handler schlicht garnichts tut"

So hatte ich das zuerst auch aufgefasst. Nur darf man eben den
Interrupt in der Default-Routine nicht bestätigen, sonst ist er weg.
Mit der Delayzeit muß man dann eben leben.

Mir steht noch die Anpassung einer UART Software aus einem älteren
System mit 8051 bevor. Und ein Kollege hatte bereits das Problem mit
verlorenen Daten am UART (ca. jedes tausendste Byte).

Gruß

Dietmar
Gast #337570
Lesenswert?
• ▲
▼
Nichtvektorierte Interrupts mal aussen vor gelassen, wird der Default
Handler doch bloss dann aktiv, wenn zu dem Zeitpunkt kein Interrupt
mehr anliegt. Was kann dann verloren gehen? War's ein CTI der von
einem passend eintreffenden Byte gelöscht wurde, dann kommt der doch
einen Timeout später wieder. Oder in Form vom RDA wenn hinreichend
voll.
Gast #337571
Lesenswert?
• ▲
▼
Ich will's mal andersrum ausdrücken: Kannst du mir ein Szenario
beschreiben, indem etwas verloren geht? Das ist nämlich der Teil, den
ich nicht verstehe. Philips legt das in der AN auch nahe, jedoch ohne
ein nachvollziehbaren Szenario anzubieten. Dort ist nur dokumentiert,
wie es zum Spurious Interrupt kommt, nicht jedoch wie dadurch etwas
verloren gehen kann.

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.