Frage zur Soft PWM

Gast #2648648
Lesenswert?
• ▲
▼
Morgen,

ich bin gerade dabei mich in den Software PWM Artikel reinzudenken.

Dabei ist mit folgendes aufgefallen:
1
#define F_CPU 8000000L                  // Systemtakt in Hz
2
#define F_PWM 100                       // PWM-Frequenz in Hz
3
#define PWM_STEPS 256                   // PWM-Schritte pro Zyklus(1..256)
4
#define PWM_PORT PORTD                  // Port für PWM
5
#define PWM_DDR DDRD                    // Datenrichtungsregister für PWM
6
 
7
// ab hier nichts ändern, wird alles berechnet
8
 
9
#define T_PWM (F_CPU/(F_PWM*PWM_STEPS)) // Systemtakte pro PWM-Takt
10
 
11
#if (T_PWM<(93+5))
12
    #error T_PWM zu klein, F_CPU muss vergrössert werden oder F_PWM oder PWM_STEPS verkleinert werden
13
#endif

Mit den Beispielwerten ergibt das für T_PWM 312,5.
Nun geht ja der Nachkommateil verloren.

Aber was bedeutet diese Ungenauigkeit für meine PWM?
Nachdem ichs im Kopf durchgespielt habe denke ich, dass sich dadurch 
meine PWM Frequenz ändert. Anstatt meine gewünschten 100Hz hab ich eine 
Frequenz von 100,16Hz. Das dürfte aber in der Praxis kein Problem 
darstellen, richtig? Denn das wichtige an der PWM ist ja der Dutycycle 
=(Tan / Tgesamt). Und der bleibt ja erhalten.

Kann hier jemand meine Gedanken bestätigen oder wiederlegen?
Und woher stammt der Wert aus dem #if Block (93+5)? Da happerts auch 
noch wenig :-)

Danke und viele Grüße!
#2648684
Lesenswert?
• ▲
▼
messi schrieb:
> Anstatt meine gewünschten 100Hz hab ich eine
> Frequenz von 100,16Hz.

Richtig

> Das dürfte aber in der Praxis kein Problem
> darstellen, richtig?

Das hängt von der Anwendung ab. Für LEDs ist das egal.

> Denn das wichtige an der PWM ist ja der Dutycycle
> =(Tan / Tgesamt). Und der bleibt ja erhalten.

Richtig

> Und woher stammt der Wert aus dem #if Block (93+5)? Da happerts auch
> noch wenig :-)

Das hängt von der Ausführungsdauer der ISR ab. Wenn der Interrupt zu 
schnell angefordert wird, gehen Interrupts verloren und die Frequenz 
wird niedriger.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.