Forum: Mikrocontroller und Digitale Elektronik [AVR] Wie ausbleiben eines Interrupts erkennen?


von Michael H. (Gast)


Lesenswert?

Hallo,

ich messe mit ATMega8 und ICP ein pulsbreitenmoduliertes Signal. Dabei 
möchte ich aber auch erkennen wenn das Eingangssignal ausbleibt. 
Momentan bleibt das zuletzt gemessene Ergebnis einfach stehen, was mir 
meine Messung versaut.
Da die Pulsbreite teilweise recht stabil ist, kann ich nicht einfach auf 
"aktuell <> alt" vergleichen.

Ich könnte natürlich einen Interrupt-Zähler einbauen und periodisch 
nachschauen ob er inkrementiert, das bedeutet aber mehr Zeit in der ISR 
und in main() und eine zusätzliche Variable.

Gibt es andere Möglichkeiten?

Die Frage ist eher akademisch, weil ich genügend Platz und Zeit in 
meinem Programm habe, aber es interessiert mich trotzdem.

Michael

von Bensch (Gast)


Lesenswert?

Timer aufziehen und im Int zurücksetzen. Wenn Überlauf --->

So wird's üblicherweise gemacht.

von Michael H. (Gast)


Lesenswert?

Bensch schrieb:
> Timer aufziehen und im Int zurücksetzen. Wenn Überlauf --->

Danke für Deine Antwort, ich vergaß zu schreiben daß bereits alle 3 
Timer benutzt sind.

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Kommt ganz drauf an, was Du machen willst bzw machst.
Oft kann man durch geschickte Programmierung mehrere Timer zu einem 
zusammenfassen (es gibt zum Beispiel einen Overflow- sowie zwei 
Compare-Interrupts). Mal so eine Idee.

Speziell, wenn man lange Wartezeiten hat, kann man den Timer auch 
schnell laufen lassen und dann in der INT-Routine noch einen 
Software-Timer mitzählen. Somit kann man gleich mehrere Compare-Punkte 
einbauen.

von R. F. (rfr)


Lesenswert?

Wenn das Signal als ganzes wegbleibt und du das feststellen willst, 
kannst du das mit einem ADC.

Gruss

Robert

von I. E. (anfaenger69)


Lesenswert?

Der Interrupt könnte auch einen Watchdog zurücksetzen. Beim Ausbleiben 
gibts es einen Reset und Du kannst am Anfang vom main() erkennen, ob es 
ein Hardware reset oder Watchdog reset war.

von Michael H. (Gast)


Lesenswert?

Danke für alle Antworten. Ich werde mir mal überlegen was in meiner 
Applikation die sinnvollste Lösung ist.

Michael

von Karl H. (kbuchegg)


Lesenswert?

Michael H. schrieb:
> Danke für alle Antworten. Ich werde mir mal überlegen was in meiner
> Applikation die sinnvollste Lösung ist.
>

> Danke für Deine Antwort, ich vergaß zu schreiben daß bereits alle 3
> Timer benutzt sind.

Und denk dran, dass es kein Naturgesetz gibt, nach dem es verboten ist, 
in der ISR eines Timer-Events mehere Funktionalitäten unterzubringen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.