Atmega8 Timer1 OC1A/OC1B: nur A läuft

OP #6192299
Hallo,

Atmega8

Möchte die PWM von Timer1 benutzen um auf OC1A und OC1B verschiedene 
Frequenzen auszugeben.
Mit meinem Init vom Timer läuft nur OC1A (mit LEDs getestet).

Warum läuft OC1B nicht mit?

void init_timer1(void)
{
  DDRB |= (1<<PB1);
  DDRB |= (1<<PB2);//OC1A/OC1B als Output
  TCCR1A |= (1<<COM1A1) | (COM1B1);//set at bottom;clear at compare
  TCCR1A |= (1<<WGM10);//phase correct, 8Bit
  TCCR1B |= (1<<CS11);//Prescaler 8: 14745600 / 256 = 57600 / 8 = 7200
  //Test
  OCR1A = 162;
  OCR1B = 100;
}

Jens
Gast
Jens N. schrieb:
> Warum läuft OC1B nicht mit?

An der initialisierung liegt es nicht. Eventuell steht aber noch etwas 
in den  Timerregister, da du ja nur veroderst. Ansonsten komplettes 
kleinstes Program, das den Fehler enthält, zeigen.
OP
o.k

Habs jetzt mal in zwei Zeilen geschrieben:

TCCR1A |= (1<<COM1A1);//set at bottom;clear at compare
TCCR1A |= (1<<COM1B1);//set at bottom;clear at compare

Das geht!

Wie setzt man richtig mehrere Bits in einem Register gleichzeitig?

Jens

P.S.: Habs gefunden, man muss die Masken wohl klammern:

TCCR1A |= ((1<<COM1A1) | (1<<COM1B1));
Gast
Jens N. schrieb:

> Möchte die PWM von Timer1 benutzen um auf OC1A und OC1B verschiedene
> Frequenzen auszugeben.

Tja, dann hast du ein ernsthaftes Problem. Das ist nämlich völlig 
unmöglich. Zwei PWM-Kanäle eines AVR8-Timers haben zwangsläufig 
immer dieselbe PWM-Frequenz.

Bestenfalls (z.B. halt bei Timer1 der Atmegas) ist es wenigstens 
überhaupt möglich, an der Frequenz zu drehen und trotzdem zwei 
PWM-Kanäle zu haben.

Sprich: lies' endlich das verdammte Datenblatt!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.