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.
工具/软件:Code Composer Studio
您好;
我们使用的是280049的 ECAP 模块、我们创建了一个演示来测试。一些我们不理解的问题。
如下所 示的代码、ECAP4不能 捕获值使用 这个代码、ECAP1-3执行了。如果更改 InputXbarRegs:ECAP1使用 INPUT6、EAP2-4使用 INPUT3-5、则 ECAP1 不能 捕获值、EAP2-4 执行了。
它有什么问题?
EALLOW;
InputXbarRegs.INPUT3SELECT = 13;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;//启用 GPIO13上的上拉
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0;//同步到 SYSCLKOUT
ECap1Regs.ECCTL0.bit.INPUTSEL = 3;//选择 eCAP1至 INPU13
InputXbarRegs.INPUT4SELECT = 12;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;//启用 GPIO12上的上拉
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0;//同步到 SYSCLKOUT
ECap2Regs.ECCTL0.bit.INPUTSEL = 4;//选择 eCAP2至 INPU12
InputXbarRegs.INPUT5SELECT = 13;
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0;//启用 GPIO13上的上拉
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0;//同步到 SYSCLKOUT
ECap3Regs.ECCTL0.bit.INPUTSEL = 5;//选择 eCAP3至 INPU16
InputXbarRegs.INPUT6SELECT = 12;
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0;//启用 GPIO12上的上拉
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0;//同步到 SYSCLKOUT
ECap4Regs.ECCTL0.bit.INPUTSEL = 6;//选择 eCAP4至 INPU12
//2.Init Regs .eCAP1-4
ECap1Regs.ECEINT.ALL = 0x0000;//禁用所有捕捉中断
ECap1Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap1Regs.ECCTL1.bit.CAP1POL=0;
ECap1Regs.ECCTL1.bit.CAP2POL=1;
ECap1Regs.ECCTL1.bit.CAP3POL=0;
ECap1Regs.ECCTL1.bit.CAP4POL=1;
ECap1Regs.ECCTL1.bit.CTRST1 = 1;
ECap1Regs.ECCTL1.bit.CTRRST2 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CTRST3 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
ECap1Regs.ECCTL1.bit.CAPLDEN = 1;//启用捕捉单元
ECap1Regs.ECCTL1.bit.FREE_SOFT = 3;
ECap1Regs.ECCTL2.bit.CAP_APWM = 0;//ECAP;
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0;//启用同步输入
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2;//直通
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1;//起始计数器
ECap1Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发
ECap1Regs.ECEINT.BIT.CEVT4 = 0;// 4个事件=中断
ECap1Regs.ECCTL2.bit.STOP_Wrap = 3;
ECap2Regs.ECEINT.ALL = 0x0000;//禁用所有捕捉中断
ECap2Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap2Regs.ECCTL1.bit.CAP1POL=0;
ECap2Regs.ECCTL1.bit.CAP2POL=1;
ECap2Regs.ECCTL1.bit.CAP3POL=0;
ECap2Regs.ECCTL1.bit.CAP4POL=1;
ECap2Regs.ECCTL1.bit.CTRST1 = 1;
ECap2Regs.ECCTL1.bit.CTRRST2 = 1;//差动操作
ECap2Regs.ECCTL1.bit.CTRST3 = 1;//差动操作
ECap2Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
ECap2Regs.ECCTL1.bit.CAPLDEN = 1;//启用捕捉单元
ECap2Regs.ECCTL1.bit.FREE_SOFT = 3;
ECap2Regs.ECCTL2.bit.CAP_APWM = 0;//ECAP;
ECap2Regs.ECCTL2.bit.SYNCI_EN = 0;//启用同步输入
ECap2Regs.ECCTL2.bit.SYNCO_SEL = 2;//直通
ECap2Regs.ECCTL2.bit.TSCTRSTOP = 1;//开始计数器
ECap2Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发
ECap2Regs.ECEINT.BIT.CEVT4 = 1;// 4个事件=中断
ECap2Regs.ECCTL2.bit.STOP_Wrap = 3;
ECap3Regs.ECEINT.ALL = 0x0000;//禁用所有捕捉中断
ECap3Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap3Regs.ECCTL1.bit.CAP1POL=0;
ECap3Regs.ECCTL1.bit.CAP2POL=1;
ECap3Regs.ECCTL1.bit.CAP3POL=0;
ECap3Regs.ECCTL1.bit.CAP4POL=1;
ECap3Regs.ECCTL1.bit.CTRST1 = 1;
ECap3Regs.ECCTL1.bit.CTRRST2 = 1;//差动操作
ECap3Regs.ECCTL1.bit.CTRST3 = 1;//差动操作
ECap3Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
ECap3Regs.ECCTL1.bit.CAPLDEN = 1;//启用捕捉单元
ECap3Regs.ECCTL1.bit.FREE_SOFT = 3;
ECap3Regs.ECCTL2.bit.CAP_APWM = 0;//ECAP;
ECap3Regs.ECCTL2.bit.SYNCI_EN = 0;//启用同步输入
ECap3Regs.ECCTL2.bit.SYNCO_SEL = 2;//直通
ECap3Regs.ECCTL2.bit.TSCTRSTOP = 1;//开始计数器
ECap3Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发
ECap3Regs.ECEINT.BIT.CEVT4 = 1;// 4个事件=中断
ECap3Regs.ECCTL2.bit.STOP_Wrap = 3;
ECap4Regs.ECEINT.ALL = 0x0000;//禁用所有捕捉中断
ECap4Regs.ECCLR.ALL = 0xFFFF;//清除所有 CAP 中断标志
ECap4Regs.ECCTL1.bit.CAP1POL=0;
ECap4Regs.ECCTL1.bit.CAP2POL=1;
ECap4Regs.ECCTL1.bit.CAP3POL=0;
ECap4Regs.ECCTL1.bit.CAP4POL = 1;
ECap4Regs.ECCTL1.bit.CTRST1 = 1;
ECap4Regs.ECCTL1.bit.CTRRST2 = 1;//差动操作
ECap4Regs.ECCTL1.bit.CTRST3 = 1;//差动操作
ECap4Regs.ECCTL1.bit.CTRRST4 = 1;//差动操作
ECap4Regs.ECCTL1.bit.CAPLDEN = 1;//启用捕捉单元
ECap4Regs.ECCTL1.bit.FREE_SOFT = 3;
ECap4Regs.ECCTL2.bit.CAP_APWM = 0;//ECAP;
ECap4Regs.ECCTL2.bit.SYNCI_EN = 0;//启用同步输入
ECap4Regs.ECCTL2.bit.SYNCO_SEL = 2;//直通
ECap4Regs.ECCTL2.bit.TSCTRSTOP = 1;//开始计数器
ECap4Regs.ECCTL2.bit.rearm = 1;// ARM 单次触发
ECap4Regs.ECEINT.BIT.CEVT4 = 1;// 4个事件=中断
ECap4Regs.ECCTL2.bit.STOP_Wrap = 3;
EDIS;
谢谢!