使用eCAP来检测方波的频率,开始的时候让单片机自己的EPWM产生50Hz的方波,检测到是50,但是当接到外在方波电路的时候就不对了,为什么呢?设置如下。。。
ECap1Regs.ECEINT.all = 0x0000; // Disable all capture interrupts禁止所有的捕获中断
ECap1Regs.ECCLR.all = 0xFFFF; // Clear all CAP interrupt flags清除所有的捕获标志位
ECap1Regs.ECCTL1.bit.CAPLDEN = 0; // Disable CAP1-CAP4 register loads禁止加载CAP1-CAP4寄存器
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0; // Make sure the counter is stopped确保计数器停止计数
ECap1Regs.TSCTR = 0;
// Configure peripheral registers
ECap1Regs.ECCTL2.bit.CONT_ONESHT = 0; // 连续触发模式
ECap1Regs.ECCTL1.bit.CAP1POL = 0; // 上升沿
ECap1Regs.ECCTL1.bit.CAP2POL = 0; // 上升沿
ECap1Regs.ECCTL1.bit.CAP3POL = 0; // 上升沿
ECap1Regs.ECCTL1.bit.CAP4POL = 0; // 上升沿
ECap1Regs.ECCTL1.bit.CTRRST1 = 0; // 不使能重新计数
ECap1Regs.ECCTL1.bit.CTRRST2 = 0; // 不使能重新计数
ECap1Regs.ECCTL1.bit.CTRRST3 = 0; // 不使能重新计数
ECap1Regs.ECCTL1.bit.CTRRST4 = 0; // 不使能重新计数
ECap1Regs.ECCTL2.bit.SYNCI_EN = 0; // 禁止
ECap1Regs.ECCTL2.bit.SYNCO_SEL = 2; // 旁路时钟
ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // 使能捕获单元加载
ECap1Regs.ECCTL1.bit.PRESCALE = 0; // 不分频
ECap1Regs.ECCTL2.bit.CAP_APWM = 0; // 运行在CAP模式下
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 0;
ECap1Regs.ECCTL2.bit.TSCTRSTOP = 1; // 开启计数器
ECap1Regs.ECCTL1.bit.CAPLDEN = 1; // Enable CAP1-CAP4 register loads
ECap1Regs.ECEINT.bit.CEVT4 = 1; |