Forum: Mikrocontroller und Digitale Elektronik 16 Bit PWM mit ATMEGA32


von Matthias (Gast)


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

von Urmel aus dem Eis (Gast)


Lesenswert?

Bist du dir mit der Frequenz sicher? Bin der Meinung ( ohne ins 
Datenblatt geschaut zu haben ) das Phase Correct PWM ne ecke Langsamer 
ist als Fast PWM.

von spess53 (Gast)


Lesenswert?

Hi

>Meiner Rechnung nach komme ich auf eine PWM Frequenz von 122Hz (mit
>16MHz Takt).

Stimmt. Aber wozu braucht man für LEDS Phase-Correct-PWM?

MfG Spess

von Matthias (Gast)


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

von Matthias (Gast)


Lesenswert?

Hallo Spees,

im Prinzip sollte es ja egal sein, ich habe es auch mit Fast PWM 
versucht, allerdings war es der selbe Effekt. Auch die Berechnung der 
Frequenz ist ja gleich.

Viele Grüße

Matthias

von spess53 (Gast)


Lesenswert?

Hi

> Auch die Berechnung der Frequenz ist ja gleich.

Nein. Fast PWM ist doppelt so schnell wie Phase Correct bzw. 
Phase&Frequency Correct PWM.

MfG Spess

von Matthias (Gast)


Lesenswert?

Mist, stimmt. Bin ich im Datenblatt verrutscht. Muss ich morgen nochmal 
versuchen. Danke für den Tipp.

von H.Joachim S. (crazyhorse)


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.

von Falk B. (falk)


Lesenswert?

Siehe LED-Fading

von Matthias (Gast)


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

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.