Microchip
直播中

陈思远

8年用户 207经验值
私信 关注
[问答]

PIC24f中的32位定时器超时问题怎么解决

你好,我用的是PIC24FJ128GA310。我正在尝试使用32位定时器(time2和3)来进行大延迟/计数。下面是我的32位定时器的配置代码。当我使用这个计时器作为延迟的目的时,它工作得很好,但是当我尝试使用同一个定时器来实现超时的目的时,即设置定时器值进入循环做。当时间匹配中断占用循环或在下面的EXP中设置定时器和等待UART接收。超时值不会每次都出现。如果设置为15秒,有时它会在11秒或17秒超时。请给出建议使用超时时间来定制时间。

回帖(12)

沈汝

2020-4-23 07:07:30
但是一旦TMR匹配的周期寄存器的值,我可以清除它,并且如果我再次想要计时器,再次设置它,是不是正确?你有什么建议?现在我每次都清理它,然后再把它放在我想要的任何时间。
举报

沈汝

2020-4-23 07:20:31
如果您看到我发布的示例,如果响应在超时之前收到,那么我正在使用._Timer32bit()清除计时器,但是当超时到达ISR时,ISR正在清除TMR寄存器,这是不正确的。我应该如何阻止ISR中的计时器?我的问题是,当我进入循环执行某个任务时,我没有得到适当的超时,但是当我只是等待让计时器达到周期值时,它工作得很好。
举报

黄飞高

2020-4-23 07:31:45
如果您还没有这样做,请将变量Time32位标志设置为易失性。我看不出它在哪儿定义。如果不定义并使用优化,则存在变量被本地放入寄存器中,处于紧密循环中,并且只测试寄存器的风险,而不会注意到实际变量和中断例程对它的更改。
举报

沈汝

2020-4-23 07:44:39
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

更多回帖

发帖
×
20
完善资料,
赚取积分