Forum: Compiler & IDEs AVR ATMega32 Timer 1 Normal Mode


von Sven (Gast)


Lesenswert?

Hallo Leute,
es geht um die Folgende Funktion:
1
int pwm(void)
2
  {
3
                //Data Direction
4
    DDRD = 0xff;
5
    //Normal Mode
6
    TCCR1B  &=  ~((1<<WGM13)|(1<<WGM12));
7
    TCCR1A  &=  ~((1<<WGM11)|(1<<WGM10));
8
    //Set Bit on compare match
9
    TCCR1A  |=  ((1<<COM1A0)|(1<<COM1A1));
10
    //Timer No Prescale
11
    TCCR1B  &=  ~((1<<CS12)|(1<<CS11));
12
    TCCR1B  |=  (1<<CS10);
13
    //Set Counter Value
14
    
15
    OCR1AH = 0x7f;
16
    OCR1AL = 0x00;
17
    
18
  }

Mit dieser Funktion möchte ich eine LED an OC1A dimmen.
Allerdings leuchtet egal bei welchem Compare Wert die LED immer mit 
voller Helligkeit.

Setze ich allerdings den Compare Output Mode auf Toggle so blinkt die 
LED sehr langsam.

Kann mir jemand mit meinem Problem helfen?

Vielen Dank schonmal im vorraus.

Gruß
Sven

von g457 (Gast)


Lesenswert?

> Kann mir jemand mit meinem Problem helfen?

Klar. Da..

> //Normal Mode
..
> //Set Bit on compare match

..steht schon alles annotiert: Du aktivierst den 'normalo-Modus' mit 
'Bitte einschalten'. Nix ausschalten, nix Hardware-PWM.

Einfachste Lösung: Einen der zahlreichen Hardware-PWM-Modi nutzen (-> 
Datenplatt lesen).

HTH

von Sven (Gast)


Lesenswert?

Alles klar, vielen Dank :)

Dann hatte ich wohl einfach den Modus falsch verstanden.
Dachte beim Normal Modus zählt er von 0 bis 0xFFFF hoch und bei
compare match setzt er das bit 1 und sobald er bei 0xFFFF angekommen ist 
wieder auf 0.

von Karl H. (kbuchegg)


Lesenswert?

Sven schrieb:

> Dachte beim Normal Modus zählt er von 0 bis 0xFFFF hoch und bei
> compare match setzt er das bit 1 und sobald er bei 0xFFFF angekommen ist
> wieder auf 0.

Mich wundert, dass der Pin jemals wieder 0 wird. Genau genommen steht 
das so nicht in der Beschreibung der COM Bits für diesen Modus.

FAQ: Timer

von Stefan E. (sternst)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Mich wundert, dass der Pin jemals wieder 0 wird.

Wird er doch auch nicht.
> Allerdings leuchtet egal bei welchem Compare Wert die LED immer mit
> voller Helligkeit.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.