mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PWM Kanäle auf AVR32 UC3B 1512


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: hhhhhuie (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich versuche die PWM Kanäle auf dem AVR32UC3B1512 zu verwenden. Leider 
komme ich hierbei nicht weiter, daher hoffe ich hier auf Hilfe. Selbst 
habe ich leider nur Beispiele unter Verwendung des ASF gefunden, in 
welches ich mich nur ungern einarbeiten würde.

Konkret, ich  erhalte kein PWMSignal, und somit auch keine verwertbare 
Information. Dies habe ich auch mit einem Oszilloskop überprüft. Ich 
habe PWMC, GPIOC, PM und INTC initialisiert.

Hier die Initialisierungsfunktion. Konkrete Adressen und Werte sind in 
einer Header Datei definiert:

void MC_init(){

  /*PM initializations*/
  PM_CPUMASK |= PM_CPUMASK_OCDEN;         // OnChipDebugger
  PM_PBAMASK |= PM_PBAMASK_ENS;           // enabling interrupt, gpio and pwm clocks, to be sure (should be enabled by default/reset)

  /*interrupt controller initializations*/
  
  IPR12_PWM &= IPR_LEVEL0;  //zeroing
  IPR12_PWM |= IPR_LEVEL1;  

  
  /*PWM channels initializations*/
  
  PWM_MR |= PWM_DEFCLK;   //Mode Register, DEFCLK => selcted by prea, preb
  
    //assigning unmanipulated clock to the channels (value = 0)
  PWM_CMR0 &= PWM_CMR_STDCLK;
  PWM_CMR1 &= PWM_CMR_STDCLK;
  PWM_CMR2 &= PWM_CMR_STDCLK;
  PWM_CMR3 &= PWM_CMR_STDCLK;
  PWM_CMR4 &= PWM_CMR_STDCLK;
  PWM_CMR5 &= PWM_CMR_STDCLK;
  PWM_CMR6 &= PWM_CMR_STDCLK;
  
    //assigning polarity to start on lowlevel on all channels (value = 0)
  PWM_CMR0 &= PWM_CMR_POL_L;
  PWM_CMR1 &= PWM_CMR_POL_L;
  PWM_CMR2 &= PWM_CMR_POL_L;
  PWM_CMR3 &= PWM_CMR_POL_L;
  PWM_CMR4 &= PWM_CMR_POL_L;
  PWM_CMR5 &= PWM_CMR_POL_L;
  PWM_CMR6 &= PWM_CMR_POL_L;
  
    //assigning left alignment to all channels (value = 0)
  PWM_CMR0 &= PWM_CMR_ALG_L;
  PWM_CMR1 &= PWM_CMR_ALG_L;
  PWM_CMR2 &= PWM_CMR_ALG_L;
  PWM_CMR3 &= PWM_CMR_ALG_L;
  PWM_CMR4 &= PWM_CMR_ALG_L;
  PWM_CMR5 &= PWM_CMR_ALG_L;
  PWM_CMR6 &= PWM_CMR_ALG_L;

    //assigning period of 1024 to all channels
  PWM_CPRD0 |= PWM_DEFPRD;
  PWM_CPRD1 |= PWM_DEFPRD;
  PWM_CPRD2 |= PWM_DEFPRD;
  PWM_CPRD3 |= PWM_DEFPRD;
  PWM_CPRD4 |= PWM_DEFPRD;
  PWM_CPRD5 |= PWM_DEFPRD;
  PWM_CPRD6 |= PWM_DEFPRD;
  
    //assigning individual duty cycles to the channels
  PWM_CDTY0 |= 0x100;    //3,3V *1/4  = 0,825V
  PWM_CDTY1 |= 0x200;    //3,3V *1/2  = 1,65V
  PWM_CDTY2 |= 0x050;    //3,3V *1/8  = 0,4125V
  PWM_CDTY3 |= 0x020;    //3,3V *1/20= 0,165V
  PWM_CDTY4 |= 0x010;    //3,3V *1/40= 0,0825V
  PWM_CDTY5 |= 0x300;    //3,3V *3/4  = 2,475V
  PWM_CDTY6 |= 0x350;    //3,3V *7/8  = 2,8875V
  

  /*GPIO initializations*/
  GPIO_GPER &= PWM_PERIPHERAL_ENABLE;    //resulting: FFBA9E7F
  GPIO_PMR0 |= PMR0_PWM_BITS;        //MUX Bit 0
  GPIO_PMR1 |= PMR1_PWM_BITS;        //MUX Bit 1

  
  PWM_IER |= PWM_IER_ALL;                 // enable interrupt for all channels
  PWM_ENA |= PWM_ENA_ALL;                 // enable PWM channels

}


Die Kanäle sind mit Tiefpässen erster Ornung verbunden, was das direkte 
Ausgabesignal meines Wissens aber nicht beeinflussen sollte.

Danke im Voraus.

hhhhhuie

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.