求教PIC单片机定时器如何精确计时

2020-02-08 09:09发布

最近在弄U2270B,需要对曼码解码,使用PIC16F946芯片的定时器2进行计时,但我发现有时计时不准,真是恼火,设定的阈值总是改来改去的。
对脉冲的高低电平进行计时,算出编码的。大家有木有好的意见??
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
surf_131
1楼-- · 2020-02-09 21:10
 精彩回答 2  元偷偷看……
hmsfeng
2楼-- · 2020-02-09 22:59
surf_131 发表于 2012-6-27 14:43
我的意思是,TMR2IF每次溢出都会置1,不给TMR2IE就不发生中断。溢出后TMR2继续以确定周期累加计数,不因 ...

可是我需要知道每次高低电平的时间,只读溢出标志不能确定高低电平时间啊。
surf_131
3楼-- · 2020-02-10 04:32
hmsfeng 发表于 2012-7-3 19:59
可是我需要知道每次高低电平的时间,只读溢出标志不能确定高低电平时间啊。 ...

这个周期应该是你预判的码速率。你不必每次都重新进行计数。而且,这是你通过MCU能够知道的最准的时间了。
我们假定你知道数据的码速率,也就是波特率。这样,只要你每次在发生该TMR中断时检查端口电平,就知道该位是0还是1。你不必每次都寻找电平翻转的边沿。最多在找到第一个边沿时给TMR预设值一半的初始值,然后每次都在溢出时读电平。如果你的时钟与发送时钟有偏差,那也是积累很久才有一次“滑码”误差。
surf_131
4楼-- · 2020-02-10 08:41
打个比方。每次在电平翻转后重启TMR,就相当于零售布匹,每次都从布边缘开剪,这样误差会连续累积。我说的这种办法相当于把无限长的布匹摊开,每次在标定的位置剪一刀,这样误差不会累积。
hmsfeng
5楼-- · 2020-02-10 09:36
surf_131 发表于 2012-7-3 20:31
打个比方。每次在电平翻转后重启TMR,就相当于零售布匹,每次都从布边缘开剪,这样误差会连续累积。我说的 ...

如你所说,这个波形不是标准速率,因此就需要每次都判断。
我这是要解码U2270B输出的曼码。这个不是标准速率的,有时差。
surf_131
6楼-- · 2020-02-10 11:35
 精彩回答 2  元偷偷看……

一周热门 更多>