各位大神,Atmega16当中如何实现精准的微秒级延时

2019-03-24 20:25发布

本人正在使用Atmega16a-au芯片,利用它的中断0来获取PD2的19位输入信号,由于输入信号有着严格的周期。因此在程序里使用了延时函数进行处理,但CVAVR里面的延时函数精度不是很高,因而造成在获取信号时,越到后面的位数时间差距越大,以至于最后一位完全无法正确获取,不知哪位大神有CVavr下的atmega16a芯片的精确延时处理方法,请赐教 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
ljj3166
1楼-- · 2019-03-25 18:23
微秒级,还是考虑嵌入汇编吧。
不差钱的话,用外部时钟模块
辛昕
2楼-- · 2019-03-25 20:19
软件仿真就免了。cvavr没用过,看了下就是个破ide。
辛昕
3楼-- · 2019-03-26 02:15
 精彩回答 2  元偷偷看……
辛昕
4楼-- · 2019-03-26 07:10
100微妙,10k而已,应该很容易测,示波器最好,fluke也行。  当然,就8m系统,我觉得要这么准可能性不大,我不是说系统太慢,主要是你是调用库的,那一般都是废物,就不要指望了,估计你得自己写,用定时器还是软件延时随你喜欢。 先测吧
770781327
5楼-- · 2019-03-26 12:10
把延时周围占用时间的函数全部去了,看定时器实际计数的值误差固不固定,如果固定就说明是中间函数占用了一个固定的时间,正常us级这个也是固定
Li_Lei
6楼-- · 2019-03-26 16:48
us级的东西建议你想别的办法吧,软延时要关中断才能准,这样会把单片机拖累的干不了别的.
你为什么不用定时器捕获信号呢?

一周热门 更多>