16 Bit PWM mit ATMEGA32

Gast #2649272
Lesenswert?

Hi,
ich versuche mit einem ATMEGA32 eine LED Lampe zu dimmen. Mit 8-Bit PWM 
habe ich es schon versucht, das funktioniert auch wunderbar. Jetzt 
wollte ich das selbe mit 16 - Bit realisieren. Sollte mit dem Timer 1 ja 
funktionieren.

Realisiert habe ich es folgendermaßen:
1
ICR1 = 65535;
2
TCCR1A |= (1<<COM1A0);          
3
TCCR1B |=(1<<WGM13) | (1<<CS10);
Das sollte doch für ein Phase Correct PWM ohne Prescaler reichen oder?
Meiner Rechnung nach komme ich auf eine PWM Frequenz von 122Hz (mit 
16MHz Takt)

Allerdings blinkt die LED Lampe nur alle paar Sekunden. Bei der 
Konstantstromquelle heißt es ich bräuchte eine PWM Frequenz zwischen 
100Hz und 1kHz. Also sollte ich gerade noch drinliegen.

Mache ich da irgendwo einen Denkfehler?

Schonmal Danke und Viele Grüße

Matthias
Gast #2649301
Lesenswert?

Also im Datenblatt steht
und mit f = 16 000 000, TOP = 65535 und N=1 komme ich da auf 122Hz.

Die Frequenz bei Fast PWM ist soweit ich weiß gleich, habe ich auch 
schon versucht. Einziger unterschied ist, das die an und aus Phase nicht 
gleich lang ist.

Viele Grüße

Matthias
#2649514
Lesenswert?

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 16000,000 kHz
// Mode: Ph. correct PWM top=ICR1
// OC1A output: Non-Inv.
// OC1B output: Non-Inv.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0xA2;
TCCR1B=0x11;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0xFF;
ICR1L=0xFF;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

Weils kaum lesbar ist, nehme ich den Codegenerator nie...
Aber richtig ist i.a.
Kanns ja mal nachschauen, was das die Bits in TCCR1A bzw. B bedeuten.
Gast #2650553
Lesenswert?

Hi,

nochmal Danke für die ganzen Tipps. Habe es jetzt hinbekommen. War 
eigentlich ein dummer Fehler. Ich habe es auf einem AVR NET - IO Board 
von Pollin getestet. Der Timer 1 war nur dummerweise vom System mit 1024 
als Prescaler konfiguriert. Da ich TCCR1A nicht überschrieben habe, 
hatte ich dann eine Frequenz von 0,fastnichts.

Viele Grüße

Matthias

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