PIC18信号测量定时器SMT1(计数器模式)未递增

问题描述 投票:0回答:1

我正在尝试在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")

任何建议,不胜感激。看起来应该是如此简单和直接。

谢谢。

enter image description here

pic microchip mplab pic18
1个回答
0
投票

我知道了。关键在数据表25.1.2周期匹配中断中。周期寄存器必须设置得比计数器运行的时间更长。默认为0,因此计数器无法递增。通过手动加载3个周期寄存器的最大值来解决此问题...在我的ini代码中添加了以下内容,现在似乎可以正常工作。

SMT1PRU = 0xFF;     //set max period for SMT1 so counter doesn't roll over
SMT1PRH = 0xFF;
SMT1PRL = 0xFF;
© www.soinside.com 2019 - 2024. All rights reserved.