首页 > 解决方案 > PIC18 信号测量定时器 SMT1(计数器模式)不递增

问题描述

我正在尝试在 PIC18F45K42 上使用 SMT1 来计算引脚 RB0 上的方波周期。我无法让计数器增加,不确定我做错了什么。如果我理解正确,SMT1TMR 应该增加,但事实并非如此。(我还直接检查了 SMT1TMRL 等,它没有改变)。

1)我正在尝试做一个普通的计数器,而不是门控,所以我根本没有使用 Window 信号(我不想使用它,我只想不时将计数器归零然后检查看看有多少平方周期已经到达)。

2)根据 MPLAB X 中暂停的调试器,我将寄存器设置如下(下图)。我将示波器探头直接放在引脚上,我可以看到方波正在到达。我也可以偶尔暂停调试器来读取 PORTB 并看到 PORTB.0 在高低之间变化,所以我相信它正在被接收。

3)我正在使用函数发生器产生的 20 Hz 到 400 Hz 左右的方波。

我附上了寄存器的图像。以下是参考值:

SMT1SIGPPS  0x08 (should be RB0)
SMT1CON0  0x80
SMT1CON1  0xC8
SMT1STAT   0x05
SMT1SIG    0x00
TRISB   0xE3
PMD6   0x17  (SMT1MD is 0, which should be "not disabled")

任何建议都非常感谢。这似乎应该如此简单明了。

谢谢你。

在此处输入图像描述

标签: picmicrochipmplabpic18

解决方案


我想到了。关键在数据手册 25.1.2 周期匹配中断。周期寄存器必须设置为比计数器运行时间长。它默认为 0,因此计数器无法递增。通过手动加载具有最大值的 3 个周期寄存器来修复它......将以下内容添加到我的 ini 代码中,现在似乎按预期工作。

SMT1PRU = 0xFF;     //set max period for SMT1 so counter doesn't roll over
SMT1PRH = 0xFF;
SMT1PRL = 0xFF;

推荐阅读