Atmega328p Timer2 will nicht

Gast #4003172
Lesenswert?
• ▲
▼
N Abend,

Folgendes:
Der Timer2 will nicht laufen. Timer0 macht's dagegen ohne Probleme.
Zum Test toggle ich einen Ausgang. Weis jemand warum?
1
void StartTimer0(void){
2
  TIMSK0 |= ((1<<TOIE0));
3
  TIMSK0 |= ((1<<OCIE0A));
4
  TCCR0B |= ((1<<CS00)|(1<<CS02));
5
}
6
void StartTimer2(void){
7
  TIMSK2 |= ((1<<TOIE2));
8
  TIMSK2 |= ((1<<OCIE2A));
9
  TCCR2B |= ((1<<CS20)|(1<<CS22));
10
}
11
int main(void){
12
   TCNT0=0;
13
   OCR0A=124;
14
   StartTimer0();
15
  TCNT2=0;
16
  OCR2A=124;
17
  StartTimer2();
18
while(1){
19
}
20
ISR(TIMER0_OVF_vect){
21
//  PORTB ^= ((1<<DDB5));
22
}
23
ISR(TIMER2_OVF_vect){
24
  PORTB ^= ((1<<DDB5));
25
}
Gast #4003405
Lesenswert?
• ▲
▼
sei(); ist gesetz, sonst würde auch der Timer0 Overflow nicht 
funktionieren. Ich wollte hier nur wirklich relevantes zeigen.
Die Klammern bei while sind richtig.

Ich habe inzwischen mal Timer1 getestet - exakt wie Timer0 
initialisiert. Auch dieser funktioniert. Nur Timer2 will nicht. Die LED 
geht an und das war's.
Bei den anderen beiden Timern kann man deutlich das flackern erkennen. 
Das will mir nicht in den Kopf...
Gast #4003408
Lesenswert?
• ▲
▼
mike schrieb:
> sei(); ist gesetz, sonst würde auch der Timer0 Overflow nicht
> funktionieren. Ich wollte hier nur wirklich relevantes zeigen.
> Die Klammern bei while sind richtig.
>
> Ich habe inzwischen mal Timer1 getestet - exakt wie Timer0
> initialisiert. Auch dieser funktioniert. Nur Timer2 will nicht. Die LED
> geht an und das war's.
> Bei den anderen beiden Timern kann man deutlich das flackern erkennen.
> Das will mir nicht in den Kopf...

Aber ja, es fehlt eine Klammer von main().
Gast #4003452
Lesenswert?
• ▲
▼
Fehler gefunden!

Alle 3 Timer sind eigentlich gleich aufgebaut
Alle Registernamen sind quasi identisch - bis auf die Zahl im Namen.
Allerdings unterscheiden sich die prescaler.
Timer2 kennt keine externe clock source hat dafür 2 Teiler mehr als 
Timer0 und Timer1. Und hier lag der Hase im Pfeffer.

Solche Sachen überliest man gerne auch 100mal.

Aber jetzt gehts...

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.