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.

[参考译文] 那么、在 f28377上、初始化 PWM ECAP 和外部中断时会出现什么问题、不会生成 PWM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/855597/so-what-is-the-problem-with-initializing-pwm-ecap-and-external-interrupts-no-pwm-is-generated-on-f28377s

/*全局(在其他文件中调用)*/
extern void int_rx_mnm1221_m (void);//在 INTRX 中断中使用*/
extern short ctrl_m1221_m (void);//在计时器中断中使用 nc */

__interrupt void x_isr (void){_mctrlecclr_m121_ect1.pecrc.eecrbt



=
void = v3ctrap.ecrc.eecrc.p3rc.pecrb.clrb.eecrb.ecr3;= void




ECap3Regs.ECCLR.bit.CEVT4 = 1;
ECap3Regs.ECCLR.bit.INT = 1;

PHASE_MONITOR = CTRL_m1221_m ();

//确认此中断以接收来自组3
的更多中断 PieCtrlRegs.PIEACk.all = PIEACK_group4;
}

SHORT MONITOR PHASE (void)
{
RETURE_MONITOR;
}

static void InitEPwm5 (






PRD){EALLOW;CIEACK_group4;}short MONITOR (void)= 0xTBRAP0000.TBR0/ TBR0.TBR0.Tbt = TBR0.Tb0.Tbt = TBR0.Tb0.TPCRd.Tbt = Tbt

EPwm5Regs.AQCTLA.bit.PRD = AQ_TOGGLE; //打开 PRD //


// TBCLK = SYSCLKOUT
//
EPwm5Regs.TBCTL.bit.HSPCLKDIV = 1;
EPwm5Regs.TBCTL.bit.CLKDIV = 0;

//EPwm5TimerDirection = ePWM_TIMER_UP;

EALLAN.0=0




;void SYECKCR0=0=0;EAPCLKCR0=0;ECC0=0=0;ECLKINT.TBIT.TCLKCR0=0=0=0

//禁用所有捕捉__interrupts
ECap3Regs.ECCLR.ALL = 0xFFFF; //清除所有 CAP __interrupt 标志
ECap3Regs.ECCTL1.bit.CAPLDEN = 0; //禁用 CAP1-CAP4寄存器载入
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 0; //确保计数器被停止

//
配置外设寄存器
//
ECap3Regs.ECCTL2.bit.CONT_ONESHT = 1;//一次性
ECap3Regs.ECCTL2.bit.STOP_Wrap = 3; //在4个事件时停止
ECap3Regs.ECCTL1.bit.CAP1POL=1; //下降边沿
ECap3Regs.ECCTL1.bit.CAP2POL=0; //上升沿
ECP3Regs.ECCTL1.bit.CAP3POL=1; //下降边沿
ECap3Regs.ECCTL1.bit.CAP4POL=0; //上升沿
ECap3Regs.ECCTL1.bit.CTRST1 = 1; //差动操作
ECap3Regs.ECCTL1.bit.CTRST2 = 1; //差动操作
ECap3Regs.ECCTL1.bit.CTRST3 = 1; //差动操作
ECap3Regs.ECCTL1.bit.CTRST4 = 1; //差动操作
ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; //在
ECap3Regs.ECCTL2.bit.SYNCO_SEL 中启用 SYNC = 0; //通过
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; //启用捕捉单元

ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; //起始计数
器 ECap3Regs.ECCTL2.bit.rearm = 1; // arm 一次性
ECap3Regs.ECCTL1.bit.CAPLDEN = 1; //启用 CAP1-CAP4寄存器加载
ECap3Regs.ECEINT.BIT.CEVT4 = 1; //4个事件=__interrupt
}

