Forum: Mikrocontroller und Digitale Elektronik PIC PWM Output als Frequenzgenerator 30 Hz bis 1kHz?


von MathiasM (Gast)


Lesenswert?

Hi *,

mein Problem: ich möchte gerne an einem PIC (in meinem Fall der
PIC18F452) an einem PIN ein Rechtecksignal ausgeben können mit 50/50
Pulsweite (fest). Die Frequenz sollte im Bereich 30 Hz bis max. 1000 Hz
vom Programm her variabel einstellbar sein, dabei aber möglichst genau
arbeiten. Also auch "krumme" Werte wie z.B. 123,4 Hz sollten möglich
sein.

Natürlich könnte ich einen PIN wechselseitig an/abschalten und die
Pausenzeiten vorher berechnen, doch das ganz soll mein Hauptprogramm
nicht verlangsamen. Da ich mehrere IRQ Quellen nutze scheidet die
Ausgabe im IRQ wohl auch aus, da das Signal sonst wahrscheinlich nicht
immer 100% stabil sein wird wenn die Bearbeitung eines anderen IRQs
ansteht.

Nun, der PIC hat ja einen PWM Ausgang. Das dumme ist nur das ich mich
mit dem PWM absolut noch nie beschäftigt habe ;-)

Meint ihr der PWM Ausgang ist geeignet für meine Anwendung? Kennt
jemand evtl. bereits fertige Routinen die das erledigen (Frequenz oder
Zeitkonstante übergeben -> Freq. liegt am PWM Ausgang an)?

Oder hat jemand evtl. eine andere Idee wie das am sinnvollsten zu
bewerkstelligen ist?

Danke für alle Antworten im voraus!
Gruß,
Matze

von Steffen (Gast)


Lesenswert?

In dem Frequenzbereich ist das PWM-Modul nicht geeignet. Mit dem
CCP-Modul liegst Du allerdings richtig.

Schau dir das mal im Datenblatt an. Im Compare-Mode wird der Timerwert
mit CCPR1 (bzw. CCPR2) verglichen. Ist der Wert gleich, dann wird der
Timer rückgesetzt und eine Aktion ausgelöst. Das kann ein Interupt, das
Setzen, das Rücksetzen oder das Togglen eines Outputs sein.

Also CCP-Module und Timer richtig konfigurieren und CCPRx mit dem
doppelten, der Frequenz entsprechenden Wert laden. Den Rest macht die
Hardware.

Steffen

von MathiasM (Gast)


Lesenswert?

Das hört sich doch prima an :-)
Danke für den Tipp, Steffen!

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.