Other Parts Discussed in Thread: CONTROLSUITE
Hi,
I'm trying to generate six pwm pulses for a three phase inverter.
I used ePWM1A,2A,3A,4A,5A and 6A. The pulses must have the pahse shift required for 120 degrees control.
For this control the pulses must be at this queue:
5A 3A
3A 4A
4A 2A
2A 6A
6A 1A
1A 5A
These are the codes that generated from matlab. I added the EPwm1Regs.TBCTL.bit.SWFSYNC = 1 to start the phase shifting but nothing happens
and the pulses starts at a same place. Am I right in the phase shifting or I must try another way?
#include "epwm6p.h" #include "epwm6p_private.h" /* Real-time model */ RT_MODEL_epwm6p epwm6p_M_; RT_MODEL_epwm6p *const epwm6p_M = &epwm6p_M_; /* Model step function */ void epwm6p_step(void) { /* S-Function (c280xpwm): '<Root>/ePWM1A' */ EPwm1Regs.TBCTL.bit.SWFSYNC = epwm6p_P.Constant_Value; } /* Model initialize function */ void epwm6p_initialize(void) { /* Registration code */ /* initialize error status */ rtmSetErrorStatus(epwm6p_M, (NULL)); /* Start for S-Function (c280xpwm): '<Root>/ePWM1A' */ /*** Initialize ePWM1 modules ***/ { EPWMPARAMS EPwm1Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm1Params.TBPRD = 900; EPwm1Params.TBCTL_CTRMODE = 0; EPwm1Regs.TBCTL.bit.SWFSYNC = 1; EPwm1Params.TBCTL_SYNCOSEL = 0; EPwm1Params.TBCTL_PHSEN = 1; EPwm1Params.TBCTL_PHSDIR = 0; EPwm1Params.TBPHS = 600; EPwm1Params.TBCTL_HSPCLKDIV = 0; EPwm1Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm1Params.CMPCTL_LOADAMODE = 0; EPwm1Params.CMPCTL_LOADBMODE = 0; EPwm1Params.CMPA = 800; EPwm1Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm1Params.AQCTLA = 36; EPwm1Params.AQCTLB = 264; EPwm1Params.AQCSFRC_CSFA = 0; EPwm1Params.AQCSFRC_CSFB = 0; EPwm1Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm1Params.DBCTL_OUT_MODE = 0; EPwm1Params.DBCTL_IN_MODE = 0; EPwm1Params.DBCTL_POLSEL = 0; EPwm1Params.DBRED = 0.0; EPwm1Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm1Params.ETSEL_SOCAEN = 0; EPwm1Params.ETSEL_SOCASEL = 1; EPwm1Params.ETPS_SOCAPRD = 1; EPwm1Params.ETSEL_SOCBEN = 0; EPwm1Params.ETSEL_SOCBSEL = 1; EPwm1Params.ETPS_SOCBPRD = 1; EPwm1Params.ETSEL_INTEN = 0; EPwm1Params.ETSEL_INTSEL = 1; EPwm1Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm1Params.PCCTL_CHPEN = 0; EPwm1Params.PCCTL_CHPFREQ = 0; EPwm1Params.PCCTL_OSHTWTH = 0; EPwm1Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm1Params.TZSEL = 0; EPwm1Params.TZCTL_TZA = 3; EPwm1Params.TZCTL_TZB = 3; EPwm1Params.TZEINT_OST = 0; EPwm1Params.TZEINT_CBC = 0; /*-- Initial ePWM1 --*/ config_ePWMRegs(&EPwm1Regs, &EPwm1Params); } /* Start for S-Function (c280xpwm): '<Root>/ePWM2A' */ /*** Initialize ePWM2 modules ***/ { EPWMPARAMS EPwm2Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm2Params.TBPRD = 900; EPwm2Params.TBCTL_CTRMODE = 0; EPwm2Params.TBCTL_SYNCOSEL = 0; EPwm2Params.TBCTL_PHSEN = 1; EPwm2Params.TBCTL_PHSDIR = 0; EPwm2Params.TBPHS = 400; EPwm2Params.TBCTL_HSPCLKDIV = 0; EPwm2Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm2Params.CMPCTL_LOADAMODE = 0; EPwm2Params.CMPCTL_LOADBMODE = 0; EPwm2Params.CMPA = 600; EPwm2Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm2Params.AQCTLA = 36; EPwm2Params.AQCTLB = 264; EPwm2Params.AQCSFRC_CSFA = 0; EPwm2Params.AQCSFRC_CSFB = 0; EPwm2Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm2Params.DBCTL_OUT_MODE = 0; EPwm2Params.DBCTL_IN_MODE = 0; EPwm2Params.DBCTL_POLSEL = 0; EPwm2Params.DBRED = 0.0; EPwm2Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm2Params.ETSEL_SOCAEN = 0; EPwm2Params.ETSEL_SOCASEL = 1; EPwm2Params.ETPS_SOCAPRD = 1; EPwm2Params.ETSEL_SOCBEN = 0; EPwm2Params.ETSEL_SOCBSEL = 1; EPwm2Params.ETPS_SOCBPRD = 1; EPwm2Params.ETSEL_INTEN = 0; EPwm2Params.ETSEL_INTSEL = 1; EPwm2Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm2Params.PCCTL_CHPEN = 0; EPwm2Params.PCCTL_CHPFREQ = 0; EPwm2Params.PCCTL_OSHTWTH = 0; EPwm2Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm2Params.TZSEL = 0; EPwm2Params.TZCTL_TZA = 3; EPwm2Params.TZCTL_TZB = 3; EPwm2Params.TZEINT_OST = 0; EPwm2Params.TZEINT_CBC = 0; /*-- Initial ePWM2 --*/ config_ePWMRegs(&EPwm2Regs, &EPwm2Params); } /* Start for S-Function (c280xpwm): '<Root>/ePWM3A' */ /*** Initialize ePWM3 modules ***/ { EPWMPARAMS EPwm3Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm3Params.TBPRD = 900; EPwm3Params.TBCTL_CTRMODE = 0; EPwm3Params.TBCTL_SYNCOSEL = 0; EPwm3Params.TBCTL_PHSEN = 1; EPwm3Params.TBCTL_PHSDIR = 0; EPwm3Params.TBPHS = 200; EPwm3Params.TBCTL_HSPCLKDIV = 0; EPwm3Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm3Params.CMPCTL_LOADAMODE = 0; EPwm3Params.CMPCTL_LOADBMODE = 0; EPwm3Params.CMPA = 400; EPwm3Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm3Params.AQCTLA = 36; EPwm3Params.AQCTLB = 264; EPwm3Params.AQCSFRC_CSFA = 0; EPwm3Params.AQCSFRC_CSFB = 0; EPwm3Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm3Params.DBCTL_OUT_MODE = 0; EPwm3Params.DBCTL_IN_MODE = 0; EPwm3Params.DBCTL_POLSEL = 0; EPwm3Params.DBRED = 0.0; EPwm3Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm3Params.ETSEL_SOCAEN = 0; EPwm3Params.ETSEL_SOCASEL = 1; EPwm3Params.ETPS_SOCAPRD = 1; EPwm3Params.ETSEL_SOCBEN = 0; EPwm3Params.ETSEL_SOCBSEL = 1; EPwm3Params.ETPS_SOCBPRD = 1; EPwm3Params.ETSEL_INTEN = 0; EPwm3Params.ETSEL_INTSEL = 1; EPwm3Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm3Params.PCCTL_CHPEN = 0; EPwm3Params.PCCTL_CHPFREQ = 0; EPwm3Params.PCCTL_OSHTWTH = 0; EPwm3Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm3Params.TZSEL = 0; EPwm3Params.TZCTL_TZA = 3; EPwm3Params.TZCTL_TZB = 3; EPwm3Params.TZEINT_OST = 0; EPwm3Params.TZEINT_CBC = 0; /*-- Initial ePWM3 --*/ config_ePWMRegs(&EPwm3Regs, &EPwm3Params); } /* Start for S-Function (c280xpwm): '<Root>/ePWM4A' */ /*** Initialize ePWM4 modules ***/ { EPWMPARAMS EPwm4Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm4Params.TBPRD = 900; EPwm4Params.TBCTL_CTRMODE = 0; EPwm4Params.TBCTL_SYNCOSEL = 0; EPwm4Params.TBCTL_PHSEN = 1; EPwm4Params.TBCTL_PHSDIR = 0; EPwm4Params.TBPHS = 300; EPwm4Params.TBCTL_HSPCLKDIV = 0; EPwm4Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm4Params.CMPCTL_LOADAMODE = 0; EPwm4Params.CMPCTL_LOADBMODE = 0; EPwm4Params.CMPA = 500; EPwm4Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm4Params.AQCTLA = 36; EPwm4Params.AQCTLB = 264; EPwm4Params.AQCSFRC_CSFA = 0; EPwm4Params.AQCSFRC_CSFB = 0; EPwm4Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm4Params.DBCTL_OUT_MODE = 0; EPwm4Params.DBCTL_IN_MODE = 0; EPwm4Params.DBCTL_POLSEL = 0; EPwm4Params.DBRED = 0.0; EPwm4Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm4Params.ETSEL_SOCAEN = 0; EPwm4Params.ETSEL_SOCASEL = 1; EPwm4Params.ETPS_SOCAPRD = 1; EPwm4Params.ETSEL_SOCBEN = 0; EPwm4Params.ETSEL_SOCBSEL = 1; EPwm4Params.ETPS_SOCBPRD = 1; EPwm4Params.ETSEL_INTEN = 0; EPwm4Params.ETSEL_INTSEL = 1; EPwm4Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm4Params.PCCTL_CHPEN = 0; EPwm4Params.PCCTL_CHPFREQ = 0; EPwm4Params.PCCTL_OSHTWTH = 0; EPwm4Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm4Params.TZSEL = 0; EPwm4Params.TZCTL_TZA = 3; EPwm4Params.TZCTL_TZB = 3; EPwm4Params.TZEINT_OST = 0; EPwm4Params.TZEINT_CBC = 0; /*-- Initial ePWM4 --*/ config_ePWMRegs(&EPwm4Regs, &EPwm4Params); } /* Start for S-Function (c280xpwm): '<Root>/ePWM5A' */ /*** Initialize ePWM5 modules ***/ { EPWMPARAMS EPwm5Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm5Params.TBPRD = 900; EPwm5Params.TBCTL_CTRMODE = 0; EPwm5Params.TBCTL_SYNCOSEL = 0; EPwm5Params.TBCTL_PHSEN = 1; EPwm5Params.TBCTL_PHSDIR = 0; EPwm5Params.TBPHS = 100; EPwm5Params.TBCTL_HSPCLKDIV = 0; EPwm5Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm5Params.CMPCTL_LOADAMODE = 0; EPwm5Params.CMPCTL_LOADBMODE = 0; EPwm5Params.CMPA = 300; EPwm5Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm5Params.AQCTLA = 36; EPwm5Params.AQCTLB = 264; EPwm5Params.AQCSFRC_CSFA = 0; EPwm5Params.AQCSFRC_CSFB = 0; EPwm5Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm5Params.DBCTL_OUT_MODE = 0; EPwm5Params.DBCTL_IN_MODE = 0; EPwm5Params.DBCTL_POLSEL = 0; EPwm5Params.DBRED = 0.0; EPwm5Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm5Params.ETSEL_SOCAEN = 0; EPwm5Params.ETSEL_SOCASEL = 1; EPwm5Params.ETPS_SOCAPRD = 1; EPwm5Params.ETSEL_SOCBEN = 0; EPwm5Params.ETSEL_SOCBSEL = 1; EPwm5Params.ETPS_SOCBPRD = 1; EPwm5Params.ETSEL_INTEN = 0; EPwm5Params.ETSEL_INTSEL = 1; EPwm5Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm5Params.PCCTL_CHPEN = 0; EPwm5Params.PCCTL_CHPFREQ = 0; EPwm5Params.PCCTL_OSHTWTH = 0; EPwm5Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm5Params.TZSEL = 0; EPwm5Params.TZCTL_TZA = 3; EPwm5Params.TZCTL_TZB = 3; EPwm5Params.TZEINT_OST = 0; EPwm5Params.TZEINT_CBC = 0; /*-- Initial ePWM5 --*/ config_ePWMRegs(&EPwm5Regs, &EPwm5Params); } /* Start for S-Function (c280xpwm): '<Root>/ePWM6A' */ /*** Initialize ePWM6 modules ***/ { EPWMPARAMS EPwm6Params; /*-- Setup Time-Base (TB) Submodule --*/ EPwm6Params.TBPRD = 900; EPwm6Params.TBCTL_CTRMODE = 0; EPwm6Params.TBCTL_SYNCOSEL = 0; EPwm6Params.TBCTL_PHSEN = 1; EPwm6Params.TBCTL_PHSDIR = 0; EPwm6Params.TBPHS = 500; EPwm6Params.TBCTL_HSPCLKDIV = 0; EPwm6Params.TBCTL_CLKDIV = 0; /*-- Setup Counter_Compare (CC) Submodule --*/ EPwm6Params.CMPCTL_LOADAMODE = 0; EPwm6Params.CMPCTL_LOADBMODE = 0; EPwm6Params.CMPA = 700; EPwm6Params.CMPB = 0; /*-- Setup Action-Qualifier (AQ) Submodule --*/ EPwm6Params.AQCTLA = 36; EPwm6Params.AQCTLB = 264; EPwm6Params.AQCSFRC_CSFA = 0; EPwm6Params.AQCSFRC_CSFB = 0; EPwm6Params.AQCSFRC_RLDCSF = 0; /*-- Setup Dead-Band Generator (DB) Submodule --*/ EPwm6Params.DBCTL_OUT_MODE = 0; EPwm6Params.DBCTL_IN_MODE = 0; EPwm6Params.DBCTL_POLSEL = 0; EPwm6Params.DBRED = 0.0; EPwm6Params.DBFED = 0.0; /*-- Setup Event-Trigger (ET) Submodule --*/ EPwm6Params.ETSEL_SOCAEN = 0; EPwm6Params.ETSEL_SOCASEL = 1; EPwm6Params.ETPS_SOCAPRD = 1; EPwm6Params.ETSEL_SOCBEN = 0; EPwm6Params.ETSEL_SOCBSEL = 1; EPwm6Params.ETPS_SOCBPRD = 1; EPwm6Params.ETSEL_INTEN = 0; EPwm6Params.ETSEL_INTSEL = 1; EPwm6Params.ETPS_INTPRD = 1; /*-- Setup PWM-Chopper (PC) Submodule --*/ EPwm6Params.PCCTL_CHPEN = 0; EPwm6Params.PCCTL_CHPFREQ = 0; EPwm6Params.PCCTL_OSHTWTH = 0; EPwm6Params.PCCTL_CHPDUTY = 0; /*-- Setup Trip-Zone (TZ) Submodule --*/ EPwm6Params.TZSEL = 0; EPwm6Params.TZCTL_TZA = 3; EPwm6Params.TZCTL_TZB = 3; EPwm6Params.TZEINT_OST = 0; EPwm6Params.TZEINT_CBC = 0; /*-- Initial ePWM6 --*/ config_ePWMRegs(&EPwm6Regs, &EPwm6Params); } } /* Model terminate function */ void epwm6p_terminate(void) { /* (no terminate code required) */ }