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.

请教28335用用Ecap引脚产生PWM波形,有时候能出来,有时候出不来,不知道为何



例程我也都看了,也就是按照例程写的

void initcap()

{

// ECAP module 2 config
ECap2Regs.CAP1 = 3600; // Set period value
ECap2Regs.CAP2 = 700; // Set Compare value
ECap2Regs.CTRPHS = 0; // Phase offset
ECap2Regs.ECCTL2.bit.CAP_APWM = 1;
ECap2Regs.ECCTL2.bit.APWMPOL = 0;
ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;// No sync in for Master
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 1;// eCAP2 is Master
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1; // Allow TSCTR to run
// ECAP module 3 config
ECap3Regs.CAP1 = 3600; // Set period value
ECap3Regs.CAP2 = 700; // Set Compare value
ECap3Regs.CTRPHS = 1200; // Phase offset
ECap3Regs.ECCTL2.bit.CAP_APWM = 1;
ECap3Regs.ECCTL2.bit.APWMPOL = 0;
ECap3Regs.ECCTL2.bit.SYNCI_EN = 1; // slaved off master
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 0; // sync "flow-through"
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1; // Allow TSCTR to run
// ECAP module 4 config
ECap4Regs.CAP1 = 3600; // Set Period value
ECap4Regs.CAP2 = 700; // Set Compare value
ECap4Regs.CTRPHS = 2400; // Phase offset
ECap4Regs.ECCTL2.bit.CAP_APWM = 1;
ECap4Regs.ECCTL2.bit.APWMPOL = 0;
ECap4Regs.ECCTL2.bit.SYNCI_EN = 1; // slaved off master
ECap4Regs.ECCTL2.bit.SYNCO_SEL = 2; // "break the chain"
ECap4Regs.ECCTL2.bit.TSCTRSTOP = 1; // Allow TSCTR to run

ECap2Regs.ECEINT.bit.CTR_EQ_CMP = 1; // enable Compare Equal Int

}

中断函数

interrupt void ecap2_isr(void)
{
//--------------------- Write Code here ------------------------
ECap2Regs.CAP2 = 700; // Set Compare value
ECap3Regs.CAP2 = 700; // Set Compare value
ECap4Regs.CAP2 = 700; // Set Compare value
//------------------------- End code ---------------------------
ECap2Regs.ECCLR.bit.CTR_EQ_CMP = 1;//Clear the INT flag
ECap2Regs.ECCLR.bit.INT = 1;//Clear the INT flag
PieCtrlRegs.PIEACK.all = PIEACK_GROUP4;// 应答此中断,以便从Group 4中接收更多的中断
}