打印
[Kinetis]

信号线接错,结帖

[复制链接]
1481|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongshan|  楼主 | 2013-12-17 10:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dongshan 于 2013-12-17 11:03 编辑

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

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


输出结果如下:


我的配置代码如下:


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

相关帖子

沙发
dongshan|  楼主 | 2013-12-17 11:03 | 只看该作者
不好意思,我线接错了,现在能正常工作了。结帖,

使用特权

评论回复
板凳
jd972594| | 2013-12-17 23:18 | 只看该作者
模拟比较器相对来说是比较简单。
但我看了下K系列的功能还是蛮丰富的。

使用特权

评论回复
地板
dirtwillfly| | 2013-12-18 17:08 | 只看该作者
解决了就好:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

79

主题

1142

帖子

7

粉丝