This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F28335:ePWM 相移

Guru**** 2538950 points
Other Parts Discussed in Thread: CONTROLSUITE

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/612388/tms320f28335-epwm-phase-shifting

器件型号:TMS320F28335
Thread 中讨论的其他器件:controlSUITE

您好!

我尝试为三相逆变器生成六个 PWM 脉冲。

我使用了 ePWM1A、2A、3A、4A、5A 和6A。 这些脉冲必须具有120度控制所需的相移。

对于此控制、脉冲必须在此队列中:

5A 3A

3A 4A

4A 2A

2A 6A

6A 1A

1A 5A

这些是从 MATLAB 生成的代码。 我添加了 EPwm1Regs.TBCTL.bit.SWFSYNC = 1来启动相移、但不会发生任何情况

脉冲从同一个位置开始。 我是在相移中、还是必须尝试另一种方法?


#include "epwm6p.h" #include "epwm6p_prival.h" /*实时模型*/ rt_model_epwm6p epwm6p_M_; rt_model_epwm6p * const epwm6p_M =&epwm6p_M_; /* void 函数 * pwm6p_m6p*(void)* pwm6p_model *(pwm6p_stepwm)*函数:/pwm6pwm6pwm)* void *( /ePWM1A'*/ EPwm1Regs.TBCTL.bit.SWFSYNC = epwm6p_P.Constant_value; } //模型初始化函数*/ void epwm6p_initialize (void) { //*注册代码* //*//*初始化错误状态*/ rtmErrorStatus (epwm6p_initialize) *(nuln):'nul-cm (nuln) /ePWM1A'*/ /***初始化 ePWM1模块***/ { EPWMPARAMS EPWM1Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm1Params.CMPCTL_LOADAMODE = 0; EPwm1Params.CMPCTL_LOADBMODE = 0; EPwm1Params.CMPA = 800; EPwm1Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm1Params.AQCTLA = 36; EPwm1Params.AQCTLB = 264; EPwm1Params.AQCSFRC_CSFA = 0; EPwm1Params.AQCSFRC_CSFB = 0; EPwm1Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm1Params.DBCTL_OUT_MODE = 0; EPwm1Params.DBCTL_IN_MODE = 0; EPwm1Params.DBCTL_POLSEL = 0; EPwm1Params.DBRED = 0.0; EPwm1Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm1Params.PCCTL_CHPEN = 0; EPwm1Params.PCCTL_CHPFREQ = 0; EPwm1Params.PCCTL_OSHTWTH = 0; EPwm1Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm1Params.TZSEL = 0; EPwm1Params.TZCTL_TZA = 3; EPwm1Params.TZCTL_TSB = 3; EPwm1Params.TZEINT_OST = 0; EPwm1Params.TZEINT_CBC = 0; /*--初始 ePWM1 --*/ CONFIG_ePWMRegs (EPwm1Regs、EPwm1Params); } //开始 S 函数(c280xpwm):' /ePWM2A'*/ /***初始化 ePWM2模块***/ { EPWMPARAMS EPWM2Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm2Params.CMPCTL_LOADAMODE = 0; EPwm2Params.CMPCTL_LOADBMODE = 0; EPwm2Params.CMPA = 600; EPwm2Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm2Params.AQCTLA = 36; EPwm2Params.AQCTLB = 264; EPwm2Params.AQCSFRC_CSFA = 0; EPwm2Params.AQCSFRC_CSFB = 0; EPwm2Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm2Params.DBCTL_OUT_MODE = 0; EPwm2Params.DBCTL_IN_MODE = 0; EPwm2Params.DBCTL_POLSEL = 0; EPwm2Params.DBRED = 0.0; EPwm2Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm2Params.PCCTL_CHPEN = 0; EPwm2Params.PCCTL_CHPFREQ = 0; EPwm2Params.PCCTL_OSHTWTH = 0; EPwm2Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm2Params.TZSEL = 0; EPwm2Params.TZCTL_TZA = 3; EPwm2Params.TZCTL_TSB = 3; EPwm2Params.TZEINT_OST = 0; EPwm2Params.TZEINT_CBC = 0; /*--初始 ePWM2 -*/ CONFIG_ePWMRegs (EPwm2Regs、EPwm2Params); } //开始 S 函数(c280xpwm):' /ePWM3A'*/ /***初始化 ePWM3模块***/ { EPWMPARAMS EPWM3Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm3Params.CMPCTL_LOADAMODE = 0; EPwm3Params.CMPCTL_LOADBMODE = 0; EPwm3Params.CMPA = 400; EPwm3Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm3Params.AQCTLA = 36; EPwm3Params.AQCTLB = 264; EPwm3Params.AQCSFRC_CSFA = 0; EPwm3Params.AQCSFRC_CSFB = 0; EPwm3Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm3Params.DBCTL_OUT_MODE = 0; EPwm3Params.DBCTL_IN_MODE = 0; EPwm3Params.DBCTL_POLSEL = 0; EPwm3Params.DBRED = 0.0; EPwm3Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm3Params.PCCTL_CHPEN = 0; EPwm3Params.PCCTL_CHPFREQ = 0; EPwm3Params.PCCTL_OSHTWTH = 0; EPwm3Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm3Params.TZSEL = 0; EPwm3Params.TZCTL_TZA = 3; EPwm3Params.TZCTL_TSB = 3; EPwm3Params.TZEINT_OST = 0; EPwm3Params.TZEINT_CBC = 0; /*--初始 ePWM3 -*/ CONFIG_ePWMRegs (EPwm3Regs、EPwm3Params); } //开始 S 函数(c280xpwm):' /ePWM4A'*/ /***初始化 ePWM4模块***/ { EPWMPARAMS EPWM4Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm4Params.CMPCTL_LOADAMODE = 0; EPwm4Params.CMPCTL_LOADBMODE = 0; EPwm4Params.CMPA = 500; EPwm4Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm4Params.AQCTLA = 36; EPwm4Params.AQCTLB = 264; EPwm4Params.AQCSFRC_CSFA = 0; EPwm4Params.AQCSFRC_CSFB = 0; EPwm4Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm4Params.DBCTL_OUT_MODE = 0; EPwm4Params.DBCTL_IN_MODE = 0; EPwm4Params.DBCTL_POLSEL = 0; EPwm4Params.DBRED = 0.0; EPwm4Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm4Params.PCCTL_CHPEN = 0; EPwm4Params.PCCTL_CHPFREQ = 0; EPwm4Params.PCCTL_OSHTWTH = 0; EPwm4Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm4Params.TZSEL = 0; EPwm4Params.TZCTL_TZA = 3; EPwm4Params.TZCTL_TSB = 3; EPwm4Params.TZEINT_OST = 0; EPwm4Params.TZEINT_CBC = 0; /*--初始 ePWM4 --*/ CONFIG_ePWMRegs (EPwm4Regs、EPwm4Params); } //开始 S 函数(c280xpwm):' /ePWM5A'*/ /***初始化 ePWM5模块***/ { EPWMPARAMS EPWM5Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm5Params.CMPCTL_LOADAMODE = 0; EPwm5Params.CMPCTL_LOADBMODE = 0; EPwm5Params.CMPA = 300; EPwm5Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm5Params.AQCTLA = 36; EPwm5Params.AQCTLB = 264; EPwm5Params.AQCSFRC_CSFA = 0; EPwm5Params.AQCSFRC_CSFB = 0; EPwm5Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm5Params.DBCTL_OUT_MODE = 0; EPwm5Params.DBCTL_IN_MODE = 0; EPwm5Params.DBCTL_POLSEL = 0; EPwm5Params.DBRED = 0.0; EPwm5Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm5Params.PCCTL_CHPEN = 0; EPwm5Params.PCCTL_CHPFREQ = 0; EPwm5Params.PCCTL_OSHTWTH = 0; EPwm5Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm5Params.TZSEL = 0; EPwm5Params.TZCTL_TZA = 3; EPwm5Params.TZCTL_TSB = 3; EPwm5Params.TZEINT_OST = 0; EPwm5Params.TZEINT_CBC = 0; /*--初始 ePWM5 -*/ CONFIG_ePWMRegs (EPwm5Regs、EPwm5Params); } //开始 S 函数(c280xpwm):' /ePWM6A'*/ /***初始化 ePWM6模块***/ { EPWMPARAMS EPWM6Params; /*--设置时基(TB)子模块-*/ 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; /*--设置计数器比较(CC)子模块-*/ EPwm6Params.CMPCTL_LOADAMODE = 0; EPwm6Params.CMPCTL_LOADBMODE = 0; EPwm6Params.CMPA = 700; EPwm6Params.CMPB = 0; /*--设置动作限定符(AQ)子模块-*/ EPwm6Params.AQCTLA = 36; EPwm6Params.AQCTLB = 264; EPwm6Params.AQCSFRC_CSFA = 0; EPwm6Params.AQCSFRC_CSFB = 0; EPwm6Params.AQCSFRC_RLDSF = 0; /*--设置死区发生器(DB)子模块-*/ EPwm6Params.DBCTL_OUT_MODE = 0; EPwm6Params.DBCTL_IN_MODE = 0; EPwm6Params.DBCTL_POLSEL = 0; EPwm6Params.DBRED = 0.0; EPwm6Params.DBFED = 0.0; /*--设置事件触发器(ET)子模块-*/ 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; /*-设置 PWM-Chopper (PC)子模块-*/ EPwm6Params.PCCTL_CHPEN = 0; EPwm6Params.PCCTL_CHPFREQ = 0; EPwm6Params.PCCTL_OSHTWTH = 0; EPwm6Params.PCCTL_CHPDUTY = 0; /*--设置跳闸区域(TZ)子模块-*/ EPwm6Params.TZSEL = 0; EPwm6Params.TZCTL_TZA = 3; EPwm6Params.TZCTL_TSB = 3; EPwm6Params.TZEINT_OST = 0; EPwm6Params.TZEINT_CBC = 0; /*--初始 ePWM6 -*/ CONFIG_ePWMRegs (&EPwm6Regs、&EPwm6Params); } // *模型终止函数*/ void epwm6p_terminate (void) { /*(无需终止代码)*/ }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我写信告诉您、C2000团队成员已被分配到此帖子、应该很快回答。

    此致
    Baskaran
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您是否有机会查看 ePWM 用户指南中的配置示例? 具体而言、图56是三相逆变器的示例、其中包含您可能感兴趣的随附代码。

    最好查看 ePWM 主模块和从模块之间的配置差异、尤其是 TBCTL 寄存器的 PHSEN 和 SYNCOSEL 位。

    此致、
    Elizabeth

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这是一个很好的指导、
    我还有另一个问题、我是否可以为 CMPA 和 CMPB 提供不同的值?
    例如、我创建了一个包含200个值的数组、我希望每秒将其提供给 CMPx。
    我将数组放入函数中并在主 c 文件中调用它、但它不起作用。

    谢谢你。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、可以更改 CMPA 和 CMPB 值以修改占空比。 您可以配置计时器中断以每秒生成一次并更新中断服务例程中的 CMPx 值。

    此致、
    Elizabeth
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我将寄存器设置为:

    /***初始化 ePWM1模块***/

    EPWMPARAMS EPWM1Params;

    /*--设置时基(TB)子模块-*/
    EPwm1Params.TBPRD = 7500;
    EPwm1Params.TBCTL_CTRMODE = 2;
    EPwm1Params.TBCTL_SYNCOSEL = 3;
    EPwm1Params.TBCTL_PHSEN = 0;
    EPwm1Params.TBCTL_PHSDIR = 0;
    EPwm1Params.TBPHS = 0;
    EPwm1Params.TBCTL_HSPCLKDIV = 0;
    EPwm1Params.TBCTL_CLKDIV = 0;

    /*--设置计数器比较(CC)子模块-*/
    EPwm1Params.CMPCTL_LOADAMODE = 0;
    EPwm1Params.CMPCTL_LOADBMODE = 0;
    //EPwm1Params.CMPA = 250;
    //EPwm1Params.CMPB = 252;

    /*--设置动作限定符(AQ)子模块-*/
    EPwm1Params.AQCTLA = 384;
    EPwm1Params.AQCTLB = 576;
    EPwm1Params.AQCSFRC_CSFA = 0;
    EPwm1Params.AQCSFRC_CSFB = 0;
    EPwm1Params.AQCSFRC_RLDSF = 0;

    /*--设置死区发生器(DB)子模块-*/
    EPwm1Params.DBCTL_OUT_MODE = 3;
    EPwm1Params.DBCTL_IN_MODE = 0;
    EPwm1Params.DBCTL_POLSEL = 0;
    EPwm1Params.DBRED = 1.0;
    EPwm1Params.DBFED = 1.0;

    /*--设置事件触发器(ET)子模块-*/
    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 = 1;
    EPwm1Params.ETSEL_INTSEL = 1;
    EPwm1Params.ETPS_INTPRD = 1;

    /*-设置 PWM-Chopper (PC)子模块-*/
    EPwm1Params.PCCTL_CHPEN = 0;
    EPwm1Params.PCCTL_CHPFREQ = 0;
    EPwm1Params.PCCTL_OSHTWTH = 0;
    EPwm1Params.PCCTL_CHPDUTY = 0;

    /*--设置跳闸区域(TZ)子模块-*/
    EPwm1Params.TZSEL = 0;
    EPwm1Params.TZCTL_TZA = 3;
    EPwm1Params.TZCTL_TSB = 3;
    EPwm1Params.TZEINT_OST = 0;
    EPwm1Params.TZEINT_CBC = 0;

    /*--初始 ePWM1 --*/
    CONFIG_ePWMRegs (EPwm1Regs、&EPwm1Params);





    每次 TBCTR 等于0时、都会产生中断
    我在 DefaultIsr.c 中编写了这篇文章:

    中断空 EPWM1_INT_ISR (空) // ePWM-1

    //在此处插入 ISR 代码

    //要接收来自此 PIE 组的更多中断,请确认此中断
    // PieCtrlRegs.PIEACK.all = PIEACK_Group3;

    EPwm1Regs.ETCLR.bit.INT = 1;
    PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
    IER |= M_INT3;
    int i;
    int c[200]={250,252,257,266,278,293,312,334,360,389,421,457,496,538,583,631,683,37,7795,855、
    918,984,1053,1125,199,1275,1354,1435,1519,1605,1693,1783,1875,1968,206,2161,2260,2360,2462,2564,
    2668、2774、2880、2986、3094、3202、3311、3421、3530、3640、375038、3960、4079、4189、4298、4406、4514、4620、4726、
    4832、4936、5038、5140、5240、5339、5436、5532、5625、5717、5807、5895、5981、6065、6146、6225、6301、6137、6447、6516、
    6582、6645、6705、6763、6817、6869、6917、6962、7004、7043、7079、7111、714、7166、718、7207、7222、234、724、248、
    7250,7248,7243,7243,7234,7222,7207,7188,7166,7140,7111,7079,7043,7004,692,6917,686,6817,6763,6705,6645,
    6582、6516、6447、6375、6301、6225、6156、6065、5981、5895、5807、5717、5625、5532、5436、5339、5240、5038、4936、
    4832、4726、4620、4514、4406、4298、4189、4079、3970、3860、370、3640、3530、3421、3311、3202、3094、2986、2880、2774、
    2668、2564、2462、2360、2260、2161、2064、19668、1875、1783、1693、1605、1519、1435、1354、1275、1199、1125、1053、984、
    918,855,795,737,683,631,583,538,496,457,421,389,360,334,312,293,278,266,257,252};

    EPwm1Regs.CMPA.half.CMPA = c[i];
    EPwm1Regs.CMPB = c[i+1];
    i++;
    if (i = 200) i = 0;




    但 CMPA 的值不变。 感谢你的帮助。

    此致、
    Pouriya。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您在中断例程中声明 I。 它没有先前值的存储器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这也不起作用:
    在 c 文件中:

    void spwm (void)

    int c[200]={250,252,257,266,278,293,312,334,360,389,421,457,496,538,583,631,683,37,7795,855、
    918,984,1053,1125,199,1275,1354,1435,1519,1605,1693,1783,1875,1968,206,2161,2260,2360,2462,2564,
    2668、2774、2880、2986、3094、3202、3311、3421、3530、3640、375038、3960、4079、4189、4298、4406、4514、4620、4726、
    4832、4936、5038、5140、5240、5339、5436、5532、5625、5717、5807、5895、5981、6065、6146、6225、6301、6137、6447、6516、
    6582、6645、6705、6763、6817、6869、6917、6962、7004、7043、7079、7111、714、7166、718、7207、7222、234、724、248、
    7250,7248,7243,7243,7234,7222,7207,7188,7166,7140,7111,7079,7043,7004,692,6917,686,6817,6763,6705,6645,
    6582、6516、6447、6375、6301、6225、6156、6065、5981、5895、5807、5717、5625、5532、5436、5339、5240、5038、4936、
    4832、4726、4620、4514、4406、4298、4189、4079、3970、3860、370、3640、3530、3421、3311、3202、3094、2986、2880、2774、
    2668、2564、2462、2360、2260、2161、2064、19668、1875、1783、1693、1605、1519、1435、1354、1275、1199、1125、1053、984、
    918,855,795,737,683,631,583,538,496,457,421,389,360,334,312,293,278,266,257,252};

    EPwm1Regs.CMPA.half.CMPA = c[i];
    EPwm1Regs.CMPB = c[i+1];
    i++;
    if (i = 200) i = 0;



    在 defaltisr.c 文件中:


    中断空 EPWM1_INT_ISR (空) // ePWM-1

    //在此处插入 ISR 代码

    //要接收来自此 PIE 组的更多中断,请确认此中断
    // PieCtrlRegs.PIEACK.all = PIEACK_Group3;

    extern spwm();
    EPwm1Regs.ETCLR.bit.INT = 1;
    PieCtrlRegs.PIEACX.ALL = PIEACK_Group3;
    IER |= M_INT3;



    如何在 c/main_c 和 defaultisr.c 之间链接变量?

    此致、
    Pouriya
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    参考他们在该项目中是如何实现的。
    C:\ti\controlSUITE\device_support\F2837xS\V210\F2837xS_Examples_CPU1\ADC_SoC_ePWM_tempsensor\cpu01