Forum: Mikrocontroller und Digitale Elektronik Atmega164p - Fast PWM funktioniert nicht


von Fabian S. (jacky2k)


Lesenswert?

Hallo,
ich versuche grade eine Fast PWM auf einem Atmega164p zum laufen zu 
bekommen. Hier mein Code:
1
  // prescaler = 8
2
  TCCR0B = ( (0<<CS02) | (1<<CS01) | (0<<CS00) );
3
4
  // set Fast PWM mode with clear at OCRA
5
  TCCR0A = ( (1<<COM0A1) | (1<<WGM01) | (1<<WGM00) );
6
  
7
  TCCR0B |= ( (1<<WGM02) );
8
9
  // set OC0A as output
10
  DDRB |= (1<<PB3);
11
  
12
  OCR0A = 127;

Wenn ich mir in der Main immer TCNT0 ausgebe sieht man, dass der Timer 
läuft. Der Pin bleibt jedoch die ganze Zeit auf high.
Was stimmt hier nicht?

von spess53 (Gast)


Lesenswert?

Hi

>Was stimmt hier nicht?

Du hast keinen Comparewert (OCR0B) geladen. OCR0A ist nur der Topwert

MfG Spess

von Fabian S. (jacky2k)


Lesenswert?

OK dann erstmal eine andere Frage: Ist der Mode 7 eigentlich der 
richtige oder muss ich 3 nehmen? Ich will dass der einfach immer von 0 
bis 255 rennt und bei OCR0A den pin dann aus schaltet, bei 0 
einschaltet.
Ich habe eben mal OCR0A auf 0xff gesetzt, OCR0B auf 0x10 und ich habe 
ein Tastverhältnis von 50%. Das ist wohl nicht ganz das was ich wollte.

von spess53 (Gast)


Lesenswert?

Hi

>Ich will dass der einfach immer von 0
>bis 255 rennt und bei OCR0A den pin dann aus schaltet, bei 0 einschaltet.

Dann nimm Mode 3.

>Ich habe eben mal OCR0A auf 0xff gesetzt, OCR0B auf 0x10 und ich habe
>ein Tastverhältnis von 50%. Das ist wohl nicht ganz das was ich wollte.

Das passt nicht.

MfG Spess

von Fabian S. (jacky2k)


Lesenswert?

Alles klar, Mode 3 hat das Problem gelöst :)
Danke!

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.