www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Sekunden Takt


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Kann mir jemand helfen?
Ich bekomme einfach keinen ungefähren Sekundentakt hin!
Meine Ansatz:

Takt 4Mhz
Prescaler auf 1024
Zählregister TCNT0 zählt bis 256
Also wird der Timer0 Overflow-Interrupt
4000000Hz/1024= 3906,25Hz

(1/(3906,25Hz))*256

entspricht
etwa (1024/15625) ist etwa (ganz grob) 1/15s

Also müsste ich doch den Timer-Interrupt auf einen Zähler führen
der bis 15 zählt. Dann hätte ich doch in etwa einen Sekundentakt,
oder?

Habe aber einen Takt von etwa 2-3 Hz!

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Thema wurde schon x-mal behandelt, also bemühe bitte die Forensuche
bzw. wirf einen Blick in die Codesammlung. Peter Dannegger hat dort ein
Beispiel veröffentlicht.

Gruss, Alex

Autor: Tobi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
anhang

Autor: Hannes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Ich bekomme einfach keinen ungefähren Sekundentakt hin!"

Echt nicht? Man kann mit 4MHz (=250ns Periodendauer) sogar einen sehr
genauen Takt hinbekommen:

Dazu braucht man allerdings den 16Bit Timer...dann setzt man das
Compareregister auf 62500 und sagt, dass bei jedem CompareMatch der
Zähler gelöscht werden soll (und von neuem startet). Dann hast Du einen
Interrupt, der jede Sekunde einmal auslöst.

Auf die Zahlen kommt man, indem man einfach mal eine Formel aufstellt:

ZählRegister = (Zeit[s] * f[1/s]) / Prescaler; wobei der Prescaler 64
ist.
Dann entspricht 1 Sekunde einem Registerinhalt von genau 62500.


MfG
Hannes

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst auch einen 32,768kHz Uhrenquarz an TOSC anhängen, dann gehts
einfacher:


/* setup 8bit counter2, clock from 32768Hz quartz*/
  TIMSK = 0;
  sbi (ASSR, AS2);
/* auf 1/128 sek. */
  TCCR2 = _BV (CS22) | _BV (CS21) | _BV (WGM21);
  OCR2 = 0;

  TIMSK = _BV (OCIE2);

OCR2 auf 127 für 1 Sekunde setzen.

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.