Fast-PWM Frequenz mit 100Hz

OP #4369251
Lesenswert?

Hallo,
ich brauche mal wieder Hilfe.
Komme mit dem Einstellen der PWM-Frequenz nicht klar.

Mein erster Versuch, Fast PWM Mode3, prescale factor = 8, CPU 1Mhz 
intern,
ergibt eine PWM Frequenz von rund 488Hz.
Die PWM funktioniert auch so weit.
 Im Anhang ist der C-Code zum Testen.
Kontroller ist ein Tiny25, verwendet wird Timer0, Ausgang ist PB0 
(OC0A).
Die Pulsweite stelle ich mit OCR0A ein.

Wenn ich nach dem Datenblatt gehe, um die Frequenz auf 100Hz zu ändern, 
muss ich den Fast PWM Mode7 verwenden (WGM02 auf 1 setzen) und den 
TOP-Wert mit OCR0A festlegen.

Wie bzw. wo stelle ich dann aber die Pulsweite ein?
Ist dann OC0A noch der Ausgang?
Muss ich noch was anderes umstellen?

Habe schon ein paar Versuche durch, aber ohne Erfolg, PWM geht dann 
nicht mehr.
2.Datei zeig einen Versuch mit OCR0B für die Pulsweite, funktioniert 
aber nicht.


Gruß Jörg
Angehängte Dateien:
Gast #4369357
Lesenswert?

Hallo,
schon mal Danke für die schnellen Antworten.
Wie ich schon erwähnte, habe ich einige Kombinationen versucht.
Ich habe PB1 (OC0B) verwendet und den Ausgang auch entsprechend 
geändert.
Ich hatte auch mal COM0B1 verwendet, aber ich weis jetzt nicht mehr ob 
auch alles zusammen, werde ich dann noch mal testen.

schorsch schrieb:
> PWM_50 Wert höher als OCR0A Wert?

was meinst du genau damit?

Ich habe in OCR0A den TOP Wert mit 52 geladen, damit nicht mehr bis 256 
sondern nur bis 52 gezählt wird um die 100Hz zu erreichen.
Mit OCR0B stelle ich die Pulsweise (DutyCycle) von 0x00 bis 0xFF ein.
Ist das jetzt falsch?
Kann ich nur noch Werte kleiner OCR0A verwenden?

Gruß Jörg
#4369387
Lesenswert?

mitchell schrieb:
> Mit OCR0B stelle ich die Pulsweise (DutyCycle) von 0x00 bis 0xFF ein.
> Ist das jetzt falsch?

Ja, das ist falsch. Du stelltst mit OCR0B von 0 bis OCR0A ein. Also bis 
52.

mitchell schrieb:
> Kann ich nur noch Werte kleiner OCR0A verwenden?

Ja. Kleiner oder gleich 52. Das ist eine ziemlich mickrige Auflösung. 
Ist aber egal, da deine Rechnung sowieso falsch ist.

1Mhz/Prescaler64/157 = 99,52 also ~100

Du stellst den Prescaler auf 64 und OCR0B auf 156.

mfg.
OP #4369621
Lesenswert?

Hallo,
da war ich schon fast auf den richtigen Weg und klar habe ich mich da 
verrechnet.
Danke für die Hilfe es funktioniert jetzt.
Nun kann ich weiter Testen, ob das mit den 100hz auch so funktioniert 
wie ich es gerne möchte.
Anbei der Code mit dem ich die PWM jetzt getestet habe.
Mit 3 Schaltern zum testen der verschiedenen PWM-Pulsbreiten.

Gruß Jörg
Angehängte Dateien:

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