mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer1 starten und stoppen


Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Achim (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Andy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Togger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.