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