原创 转:单片机模拟38K红外载波注意事项;

2010-4-21 11:28 3252 8 9 分类: MCU/ 嵌入式

转自:http://blog.21ic.com/user1/2114/archives/2010/68181.html



为什么用定时器调38kHz老不稳?


推荐最近自己搞红外线玩,想用载波,却发现用定时器调的38kHz老不稳。想来想去,肯定是这样做有问题,但没弄明白是什么问题。在某论坛发现一哥们对别人帖子的回复给了我完美的答案。回复如下:


 


如果你用于民用产品,这并没什么问题,但你做工业级甚至军工级产品时(军工级不等于用于真的用于军工),这里面其实有些问题存在:


51单片机要响应一个中断,必须要执行完当前正在执行的指令,而当前执行的指令从1机器周期到4个机器周期不等,假如你的主频高,这个时间可以忽略,但你用的是11059K晶振,这就意味着在中断响应时,会有1~4uS的不固定延迟.
虽然你使用了自动重装方式,可以精确地保证平均周期与预期值相等,但实际产生的波形是宽的宽窄的窄,相当于在38K基频上混入了一个随机噪声频谱(26uS+-2uS),它带来的效果不清楚,也许是通信距离缩短.


很多工业控制程序里,在某些区域会大量使用NOP指令,为的就是在中断发生的前后正好执行到nop区域,保证时序的精确.


很多产品的检测比较严格,别等产品的规模测试都做完了,以为没啥事了,结果却被这些细枝末节的小问题郁闷个好些天.


这并不是什么大问题,只是我认为做硬件必须养成严谨的习惯,所以把这些细节分享给大家.


原因的确如这位哥们说的那样,51指令在执行的过程中会给中断带来随机的延时。我做了一个反推理,写了一个程序,只做脉冲输出口自动反转,别的什么也不干,此时再用示波器测出来的38kHz就相当的稳了,基本在0.5kHz以内跳动。


我想调38kHz还是另想他法吧。


 
 
 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1243370 2010-12-6 14:41

高手啊,菜鸟崇拜中

用户224198 2010-4-21 16:35

又长知识了,呵呵
相关推荐阅读
用户1406704 2010-10-04 20:02
Goodbye,War3......
War3一些年一直是我的娱乐的全部6年前第一次被同学带着玩RPG后就被它常常的吸引了之后的6年我花了大量的时间在War3上尽管水平一般鄙人只在HF上混迹尽管我一直明白一个道理对我而言War3和工作学习...
用户1406704 2010-03-20 13:10
男女 女人 猪
逛论谈无意中看到的,娱乐一下,呵呵;人=吃饭+睡觉+上班+玩, 猪=吃饭+ 睡觉,代入:人=猪+上班+玩,即:人-玩=猪+上班.结论:不懂玩的人=会上班的猪 男人=吃饭+ 睡觉+挣钱 , 猪=吃饭+ ...
用户1406704 2010-01-30 16:50
转--让你的MPLAB好用起来!
让你的MPLAB好用起来!很多人抱怨,MPLAB 编辑功能不方便,很多功能没有。其实不然。。。。 1.打开 edit\properties菜单,选C File Types,取消Double click...
用户1406704 2009-12-21 10:56
IR红外接收,通过串口发送与1602显示接收码
IR红外接收,通过串口发送与1602显示接收码 程序已经通过调试,直接可在51-study学习板上使用,在其它板上请更改相应的端口;源程序与参考资料: 效果图:手机拍得图片,效果太差了,大家凑合着看下...
用户1406704 2009-12-20 10:21
ps_2简单驱动及PS参考资料
ps_2简单驱动源程序:参考资料:...
EE直播间
更多
我要评论
1
8
关闭 站长推荐上一条 /3 下一条