www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik timer -> 1 sekunde


Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo.
ich habe einen 8Bit timer.
ich kann ihn mit
4000000 Hz
500000 Hz
62500 Hz
15625 Hz
3906 Hz
laufen lassen.
wie könnt ich damit einen sekundentakt hinbekommen?

hab das natürlich schon versucht, aber es ist keine sekunde.
ich habs quasi nicht hinbekommen.
drum wollt ich mal nach anderen lösungsvorschlägen fragen.

gruß
dieter

Autor: Steffen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Den Timer in der ISR so initialisieren, das er nach 217 Takten erneut
einen Interupt auslöst und mit einer Variablen 18 ISR-Einsprünge
Zählen. Ergibt dann genau* eine Sekunde.

217*18=3906

Je nach Prozessor können allerdings die Einsprünge in die ISR
unterschiedlich lange dauern. Daher ist diese Methode nicht 100%-ig.
Ist z.B. beim PIC mit TMR0 nicht so.

Steffen

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich hab nen ATmega103, also nen Mikrcontroller.
ob des damit funktioniert?

und gibt es denn eine 100%ige methode?

Autor: Alexthbe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab das letztes mal auch versucht, und hab einfach den Timer1
genommen (bei nem ATmega8) und den in den CTC Modus geschaltet, und
dann hatte ich einen 100%igen 1Hz Takt. Vielleicht ne dumme Frage, aber
wieso nimmst du nicht einfach den 16bit-Timer ... is einfacher?
ansonsten würd ich sagen einfach den Takt im CTC Modus sauber
einstellen und dann einfach über den Interrupt auf ne Zählung gehen die
nach nem bestimmten Wert in das Unterprogramm geht für das du den Takt
brauchst ... glaub nicht das das ne Musterlösung für das Problem ist
aber funktionieren tuts allemal

MFG Alexthbe

Autor: Sascha Coesfeld (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

bei 4MHz und einem 8bitTimer denke ich an folgendes:

4MHz % 256(Durchlauf des Timer) = 15625d oder 3D09h

Also, jedesmal wenn der Interrupt für Timer0 kommt, eine 16Bit-Variable
von 3D09h runterzählen, danach mit 0 vergleichen. Wenn gleich, dann
Zeit ist rum.
Dabei kann es zu einem winzigen Fehler kommen, je nach Programmierung.
Ansonsten nur bis 3D08h zählen und die restlichen Schritte so
erledigen(zB nop's), beim letzten NOP ist dann die Zeit korrekt rum.

Die erste Version sollte aber reichen
Sascha

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ sascha

so wie du hab ichs gemacht.
ich zähl bis 15625d
nach ungefähr ner stunde läuft die "uhr" schon so eine sekunde
hinterher.

ich würd jett mal probieren bis 15624 zu zählen.

aber wie bekomm ich raus, wieviele nop's ich machen soll?

Autor: Dipl. Ing. Til Stork (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Toggle eine Pin nach "deiner Sekunde" und halt ein Ozilloskop dran,
dann kannst du es genau einstellen.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
probiers im Simulator aus, dann siehst du genau, wiviele Takte/Zeit
vergehen. Sollte das stimmen, kannst du einen Software-Fehler
ausschliessen, liegt dann am Quarz bzw Beschaltung.
Prinzipiell sind die MC-Quarze nicht sonderlich genau.

Autor: Uwe (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Wird wohl eher am ungenauen Quarz liegen, versuche einfach mal 15624.
Dann 1 Stunde warten. Abweichung bestimmen und die Diff. zur 15625 Zeit
errechnen. Die Diff./256 ist dann deine Zeit pro NOP und nur noch eine
kleine Rechenübung.

MFG Uwe

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.