Forum: Digitale Signalverarbeitung / DSP / Machine Learning TMS320F2812 Probleme mit PWM


von GustavG (Gast)


Lesenswert?

Hallo,
ich versuche seit einer Weile schon an meinem TMS 6 verschiedene PWMs 
auszugeben. Bis auf PWM11/12 bzw Compareregister 6 funktioniert auch 
alles wunderbar. Mit der PWM habe ich dafür das Problem kein 
vernünftiges Signal rauszubekommen...
Wenn CMPR3-6 alle auf dem gleichen Wert sind, ist die PWM12 dauer-high. 
Wenn auf einem anderen PWM-Signal eine Flank kommt, sieht man PWM12 ganz 
leicht nach oben wackeln(auf dem Oszi etwa 50mV). Ansonsten hängt der 
Pin dauerhaft an 2V.

Nur wenn CMPR6 einen deutlich anderen Wert als den CMPR4 und 5 gebe, 
bekomme ich eine PWM. Ein gleiches Register reicht schon aus um das 
Problem zu bekommen. Von den CMPR1-3 ist das Problem nicht abhängig.

Die EVA und EVB Register habe ich schon miteinander verglichen. Diese 
unterscheiden sich nur im TxCNT

Ich habe bisher auch im Userguide nichts passendes gefunden, daher hoffe 
ich dass ihr mir helfen könnt ;-)

Anbei ist die Init der PWM für EV-A. bei EV-B sind alle Parameter gleich 
gesetzt. Bei den Befehlsnamen wurde natürlich überall der Index A gegen 
B ausgetauscht ;-)

Danke schonmal für eure Hilfe!

// EVA Configure T1PWM, T2PWM, PWM1-PWM6
// Initalize the timers
   // Initalize EVA Timer1
   EvaRegs.T1PR = 0xFFFF;       // Timer1 period
   EvaRegs.T1CMPR = 0x3C00;     // Timer1 compare
   EvaRegs.T1CNT = 0x0000;      // Timer1 counter
   // TMODE = continuous up/down
   // Timer enable
   // Timer compare enable
   EvaRegs.T1CON.all = 0x1042;


  // Initalize EVA Timer2
  EvaRegs.T2PR = 0x0FFF;       // Timer2 period
  EvaRegs.T2CMPR = 0x3C00;     // Timer2 compare
  EvaRegs.T2CNT = 0x0000;      // Timer2 counter
  // TMODE = continuous up/down
  // Timer enable
  // Timer compare enable
  EvaRegs.T2CON.all = 0x1042;


  // Setup T1PWM and T2PWM
  // Drive T1/T2 PWM by compare logic
  EvaRegs.GPTCONA.bit.TCMPOE = 1;
  // Polarity of GP Timer 1 Compare = Active low
  EvaRegs.GPTCONA.bit.T1PIN = 1;
  // Polarity of GP Timer 2 Compare = Active high
  EvaRegs.GPTCONA.bit.T2PIN = 2;

  // Enable compare for PWM1-PWM6
  EvaRegs.CMPR1 = 0x3C00;
  EvaRegs.CMPR2 = 0x3C00;
  EvaRegs.CMPR3 = 0x3C00;

  // Compare action control.  Action that takes place
  // on a cmpare event
  // output pin 1 CMPR1 - active high
  // output pin 2 CMPR1 - active low
  // output pin 3 CMPR2 - active high
  // output pin 4 CMPR2 - active low
  // output pin 5 CMPR3 - active high
  // output pin 6 CMPR3 - active low
  EvaRegs.ACTRA.all = 0x0666;
  EvaRegs.DBTCONA.all = 0x0000; // Disable deadband
  EvaRegs.COMCONA.all = 0xA600;

von GustavG (Gast)


Lesenswert?

sorry für die Schreibfehler! Ich dachte ich kann den Beitrag nach dem 
senden nochmals korrigieren...

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.