//-------------------
static void Ctrlinit (void)
{
EALLOW;

GpioDataRegs.GPACLEAR.all= 0x3900ul;
//GpioDataRegs.GPASET.BIO8= 1;GpioDataRegs.GPO8 = 1;
GpioRegs.GPO16 =


GPIPO1.G16






位 GPOreg.GPO1.GPO1.GPO1.G16 = GPPIO1.GPO1.GPO1.GPO1.G16位 GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.GPO1.



// ccs0 = GPIO32
GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0;
GpioCtrlRegs.GPUX1.bit.GPIO32 = 0;
GpioDataRegs.GPBDAT.BIM32 = 1;GpioRegs.GPBMBOL.GPIO34


= GPIO3.Gpio34






= GPIO32.GPB34位 GPB34 = GPBDIO32.GPB34位 GPB34位 GPOL.GPIOL.GPIOL.GPIO32.GPB34 = GPB34位 GPB34位 GPOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIOL.GPIO




//








UUD = GPIO28 GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;GpioDataRegs.GPADD.bit.GPIO28 = 0;GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;GpioCtrlRegs.GPDIR.bit.GPIO28 = 0;GPIO13 = 0 = 0 = 1;GPIO13 = 1;GPO13 = 0
= 1;GPO13 = 0 = 1;GPO13 = 1;GPIO13 = 0 = 1;GPO13 = 1 = 1;GPO13 = 1;GPO13 = 0 = 1;GPO13 = 1 = 1;GPO13 = 1 = 1
// GPIO13 = GPIO13
GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;// GPIO13 =输出

//初始化 pwm和ecap
InitEPwm5Gpio ();
InitECap3Gpio (9);
GPIO_SetupPinOptions (9、GPIO_INPUT、GPIO_ASYNC_Async);

EALLOW;//这是写入 EALLOW 受保护寄存
器 PieVectTable.ECAP3_INT =&ecap3_ISR;
EDIS;//这是禁用写入 EALLOW 受保护寄存器

InitEPwm5 ();
InitECap3 ();


//XINTRX = GPXINTRX = GPIO10_INTRI


;InetX10

= GPIO10_INTRI = GPIO10_INTRI;InetX10 INTRI = INT.InetX10;InetXINT.InT.InetXINT.InT.InetX10;输入 // XINT1连接到 GPIO10
XintRegs.XINT1CR.bit.polarity = 1;
XintRegs.XINT1CR.bit.enable = 1;

//将 GPIO48配置为 GPIO 输出引脚
EALLOW;
GpioBdlRegs.GPBMUX2.bit.GPIO48 = 0;
GpioR=1|GPIOR.GPIOR=1| GPIOR.GPIOR.GPIOR.GPIOR.GPIOR.GPIOR.GPIOR.GPIO48= 1
;


//PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
IER |= M_INT4;
PieCtrlRegs.PIEIER4.bit.INTx3 = 1;

EINT;
ERTM;

CreateSysTimerInterface()->Start (inport、2U);
} 

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

    您好!

    您是否已将 EPWM5A GPIO 引脚配置为 PWM 输出? 此外、还需要详细说明确切的问题。

    如果我的回复回答了您的问题、请点击位于我帖子底部的"我的问题已解决"按钮。

    此致

    Himanshu

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

    您好!

    连接8个引脚和9个引脚。 作为 PWM 和 ECAP、仅调用这些函数。 您是否需要其他设置?

    InitEPwm5Gpio();
    InitECap3Gpio(9);
    GPIO_SetupPinOptions (9、GPIO_INPUT、GPIO_异 步);

    EALLOW;//这是写入 EALLOW 受保护寄存器所必需的
    PieVectTable.ECAP3_INT =&ecap3_ISR;
    EDIS;//这是禁止写入 EALLOW 受保护寄存器所必需的

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

    您好!

    是的、如果您可以提供示例的总体方框图或有关所需配置的更多详细信息、则进行调试会很有帮助。  

    如果我的回复回答了您的问题、请点击位于我帖子底部的"我的问题已解决"按钮。

    此致

    Himanshu