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;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.