Timer2 Sekundentakt: Denkfehleranalys erbeten

OP (Firma: Brainit GmbH) #2913379
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte auf einem ATmega328p mit Timer2 einen Sekundentakt erzeugen.

Meine Überlegung dazu:

Taktfrequenz 16 MHz
Prescaler 1024 => 15625 Hz
Per Output Compare  bis 125 zählen lassen => 125 Hz
mit eigenem Zähler nach 125 Interrupts => 1 Hz

wenn bis hierher schon ein Denkfehler drinnen ist, geh ich mich schämen, 
und ihr brauchts den Code gar nicht mehr ansehen.

Wenn nicht: bitte um weitere Denkfehler-Analyse:

Setup des Timers:
1
TCCR2A = _BV(WGM21);  // Mode 2: CTC
2
TCCR2B = _BV(CS22) | _BV(CS21) || _BV(CS20);  // prescaler 1024
3
OCR2A = 125;    // Output Compare A
4
TIMSK2 = _BV(OCIE2A);  // Enable Output Compare A

die ISR:
1
static volatile uint16_t tack;
2
// Timer 2 output compare handler
3
ISR(TIMER2_COMPA_vect)
4
{
5
    if (++tack > 125) {
6
  tack = 0;
7
  PORTC ^= _BV(3);  // blink
8
    }
9
}

Damit blinkt die LED nciht mehr sichtbar, also viel zu schnell. Wenn ich 
den vergleich ändere in
1
    if (++tack > 12500)
Dann seh ich sie blinken, immer noch zu schnell (schwer zu sagen um 
wieviel zu schnell)

Wo ist mein Denkfehler?



Danke, Michi (der heute schon seit 3 uhr früh arbeitet, daran wirds wohl 
liegen...)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.