Hallo Leute ich habe einen PIC24HJ128GP506 und möchte pwm machen. Habe den Timer 3 nach nem Leerbuch eingerichtet und TMR3 auf 400 gesetzt und die pwm anteile auf 200 und 200 gesetzt. (also 50%) allerdings sollte nach Leerbuch eine Schaltfrequenz von ca. 40 KHz eingestellt sein. Leider ändert sich das pwm signal nur alle 10 Sekunden mal. kann mir jemand sagen wie ich die Geschichte auf ca. 18 KHz einrichtet bekomme? Ps. habe 32 MHZ Taktung. Danke ;-)
Hallo, wie sieht's mit dem Timer-Prescaler bzw. der Clock-Configuration allgemein aus? Gruß Christian
Der Timer Prescaler steht auf 1:1 und sorry bin neuling, meinst du mit clock den Takt, oder wie? habe den timer1 einfach nen 1ms interrupt und über den timer2 mache ich ne entprellung von tastern und timer3 wollte ich für die pwm geschichte nehemn leider konnte ich nicht genau herausfinden was der timer mit der sache zu tun hat, ist der nur zur aktualisierung des tastverhältnisses zu tun, oder greift der mit in die pwm sache ein? Sorry nochmal, neuling ;-)
Hardware Interrupt schrieb: > ...herausfinden was der timer mit der sache zu tun hat, ist der nur zur > aktualisierung des tastverhältnisses zu tun, oder greift der mit in die > pwm sache ein? der Timer wird verwendet um die PWM zu erzeugen! Der Timer= Zähler zählt von 0 bis zu einem definierten Endwert. Das ist entweder der Überlauf (maximal) oder ein von dir definierter Wert. In einem zweiten Register steht ein Vergleichswert, der praktisch dein Tastverhältnis darstellt. Die PWM Erzeugung funktioniert z.B. so: Zähler = 0 -> Pin auf high setzen... Zähler zählt munter weiter... die Timerhardware vergleicht nun immer den Zählerwert mit dem Vergleichswert. Sind beide gleich wird der Pin auf low gesetzt. Der Zähler zählt weiter bis zum Endanschlag und wird dann wieder auf 0 gesetzt (und der Pin wieder auf high) und so weiter und so fort. Je nachdem wie schnell der Timer läuft, also der Zähler zählt und wie weit er zählt ändert sich deine Frequenz des PWM-Signals. Mit dem Vergleichswert stellst du das Tastverhältnis ein. Da du die 18kHz nicht erreichst gehe ich davon aus, dass du für den Timer die falsche Taktquelle bzw. Vorteiler ausgewählt hast. Gruß Christian
http://ww1.microchip.com/downloads/en/DeviceDoc/70247A.pdf bzw. http://www.microchip.com/wwwproducts/Devices.aspx?dDocName=en024687 Da musst du dich halt durchkämpfen... Gruß Christian
Danke schon mal, ich kann dir morgen früh mal den genauen sourcecode schicke, den habe ich jetzt nicht hier aber wird wenn ich den Timer also z.B. TMR3 auf 400 setzte nicht auch die Frequnz anders, also wenn ich ihn nur auf 200 setze?
Hardware Interrupt schrieb: > Danke schon mal, ich kann dir morgen früh mal den genauen sourcecode > schicke, den habe ich jetzt nicht hier aber wird wenn ich den Timer also > z.B. TMR3 auf 400 setzte nicht auch die Frequnz anders, also wenn ich > ihn nur auf 200 setze? Die Frequenz wäre dann doppelt so hoch. Schau dir mal das gelinkte Dokument zum 'Output-Compare' Modul an, da sollte alles für dich interessante drin stehen incl. Code Beispiel Gruß Christian
Wo finde ich denn die weiteren kapitel, des Links, ist ganz gut, aber wo sind die denn bei microchip, finde die irgendwie nicht :-(((
Hardware Interrupt schrieb: > Wo finde ich denn die weiteren kapitel, des Links, ist ganz gut, aber wo > sind die denn bei microchip, finde die irgendwie nicht :-((( dann nimm mal den zweiten Link ;-)
ja habe mir jetzt mal paar sachen runter geladen, komischerweise macht der eine pwm die ca. alle 10 s mal den zustand wechselt. ich wollte jetzt mal zur probe einen pin toggeln lassen sobald der timer aufgerufen wird, komischerweise klappt das nicht mal bei meinem Timer ein, mit welchem ich aber schon alle 1ms aufrufe, habe das Toggeln so gemacht, geht das? IO_Set_Point^=(uint8)1; IO_Set_Point ist vorher definiert worden. und liegt an PIN _RB2
ohne deine defines bzw. den Code zu sehen ist eine Aussage nicht möglich. Ausgang auf Output geschaltet? Output-Compare-Pin auf einen Pin geroutet? Timer aktiviert? etc...
jetzt funktioniert es, ich hatte ausversehen den Timer 2 schon als 32 Bit Timer verwendet und so kam dann der Timer 3 natürlich durcheinander. danke euch trotzdem für die hilfe
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.