Forum: Mikrocontroller und Digitale Elektronik Sekunden Takt


von Thomas (Gast)


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!

von Alex (Gast)


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

von Tobi (Gast)


Angehängte Dateien:

Lesenswert?

anhang

von Hannes (Gast)


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

von Fritz Ganter (Gast)


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.

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.