[Kinetis] 信号线接错,结帖

[复制链接]
2010|3
 楼主| dongshan 发表于 2013-12-17 10:08 | 显示全部楼层 |阅读模式
本帖最后由 dongshan 于 2013-12-17 11:03 编辑

本来打算是用比较器来作为定时器模块的的捕捉输入信号,然后计算信号频率。 实际使用中发现定时器的捕捉中断不停的发生,怀疑是比较器模块出了问题。 于是,单独写了一个测试程序来测试比较器模块, 比现不能正常工作。

我的输入信号是这样的,一个传感器信号和一个直流偏移,进入比较器,进行比较,判断过零,并计算频率。信号如下:
input.jpg

输出结果如下:
result.jpg

我的配置代码如下:
config.jpg

实际的代码如下:
  1. static void CMP0_Init(void)
  2. {
  3. /* SIM_SCGC4: CMP=1 */
  4. SIM_SCGC4 |= SIM_SCGC4_CMP_MASK;
  5. /* CMP0_CR1: SE=0,WE=0,??=0,PMODE=0,INV=0,COS=0,OPE=0,EN=0 */
  6. CMP0_CR1 = 0x00U;
  7. /* CMP0_CR0: ??=0,FILTER_CNT=0,??=0,??=0,HYSTCTR=0 */
  8. CMP0_CR0 = (CMP_CR0_FILTER_CNT(0x00) | CMP_CR0_HYSTCTR(0x00));
  9. /* CMP0_MUXCR: ??=0,??=0,PSEL=0,MSEL=0 */
  10. CMP0_MUXCR = (CMP_MUXCR_PSEL(0x00) | CMP_MUXCR_MSEL(0x00));
  11. /* CMP0_FPR: FILT_PER=0xC8 */
  12. CMP0_FPR = CMP_FPR_FILT_PER(0xC8);
  13. /* CMP0_CR1: SE=0,WE=0,??=0,PMODE=0,INV=0,COS=0,OPE=1,EN=0 */
  14. CMP0_CR1 = CMP_CR1_OPE_MASK;
  15. /* CMP0_SCR: ??=0,DMAEN=0,??=0,IER=1,IEF=0,CFR=1,CFF=1,COUT=0 */
  16. CMP0_SCR = (CMP_SCR_IER_MASK | CMP_SCR_CFR_MASK | CMP_SCR_CFF_MASK);
  17. /* CMP0_CR0: ??=0,FILTER_CNT=3,??=0,??=0,HYSTCTR=3 */
  18. CMP0_CR0 = (CMP_CR0_FILTER_CNT(0x03) | CMP_CR0_HYSTCTR(0x03));
  19. /* CMP0_MUXCR: ??=0,??=0,PSEL=1,MSEL=0 */
  20. CMP0_MUXCR = (CMP_MUXCR_PSEL(0x01) | CMP_MUXCR_MSEL(0x00));
  21. /* CMP0_CR1: EN=1 */
  22. CMP0_CR1 |= CMP_CR1_EN_MASK;
  23. }
请问下这是怎么回事呢,比较器模块应不算复杂的模块,所以不知道从什么地方找原因了。

 楼主| dongshan 发表于 2013-12-17 11:03 | 显示全部楼层
不好意思,我线接错了,现在能正常工作了。结帖,
jd972594 发表于 2013-12-17 23:18 | 显示全部楼层
模拟比较器相对来说是比较简单。
但我看了下K系列的功能还是蛮丰富的。
dirtwillfly 发表于 2013-12-18 17:08 | 显示全部楼层
解决了就好:)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

1144

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部