请教关于PIC16F72实时时钟问题

[复制链接]
3432|17
 楼主| wenzong 发表于 2008-10-15 11:20 | 显示全部楼层 |阅读模式
使用PIC16F72的TMR1实时时钟时,发现TMR1实时时钟很多停振,有的换掉单片机,或者换掉晶体可解决问题。<br /><br />现想用TMR1内部时钟来做电子钟<br />具体做法如下:<br /><br />主时钟:4M<br /><br />每隔31.25ms产生一次中断<br /><br />后给TMR1赋初值:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PIR1,TMR1IF<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bcf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CON,TMR1ON<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;&nbsp;&nbsp;low(T1_Const)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addwf&nbsp;&nbsp;&nbsp;&nbsp;TMR1L<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;movlw&nbsp;&nbsp;&nbsp;&nbsp;high(T1_Const)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;skpnc&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addlw&nbsp;&nbsp;&nbsp;&nbsp;.1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;addwf&nbsp;&nbsp;&nbsp;&nbsp;TMR1H<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bsf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1CON,TMR1ON&nbsp;<br /><br /><br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T1_Const&nbsp;&nbsp;&nbsp;&nbsp;(.65536-.31250+.7)<br /><br />不知可不可以?<br /><br />谢谢<br /><br /><br />
yewuyi 发表于 2008-10-15 11:44 | 显示全部楼层

请不要动TMR1的计数值,如果你想用他做RTC的话 。。。

  
 楼主| wenzong 发表于 2008-10-15 12:50 | 显示全部楼层

仿真没有问题,为何不能这样做?

  
yewuyi 发表于 2008-10-15 13:01 | 显示全部楼层

可能不准了罢。。。

  
 楼主| wenzong 发表于 2008-10-15 13:51 | 显示全部楼层

yewuyi老兄,不准?原因呢?

yewuyi老兄,不准?原因呢?<br /><br />张兄的书210页
yewuyi 发表于 2008-10-15 14:58 | 显示全部楼层

~~

如果你的软件处理的好,也没什么问题,所以我只是说了‘可能’:<br /><br /><br />yewuyi&nbsp;发表于&nbsp;2008-10-15&nbsp;13:01&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />4楼:&nbsp;可能不准了罢。。。&nbsp;<br /><br /><br /><br />自然震荡不去动它的值,就会少点麻烦,否则就要注意点,免得引起麻烦。。。<br /><br />你的晶体是不是质量不大好?呵呵,可能起振困难造成的。。。
 楼主| wenzong 发表于 2008-10-15 15:06 | 显示全部楼层

精度30ppm的晶体,误差还是很大

一天:3600*24=86400(s)<br /><br />一天误差:86400*30/1000000=2.592(s)<br /><br />一月误差:2.592*30=77.76(s)<br /><br />一年误差:77.76*12=933.12(s)=15.552(m)<br />
 楼主| wenzong 发表于 2008-10-15 15:21 | 显示全部楼层

另外晶体旁边的两个电容对晶体的频率影响大吗?

  
yewuyi 发表于 2008-10-15 17:19 | 显示全部楼层

那两个电容对频率的影响需要看晶体的技术参数

一般估算在0.02%内,但那两个电容对晶体的起振也有影响。。。
 楼主| wenzong 发表于 2008-10-15 18:56 | 显示全部楼层

晶体的负载电容20p,晶体旁边的两个电容值应为多少?

晶体的负载电容为20p,晶体旁边的两个电容值应为多少?<br /><br />10p还是40p?<br /><br />应如何配置c1和c2值,使晶体的频率更准确?<br /><br />用100M数字示波器测OSC2脚输出波形的频率为4.00008Hz<br /><br />实际晶体的频率为多少?(因为示波器有输入电容)<br /><br />
yewuyi 发表于 2008-10-16 08:37 | 显示全部楼层

~~,呵呵,你可以用5PPM的晶体,如果你银子够的话

&nbsp;wenzong&nbsp;发表于&nbsp;2008-10-15&nbsp;15:06&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />7楼:&nbsp;精度30ppm的晶体,误差还是很大&nbsp;<br /><br />一天:3600*24=86400(s)<br /><br />一天误差:86400*30/1000000=2.592(s)<br /><br />一月误差:2.592*30=77.76(s)<br /><br />一年误差:77.76*12=933.12(s)=15.552(m)<br />&nbsp;<br />&nbsp;<br />
谈的元 发表于 2008-10-16 21:06 | 显示全部楼层

软件补偿修正30PPM。可以提高一些精度

  
 楼主| wenzong 发表于 2008-10-17 08:20 | 显示全部楼层

软件补偿修正30PPM。可以提高一些精度?

软件补偿修正30PPM。可以提高一些精度?<br /><br />如何做,请示下。<br /><br /><br /><br /><br />谈的元&nbsp;发表于&nbsp;2008-10-16&nbsp;21:06&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />12楼:&nbsp;软件补偿修正30PPM。可以提高一些精度&nbsp;<br /><br />&nbsp;<br />
谈的元 发表于 2008-10-17 20:32 | 显示全部楼层

就是用比较高精度的设备 测量其频率,再写到MCU中

  
 楼主| wenzong 发表于 2008-10-17 21:00 | 显示全部楼层

做试验还行,怎么批量生产?

做试验还行,怎么批量生产?<br /><br /><br />谈的元&nbsp;发表于&nbsp;2008-10-17&nbsp;20:32&nbsp;PIC&nbsp;单片机&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />14楼:&nbsp;就是用比较高精度的设备&nbsp;测量其频率,再写到MCU&nbsp;<br />
xieyuanbin 发表于 2008-10-18 08:12 | 显示全部楼层

批量,对时间要求比如秒之类的比较高的话.

可以用非整数的晶振,比如32768之类的,然后用微调负载电容的方法生产.
谈的元 发表于 2008-10-18 18:56 | 显示全部楼层

批量:MCU一个脚输出一个频率,设备读取它,再

与MCU通信,将需要补偿的值告诉他,MCU再存在EEPROM,以后读取。
兰天白云 发表于 2008-10-19 20:57 | 显示全部楼层

xieyuanbin:负载电容影响精度还是???

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

158

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部