www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24 pwm einrichten


Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wie sieht's mit dem Timer-Prescaler bzw. der Clock-Configuration 
allgemein aus?

Gruß
Christian

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo finde ich denn die weiteren kapitel, des Links, ist ganz gut, aber wo 
sind die denn bei microchip, finde die irgendwie nicht :-(((

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ;-)

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Hardware Interrupt (bensen83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: C. H. (_ch_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gerne doch

Gruß
Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.