- UID
- 114293
|
使用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; |
|