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
Timer aufziehen und im Int zurücksetzen. Wenn Überlauf ---> So wird's üblicherweise gemacht.
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.
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.
Wenn das Signal als ganzes wegbleibt und du das feststellen willst, kannst du das mit einem ADC. Gruss Robert
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.
Danke für alle Antworten. Ich werde mir mal überlegen was in meiner Applikation die sinnvollste Lösung ist. Michael
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.