Timer0 startet nicht

OP #2476820
Lesenswert?

Hallo,

ich versuche auf einem AT90USB1287 den Timer0 zu starten und den 
CTC-Mode für OC0B zu aktivieren.
1
int main(void)
2
{
3
  DDRD = (1<<PD0);
4
  TCCR0A = (1<<COM0B0) | (1<<WGM01);  // Toggle OC0B on Compare Match
5
  TCCR0B =  (1<<CS00) | (1<<CS01) | (1<<FOC0B); // Prescaler 64, Force Compare Match für OC0B
6
  OCR0B = 0x80; // 128
7

8
  while(1)
9
  {
10
  }
11

12
}

So sehe ich auf dem Oszilloskop nur Rauschen.

Es scheint als übersehe ich etwas aber ich komm nicht drauf!
Kann mir jemand weiterhelfen?

Viele Grüße

Christian
Gast #2476876
Lesenswert?

Hi

>Aber OCR0A funkioniert auch nicht.

Auch den entsprechenden Ausgang gesetzt?

>....|(1<<FOC0B)

FOCxy dient nur zum 'manuellen' auslösen eines Compare-Ereignisses. In 
deinem Fall unnötig.

MfG Spess
Gast #2476895
Lesenswert?

Sieht dein Code jetzt so aus?
1
#include <avr/io.h>
2
int main(void)
3
{
4
  DDRD = (1<<PD0);                   // OC0B Ausgang
5
  TCCR0A = (1<<COM0B0) | (1<<WGM01); // Toggle OC0B und CTC Modus
6
  TCCR0B = (1<<CS00) | (1<<CS01);    // Prescaler 64
7
  OCR0A = 0x80-1;                    // für Compare Match & Clear TCNT0 
8
  OCR0B = 0x80-1;                    // für OC0B Toggleaktion
9
  while(1)
10
  {
11
  }
12
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren