Forum: Mikrocontroller und Digitale Elektronik Interrupt Latenz fortlaufen messen(schätzen) mit Timer?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von offline (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Moin,
wenn ein Timer(upcounter) mit dem CPU-Takt läuft, und bei einem Overflow 
einen Interrupt auslöst, ist dann der Wert im 'count' Register(das sich 
dauernd ändert) die Interrupt Latenz in Taktzyklen?

von Sebastian S. (amateur)


Bewertung
-2 lesenswert
nicht lesenswert
Wenn Du soviel in eine Interruptroutine "gepackt" hast, dass ihr 
verhalten einer Kontrolle bedarf, ist nicht im Rechner was schief 
gelaufen, sondern an der Tastatur.
Da die meisten Messsequenzen (Timer) ihrerseits Unterbrechungen 
verwenden, ist das Ergebnis sowieso mittelprächtig.

von Thomas E. (Firma: Thomas Eckmann Informationst.) (thomase)


Bewertung
0 lesenswert
nicht lesenswert
offline schrieb:
> ist dann der Wert im 'count' Register(das sich
> dauernd ändert) die Interrupt Latenz in Taktzyklen?

Ja.

von Jacko (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Die Interrupt-Latenz ist als Zeit vom Auftreten des Interrupts
bis zum Beginn der Bearbeitung definiert.

Ganz grob ist der Zählerstand die Latenzzeit.
Falls du vorher noch Register sicherst, kannst du die Takte
dafür abziehen.

Es ist aber nicht unbedingt die maximale Latenzzeit:
Bei einigen µCs kann die Zeit davon abhängen, ob gerade ein
1-Takt-Befehl, oder ein Mehr-Takt-Befehl bearbeitet wurde.

Weiterhin können bei ungünstigstem Zusammentreffen alle
anderen Interrupts noch ihre aufsummierten maximalen
Bearbeitungsdauern als Verzögerung dazubringen!

Oder Befehlssequenzen, die mit unterdrückten Interrupts
ausgeführt werden müssen.

Beim defensiven Programmieren summiert man alle diese
Zeiten und fragt sich, ob dann die Signalbearbeitung noch
100% sicher ist.

Definier doch eine globale Variable MAX_LAT (Anfangswert = 0)
und speichere dort jeden Zählerstand, der größer, als der
bisherige Wert ist.

Im Hauptprogramm kannst du eine Sequenz für die Überwachung von
MAX_LAT einbauen.

Eventuell muss es aber ein 16-Bit-Wert sein (mehr als 255
Latenz-Takte) - und vielleicht tritt der Worst-Case-Wert auch
erst nach 7 Monaten auf.

von c-hater (Gast)


Bewertung
0 lesenswert
nicht lesenswert
offline schrieb:

> wenn ein Timer(upcounter) mit dem CPU-Takt läuft, und bei einem Overflow
> einen Interrupt auslöst, ist dann der Wert im 'count' Register(das sich
> dauernd ändert) die Interrupt Latenz in Taktzyklen?

Ja, allerdings nur für den Einzelfall. Sprich: der Wert kann u.U. ganz 
erheblich schwanken. Wenn du allerdings sehr viele Messungen mit diesem 
Ansatz machst, dann entpricht der gemessene Minimalwert manchmal 
näherungsweise der statischen bzw. systematischen Interruptlatenz, die 
Differenz aus Maximalwert der Messungen und Minimalwert der Messungen 
entspricht manchmal näherungweise der variablen Interruptlatenz.

Wenn du diese Werte nicht anders als mit Messen ermitteln kannst, hast 
du eigentlich schon verloren, jedenfalls wenn du ein Realtime-System 
bereitstellen oder betreiben willst. Dafür muß man nämlich für beide 
Eigenschaften den worst case vorab als Konstante beziffern können...

Das muss naturgemäß in jeder anderen Sprache als Assembler scheitern und 
selbst in Assembler ist es nur auf einfachen Zielarchitekturen einfach 
zu ermitteln...

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]
  • [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.