[AVR] Wie ausbleiben eines Interrupts erkennen?

Gast #1543952
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
Persönliche Seite #1544497
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.
#1546407
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.

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