主题中讨论的其他器件:C2000WARE
工具/软件:Code Composer Studio
大家好、我想问您一些 ECAP 问题
嗯、我需要获取上升沿和下降沿中断、但我认为只发生上升中断...
您能告诉我如何获取这两个中断吗?
空 InitECapture1()
{
ECap1Regs.ECEINT.ALL = 0x0000;//禁用 eCAP1上的所有中断
ECap1Regs.ECCLR.ALL = 0xFFFF;//清除 eCAP1的所有中断标志
ECap1Regs.TSCTR = 0;//将时间戳计数器设置为0
ECap1Regs.CTRPHS = 0;//将时间戳计数器相位寄存器设置为0
ECap1Regs.CAP1 = 0;//将捕捉寄存器1设置为0
ECap1Regs.CAP2 = 0;//将捕捉寄存器2设置为0
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;//确保计数器被停止
ECap1Regs.ECCTL1.bit.CAPLDEN = 0;//启用 CAP1-CAP4寄存器加载
ECap1Regs.ECCTL1.bit.FREE_SOFT = 2;//计数器在仿真挂起时不会停止
ECap1Regs.ECCTL1.bit.prescale = 0;//预分频设置为1分频
ECap1Regs.ECCTL1.bit.CAP1POL = 0;// CAP1寄存器将在上升沿进行捕捉
ECap1Regs.ECCTL1.bit.CAP2POL = 1;// CAP2寄存器将在下降边沿捕捉
ECap1Regs.ECCTL1.bit.CTRST1 = 1;//捕获事件后的复位计数器1.
ECap1Regs.ECCTL1.bit.CTRST2 = 1;//捕捉事件2上不复位计数器
ECap1Regs.ECCTL2.bit.CAP_APWM = 0;//启用 ECAP 模式
ECap1Regs.ECCTL2.bit.STOP_Wrap = 3;//在单次模式下捕获事件1后自动换行
ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0;//在连续模式下运行
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2;//同步输出信号被禁用
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;//同步输入被禁用
ECap1Regs.ECEINT.BIT.CEVT1 = 0;//启用1个中断
ECap1Regs.ECEINT.BIT.CEVT2 = 1;//启用2个中断 TRSTOP = 1;//启动计时器计数器
// ECap1Regs.ECCTL1.bit.free_soft = 2;//计数器不受仿真模式的影响
//
// PieCtrlRegs.PIEACK.bit.ACK4 = 1;//启用 PIECTRL 的 Group4.x 中断
}
_interrupt void H1 (void){
posH1++;
ECap1Regs.ECCLR.bit.CEVT1 = 1;
ECap1Regs.ECCLR.bit.CEVT2 = 1;
ECap1Regs.ECCLR.bit.INT = 1;//通知中断被清除
ECap1Regs.ECCTL2.bit.rearm = 1;
PieCtrlRegs.PIEACX.ALL = PIEACK_group4;
}