Forum: Mikrocontroller und Digitale Elektronik Timer, nur ein Durchlauf


von Martin Schwerter (Gast)


Lesenswert?

Hallo!
Nach meinen bisherigen Recherchen hier wird der Timer ja folgendermaßen
benutzt: Er zählt hoch bis 0xFF, und dann gibs einen Overflow und das
Spiel geht von neuem los. Die Overflows werden irgendwo dann ja im
Programm benutzt und dann hat man ja eine bestimmte Anzahl
Overflows=Timerdurchgänge.

Ich möchte den Timer allerdings nur folgendermaßen nutzten:
Der Timer wird gestartet, fängt an zu Zählen, und wenig später schaue
ich quasie herein, bis wie weit der gezählt hat. Geht das irgendwie?
Mein Gedanke dazu war der, dass der Timer einfach durch das Setzen des
Teilers gestartet wird und ich wenig später halt den Wert aus dem
entsprechenden Register herauslese (bin leider gerade nicht zu Hause,
sonst hätte ich auch sagen können wie das heißt, aber ich glaube ihr
wisst was ich meine...).
Das hat aber irgendwie nicht recht funtioniert, oder ich habe mich
verrechnet.

Konkret handelt es sich um einen Atmega8 mit 16MHZ (durch
Quarzoszillator), das Programm soll folgendes machen:

Empfänger für den RC-Modellbau geben ja ein Signal von 1-2ms aus, das
die Lage eines Servos beschreibt. Dazwischen sind 20ms Low-Pegel.

Ein Interruot wird ausgelöst, wenn am Interrupt-Eingang der Pegel
hochgeht, d.h. der 1-2ms-Impuls beginnt. Der Interruot wird nun
umgestellt, sodas  er durch Pegelabfall ausgelöst wird. Dann soll ein
Timer, so wie oben beschrieben, die Zeit merken, bis der weitere
Interrupt durch den Pegelabfall ausgelöst wird. Dieser Wert kann dann
entsprechend verarbeitet werden.

Nun, wie gesagt, ich habe es oben mal ausprobiert wie beschrieben, aber
es klappte nicht. Der Teiler war 256 und ich hatte mir dadurch einen
Timer-Wert zwischen 62 und 125 versprochen.

Also alles andere (die Interruotgeschichte usw) scheint nach meinen
Tests zu klappen, nur nicht die Sache mit dem Timer.
Hat vielleicht jemand eine Idee dazu?
Vielen Dank schonmal,
Martin

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Guck dir mal die Funktion der InterruptCapture (ICP).
Pulsdauern misst man damit aus.
Und wenn du "Modellbau" an die Forensuchfunktion übergibst, müsstest
du auch Lösungen finden...

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.