www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LPC2000 Spurious Interrupt Handling


Autor: Dietmar (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

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

Autor: Dietmar (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

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

Autor: Dietmar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A.K.:

Danke nochmal für die Hinweise.

Nun, meine Anwendung läuft mittlerweile einwandfrei, wenn auch erst
nach einigen Spezialitäten im Setup.

Die LPC2000 sind damit durchweg eine gute Sache.

Gruß

Dietmar

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.