Forum: Mikrocontroller und Digitale Elektronik langsame PWM - max 500Hz


von Horrible (Gast)


Lesenswert?

Hallo Leute.
Ich brauch für eine Anwendung eine sehr langsame PWM. Die Frequenz darf 
maximal 500 Hz betragen. Ist das mit (oder ohne) Hilfsmittel mit der 
Hardware-PWM eines AVR machbar?

Der Controller (ein Mega644P) soll weiterhin auf 9,6 MHz laufen. Den 
kann ich also nicht langsamer takten.

von Volker S. (volkerschulz)


Lesenswert?

Horrible schrieb:
> Hallo Leute.
> Ich brauch für eine Anwendung eine sehr langsame PWM. Die Frequenz darf
> maximal 500 Hz betragen. Ist das mit (oder ohne) Hilfsmittel mit der
> Hardware-PWM eines AVR machbar?
>
> Der Controller (ein Mega644P) soll weiterhin auf 9,6 MHz laufen. Den
> kann ich also nicht langsamer takten.

Dafuer gibt es doch die Pre-Scaler. ;)

Volker

von Peter D. (peda)


Lesenswert?

Horrible schrieb:
> Der Controller (ein Mega644P) soll weiterhin auf 9,6 MHz laufen. Den
> kann ich also nicht langsamer takten.
1
9.6MHz / 1024 / 65536 / 2 = 0,07Hz
Ist das nicht langsam genug?


Peter

von Gast321 (Gast)


Lesenswert?

Ohne Angabe der Auflösung kann man zu der Frage keine vernünftige 
Aussage machen.

Eine Auflösung von 24 Bit wäre beispielsweise absolut nicht machbar.

von Horrible (Gast)


Lesenswert?

Peter Dannegger schrieb:
> 9.6MHz  1024  65536 / 2 = 0,07Hz
> Ist das nicht langsam genug?

Ach ja, Denkfehler meinerseits. Ich hab nur 9,6MHz / 1024 gerechnet und 
bin damit auf irgendwas um 9kHz gekommen. Aber das ist ja nur die 
Frequenz in der das Timer-Register zählt...

Nur eine Frage hab ich noch: Wieso wird das alles nochmal durch 2 
dividiert?

von 123 (Gast)


Lesenswert?

Horrible schrieb:
> Nur eine Frage hab ich noch: Wieso wird das alles nochmal durch 2
> dividiert?

Weil Du im Interrupt den Pin nur einmal umschaltest.

1. Interrupt: AN->AUS
2. Interrupt: AUS->AN
macht zusammen eine ganze Periode

von Volker S. (volkerschulz)


Lesenswert?

Gast321 schrieb:
> Ohne Angabe der Auflösung kann man zu der Frage keine vernünftige
> Aussage machen.
>
> Eine Auflösung von 24 Bit wäre beispielsweise absolut nicht machbar.

Erstens hat so ein ATMEGA64 nicht wirklich viele 
Hardware-PWM-Moeglichkeiten mit 24-Bit-Breite und zweitens sinkt die 
moegliche Frequenz mit der Aufloesung doch eher und er wollte eine 
moeglichst langsame PWM haben!

Volker

von Volker S. (volkerschulz)


Lesenswert?

123 schrieb:
> Horrible schrieb:
>> Nur eine Frage hab ich noch: Wieso wird das alles nochmal durch 2
>> dividiert?
>
> Weil Du im Interrupt den Pin nur einmal umschaltest.
>
> 1. Interrupt: AN->AUS
> 2. Interrupt: AUS->AN
> macht zusammen eine ganze Periode

Hardware-PWM!

Frequenz : Prescaler : Aufloesung. Nix durch 2 teilen...

Volker

von Simon K. (simon) Benutzerseite


Lesenswert?

Volker Schulz schrieb:
> Frequenz : Prescaler : Aufloesung. Nix durch 2 teilen...

Für Phase Correct PWM schon. Da wird bei dem ersten Compare 
eingeschaltet und beim zweiten aus.

von der kleine Niels (Gast)


Lesenswert?

Meine bescheidene Meinung dazu:
Clock -> Prescaler -> 16BitCounter -> rauf- und runterzählen.
Ergibt bei mir ebenfalls:
9,6MHz  1024  (65536 * 2) = 9,6MHz  1024  65536 / 2 = 0.07Hz

Nich geprüft habe ich dabei den maximal möglichen Prescaler und ob 
wirklich ein 16bit-Counter vorliegt. Da vertraue ich euch ^^

von Horrible (Gast)


Lesenswert?

Okay, also zusammenfassend:
1
// Phase corrected PWM
2
f = XTAL / Prescaler / 2^TimerBits-1 / 2;
1
// Fast PWM
2
f = XTAL / Prescaler / 2^TimerBits-1;


Hab ich das so richtig verstanden?

Und durch das Setzen des TOP-Wertes (ist glaube ich möglich) kann ich 
auch noch den Wert "2^TimerBits-1" und damit meine Frequenz anpassen.

von Volker S. (volkerschulz)


Lesenswert?

Horrible schrieb:
> Okay, also zusammenfassend:
>
>
1
> // Phase corrected PWM
2
> f = XTAL / Prescaler / 2^TimerBits-1 / 2;
3
>
>
>
1
> // Fast PWM
2
> f = XTAL / Prescaler / 2^TimerBits-1;
3
>
>
>
> Hab ich das so richtig verstanden?
>
> Und durch das Setzen des TOP-Wertes (ist glaube ich möglich) kann ich
> auch noch den Wert "2^TimerBits-1" und damit meine Frequenz anpassen.

Ich bin von der Fast PWM ausgegangen, ja.

aber nicht 2^TimerBits-1... 2^TimerBits. 255 -> 0 (bei Beispiel 8-Bit) 
braucht auch noch einen Tick.

Volker

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.