mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC24F PWM problem


Autor: Markus Reinprecht (Firma: tu wien) (specht)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
ich habe eine problem mit der PWM meines PIC24F128GA106.
der duty cycle und die periodendauer lassen sich irgendwie nicht 
verändern bzw nicht so wie ich mir das gedacht hätte.
ich messe auf dem pin immer nur eine pwm mit 50% duty cycle, egal was 
ich mache.
soweit ich das verstanden habe stellt man mit dem register RPx die 
periodendauer ein und mit OC1RS den duty cycle.
wenn ich aber RPx ändere, passiert nix und beim ändern von OC1RS ändert 
sich die periodendauer, duty cycle bleibt dabei aber trotzdem auf 50%.
wäre nett wenn mir irgendwer dabei helfen könnte.

hier noch der code zur pwm initialisierung
void Timer3_init(void){

  _RP25R = 0; // unmap pin

  _RP25R = 18; // map pin RP25 (pin 52) auf output compare 1

  PR3 = 1000;
  OC1R    = 100;
  OC1RS   = 100;
  OC1CON2bits.SYNCSEL = 0x1f;
  OC1CON2bits.OCTRIG = 0;
  OC1CON1bits.OCTSEL = 1;
  OC1CON1bits.OCM = 3;

  T3CONbits.TCKPS = 0;
  T3CONbits.TON = 1;

}

vielen dank im vorraus
mfg markus

Autor: Blaukraut (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du weist dem Pin das PWM Modul 1 zu:
 _RP25R = 18; // map pin RP25 (pin 52) auf output compare 1

setzt aber dann die Periode des PWM-Moduls 3
  PR3 = 1000;

Und verschrieben hast Du Dich wohl hier:
  stellt man mit dem Register RPx die periodendauer ein


Die einzelnen Einstellungen habe ich mir nicht angesehen. Das kannst Du 
selbst nochmal nachprüfen.
Aber Du musst Dir erst im Klaren darüber sein, welches der PWM-Module Du 
benutzen willst. Soweit ich weiß gibt es 5 davon!

Autor: Markus Reinprecht (Firma: tu wien) (specht)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo,
danke für den hinweis.
bei RP und PR verschreibe ich mich immer.
ich hab natürlich gemeint dass man mit dem PRx register die 
periodendauer einstellt.
ich hätt das eigentlich so gesehen, dass ich mit dem PR3 register den 
wert einstelle bis zu dem der Timer 3 zählt, den dann die output compare 
unit als referenzwert nimmt.
welches pwm modul man verwendet kann sollte man in den OxCON1/2 
registern einstellen können.
hab ich das alles richtig verstanden?

mfg

Autor: Markus Reinprecht (Firma: tu wien) (specht)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so ich habs jetzt hinbekommen.
falls es jemanden interessiert, hier ist der initialisierungscode:



void pwm_init(void){
  _RP25R = 18;
  OC1CON1 = 0; /* It is a good practice to clear off the control bits 
initially */
  OC1CON2 = 0;
  OC1CON1bits.OCTSEL = 0x07; /* This selects the peripheral clock as the 
clock input to the OC
  module */
  OC1CON2bits.SYNCSEL = 0x1f;
  OC1R = 1000; /* This is just a typical number, user must calculate 
based on the
  waveform requirements and the system clock */
  OC1RS = 10000; /* Determines the Period */
  OC1CON1bits.OCM = 6; /* This selects and starts the Edge Aligned PWM 
mode*/
}

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.