Forum: Mikrocontroller und Digitale Elektronik PWM PhasenShift mit dem dsPIC30F4012 über den double-update-Mode


von Kenny (Gast)


Lesenswert?

Hallo miteinander,

ich versuche mit dem dsPIC30F4012 den double-update-Modus in Betrieb zu 
nehmen.Jedoch ruft er nur einmal pro Periode den PWMInterrupt auf, statt 
zweimal. Er ändert den Wert einmal beim neuen PWM-Block, wodurch ich 
abwechselnd einen breiten und schmalen Block erzeuge. Ichwürde aber 
gerne den Zeitpunkt der steigende Flanke und der fallenden Flanke 
unabhängig von einandern ändern.
Das IUE Bit gibt es angeblich bei diesem Controller nicht, von daher 
vermute ich das man es auch nicht benötigt um den Modus zu Betreiben.

Könnt ihr mir weiterhelfen oder sagen was für ein Fehler ich  gemacht 
habe?

Ich wäre dankbar um jede Hilfe

Schöne Grüße

Kenny

Anbei die relevanten Codestellen:
void init_PWM()
{
  PTCON = 0x4003;            //Module stop; pre+postscaler 1:1; 
Up/Down-Counting with Double Update
  PWMCON1 = 0x0077;
  PWMCON2 = 0x0006;
  OVDCON = 0xFF00;
  DTCON1 =0x0000;            //DeadTime Generator disabled
  PTPER=PTPER_val;            //Periode (1157dez = 12750Hz, 0x3D6 = 
15000Hz)
  PTCON = 0x4003;
}
unsigned int ChangePWM=0;
/*    PWM Interrupt */
void __attribute__((_interrupt_,__auto_psv__)) _PWMInterrupt(void)
{
    if(ChangePWM++%2==0)
        PDC3 = tau;
    else
        PDC3 = (PTPER<<1)-tau;
    IFS2bits.PWMIF = 0;
}

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Kenny schrieb:
> Ich wäre dankbar um jede Hilfe

Da ich das ganze nicht kenne kann ich nur allgemein auf das


dsPIC30F Family Reference Manual
Section 15. Motor Control PWM

http://ww1.microchip.com/downloads/en/DeviceDoc/70062E.pdf



oder falls zutreffend auf das:

dsPIC33F Family Reference Manual
Section 50. High-Speed PWM (Part V)

http://ww1.microchip.com/downloads/en/DeviceDoc/DS-70579a.pdf


verweisen

Application Notes sind da dann auch aufgeführt


Bei der Suche hilft den Term center-aligned mode zu verwenden.

von temp (Gast)


Lesenswert?

Ich versuche sowas auch gerade. Allerdings mit einem dsPic33ep64mc502. 
Bei dem reicht es die PHASEX register zu setzen um eine Phaseshift PWM 
zu machen.
Mit Interrupts wäre mir das zu heikel.
Die ganze letzte Zeit hatte ich nur mit Cortex M0 und M3 zu tun. 
Meistens mit der M0 Serie von NXP. Da fällt mir definitiv keine 
Möglichkeit ein eine Phase-Shift PWM ohne Interrupt zu realisieren. 
Vielleicht hat ja einer eine Idee...
Jedenfalls kommt man sich wie zurück in die Steinzeit versetzt vor. Ich 
habe das ICD3 zum Debuggen. Ein Durchlauf mir Übersetzen, Flashen und 
Debuggen dauert gefühlte 10mal so lange wie mit Crossworks und einem 
j-link.
Die HS PWM in den Pics ist sicherlich ziemlich vielseitig. Schade nur, 
dass es sowas bei den Cortexen von NXP und ST nicht gibt.

von Kenny (Gast)


Lesenswert?

Erst einmal danke für die Antworten.
Die Dokumente sind mir bekannt und ich versuche den vom "Section 
15.Motor Control PWM"(
http://ww1.microchip.com/downloads/en/DeviceDoc/70062E.pdf) auf Seite 18 
beschriebenen "Up/Down Counting Mode with Double Updates" zu 
implementieren. Das aber immer noch ohne erfolg.

Schöne Grüße

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.