高中生
最后登录1970-1-1
在线时间 小时
注册时间2015-1-30
|
弄了三天的红外遥控,终于成功了。
发现红外对时间的掌握太严谨了,我想把time时间的值给打印出来,整个程序就出现问题了。一个打印花了几微秒的时间,然后中断判断时间那里就判断失误。
我没用stm32,弄了stm8s的,移植火哥的红外程序。
起初我是直接看代码移植的,没在stm32上试。
第二天的时候,我就用stm32上试,直接下载火哥的程序,想吧time的时间打印出来,发现遥控都打印不出来,我还以为火哥的程序有问题呢。(哈哈~)
今天才发现原来一条代码延误了这么多时间(对于单片机和红外来说很久了0rz....)。
发现了一些问题,还没有解决。
1.定时器(详情看图)
我不知道是不是我算错了,感觉时间跟我定时器的时间对不上,时间也设置的跟火哥的时间是一致的,就是不知道是不是我算错了
我说下我算的思路(我跟着他例程算的)。
首先分频,时钟是16M的,16分频,就等于1M,然后计算最小时机,1/1000000=0.000001s=0.001ms=1us。
本来打算就设置成1us定时的,可是不知道为什么,在设置周期的时候,设置成1他不能定时,无奈只能2us开始了。
(知道答案的请告诉我啊,我都不知道我错在哪了。)
2.获取时间(详情看图)
在中断的获取时间却偏偏不是按我想的那样。
前导码就开始有问题了,我中断查看前导码的值却是0x41,计算65次,65x20=1300=1.3ms,(测了好几次,在64~65之间)明显不是4.5ms,可是我的示波器看了下,时间是对的,所以就是说,定时器不知道为什么没有我预想的时间。
(知道答案的请告诉我啊,我都不知道我错在哪了。)
3.计算时间
根据4.5ms=65,推算出一次计算时间=70us,然后分别算出
4ms~4.5ms
0.56ms: 0.2ms~1ms
1.68ms:1ms~2ms
2.1ms:2ms~4ms分别是请看图)。
|
|