Takt fein einstellbar? Timer 1 - PWM Mode (8-10Bit)

Hallo,

nachdem ich mich erfolgreich an der 16Bit Einstellung vom Timer 1 befasst habe, wollte ich die 8-10Bit Einstellungen probieren. Dabei stoße ich auf eine Frage. Kann man den Takt wirklich nur über den Prescaler einstellen? Keine anderen Register zur Feineinstellung? Denn der TOP Wert ist ja für die gewählte Auflösung schon fest vorgegeben. Und TCNT1 zählt nur zwischen 0 und TOP. Oder übersehe ich etwas? Das Datenblatt lesen ist nicht einfach. Zum anderen ist mir klar, dass der Topwert direkten Einfluss auf die Aufösung hat. Fragen wollte ich dennoch.

/*
Arduino Mega2560
Timer 1: 10 Bit Fast PWM, Mode 7
TOP:  0x03FF (1023)
Pulsweite: OCR1
Schaltpin: 11, 12 (OC1A, OC1B bzw. PB5, PB6) nicht invertiert
*/

void set_Timer1()       //  10 Bit Fast PWM
{
  cli();        // Interrupts ausgeschalten
  DDRB = 0xFF;  // Port.B komplett Ausgänge
  
  TCCR1A = (1<<COM1A1) | (1<<COM1B1) | (1<<WGM11) | (1<<WGM10);   
  TCCR1B = (1<<WGM12) | (1<<CS11);                                
  TCNT1 = 0;       // eigentlich überflüssig
  OCR1A = 511;     // Pulsweite, OCR1x <= 1023
  OCR1B = 255;     // Pulsweite, OCR1x <= 1023
    
  sei();           // Interrupts wieder eingeschalten
  
}  // end Funktion

Es gibt Modi in den man den Top-Wert über das ICR1 Register einstellen kann. Da gibt es im Datenblatt eine Tabelle, Mode 10 oder 14 ist vielleicht was für dich.

Hallo,

die Tabelle kenne ich fast auswendig. Mode 14 ist ein 16Bit Modus, kenne ich mittlerweile. Modus 10 ist Phase Correct. Meinte ich nicht. Ich meine schon gezielt die 8, 9 und 10Bit Modi. Hier ist der Top Wert fix. Ich kann mir eben noch nicht vorstellen das der Takt damit nur noch mittels Prescaler einstellbar ist ohne zusätzliche Feinabstimmung. Wenn dem so ist, dann ist dem so. Aber ich bin mir nicht sicher. Deshalb die Nachfrage. Ein Ja/Nein würde mir ausreichen. Von jemanden der es wirklich weis. Eigentlich bin ich mir ja sicher das es nicht anders möglich ist. Ein Resthoffnung habe ich jedoch noch.

Das Netz ist vollgestopft mit Erklärungen von Timer 0 und CTC Mode bis zum erbrechen. Jeder muß nochmal wiederkauen und den Senf neu schreiben. Aber mit PWM und Timer 1 bin ich scheinbar der erste der sich damit befasst. Einer muß ja mal anfangen. :)

Der Takt ist natürlich nur über den Prescaler einstellbar. Wo so soll man da sonst noch rumdrehen können? Wenn du mehr Prescaler Optionen willst nimm Timer2. Aber der hat auch nur 8 Bit.

Mode 14 ist ein 16Bit Modus

Maximal sind das 16 Bit. Das können auch 12 Bit sein wenn du willst

Hallo,

gut dann geht das wirklich nur mit dem Prescaler in den 3 Modi. Mehr wollte ich nicht wissen. Danke.

Das der 16Bit Modus kein echter ist, weis ich ja. Habe mich damit ausgiebig beschäftigt. Der Name sagt eigentlich nur aus, dass man sich im Bereich 0 bis 65535 austoben darf. Bis wohin man wirklich gehen darf, hängt vom gewünschten Takt ab. Der ist dann dafür absolut fein einstellbar. Von irgendwelchen 2^x Bit würde ich da nicht direkt reden wollen.

Serenifly: Datenblatt

Wenn ihr von "Datenblatt" redet, meint ihr dann das hier?

Gruß Chris

Hallo,

genau, dass ist das komplette Datenblatt zu einem AVR µC. Das Thema Timer beginnt ab Seite 93.