Forum: Mikrocontroller und Digitale Elektronik Timer1 starten und stoppen


von Andy (Gast)


Lesenswert?

Hallo an alle!

Ich haba folgendes Problem. Ich möchte mit dem Timer1 eine Signallänge
messen und dafür den Timer1 verwenden. Ich sollte möglichst genau sein
bei der Messung, also brauch ich das in 10er wenn nicht sogar in einer
millisekundenschritten. Aber dazu kann man ja den Prescale verwenden.
Nun zu meiner Frage; wie kann man den Timer1 im programm starten,
Stoppen und Vergleichen bzw Auswerten?

Grüsse Andy

von Achim (Gast)


Lesenswert?

Hi,
wenn du nen AVR meinst und bascom benuzt gibt es statements wie start
timer1 und stop timer1.
Ich habe das mal mit dem Timer0 gemacht um zu messen wie schnell der
adwandler ist.
Millisekunden sind da überhaupt kein problem.
Bei meinem Board nehme ich mit 8mhz und prescale = 8 ganz einfach
millionstel Sekundnen auf.
Du must wohl beachten das start und stop des timers auch einen
Systemtakt brauchen.

Das auslesen ist ebefalls einfach sprich X=timer1 und schon hast du den
zählerstand in der variable.
Und in bascom kann man das dann auch noch sehr einfach simulieren um
szu sehen ob bestimmte werte rauskommen oder nicht.

mfg

Achim

von Andy (Gast)


Lesenswert?

Ich möchte das ganze für eine DCF-Uhr nehmen. Da will ich die Highzeiten
messen und mit einer Case-abfrage auswerten.
ich dachte mir das so; Highsignal kommt, timer1 wird gestartet, durch
interrupt mit 'falling' wird der timer gestopt, ausgewertet und auf
null gesetzt. Dann, wenn die nächste 'rising' flanke kommt soll er
wieder anfangen zu zählen usw.

ich benutze einen ATMEL-Chip und bascomAVR

Grüsse Andy

von Togger (Gast)


Lesenswert?

Hi Andy,
hatte das Problem erst neulich.
Timer1 Starten stoppen geht über die Clock Select Bits 0..2
(CS10..CS12) im TCCR1B Register.
Für Details schau bitte ins Datenblatt, weil da steht es detailiert.
Den Timerstand kannst du dann im TCNT1h/l auslesen, ggf. beim Start auf
null setzen.
Das Problem das ich allerdings hatte war, das ich den korrekten Wert
erst bei mind. 2 Auslesevorgängen des TCNT1 Reg. bekam.
Bei einmaligem auslesen der Wert ergab keinen Sinn.
Kann allerdings auch an Bascom liegen, dem ich mit Assembler ein
bischen Beine machen mußte ;-)
Ansonsten müßte es so gehen.

Viel Glück

lg Ralf

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.