标题:
两个单片机uart串口通信用内部时钟导致定时器计时波特率不准?
[打印本页]
作者:
中奥ol
时间:
2022-6-27 14:59
标题:
两个单片机uart串口通信用内部时钟导致定时器计时波特率不准?
用的是内部时钟,定时器计时时间一会慢一会快,串口中断是不定时的,是不是这个原因导致定时器计时不准,有没有什么办法能解决这个问题呢?
作者:
mornbin
时间:
2022-6-27 16:37
首先需看下差异有多大,正常都会有一定误差的;其次看下中断处理函数是否占用太多处理资源,可通过置位标志位,然后中断外处理
作者:
Hephaestus
时间:
2022-6-27 17:52
你先把串口断开,看看定时器准不准不就知道了吗?
作者:
Y_G_G
时间:
2022-6-27 19:29
定时器时间怎么会一会快,一会慢呢?
一般来说,误差多少是有点的,但绝大多数单片机的内部RC时钟是可以满足串口通讯的时钟要求的
一个定时器如果是用作串口通讯的波特率时钟,那么,这个定时器就不要再用作其它的功能了
作者:
大漠落日
时间:
2022-6-28 14:57
加上外晶振,测试程序正常,说明可能是这个原因,如果用外晶振,还有错码,就可能是程序的原因了。
作者:
meiryfu
时间:
2022-6-28 16:03
定时器不准。与你的硬件设计有关。检测MCU的GPIO口是不是接入了5VDC(MCU工作电压3.3VDC)信号。这个问题我遇到过相同的问题。
作者:
meiryfu
时间:
2022-6-28 16:04
检测硬件设计
作者:
大漠落日
时间:
2022-6-28 17:51
有些单片机定时器与看门狗用的时钟源会有冲突
作者:
kmsj
时间:
2022-6-29 11:59
我用AVR和STC单片机内部RC振荡器完成的串口通讯非常稳定,担心有问题,做了温度测试,结果是20几度到60度左右,串口通讯的误差都没有超过1%,所以,楼主定时器计时时间一会慢一会快,与内部RC振荡器没有关系,就算改用外部晶体,这个问题依然存在。建议楼主把需要要完成的任务按模块编写程序,要求就是完成这些模块的主程序、子程序、中断程序互相不要干扰,楼主的问题也就解决了。比如我的外部中断是过零触发可控硅,为了读出两个18B20的温度互相不受干扰,我就把读两个18B20的程序安排在外部中断执行过零触发可控硅之后,并且按步数读出,一共十八步读出两个温度,发送数据也是安排在外部中断执行过零触发可控硅之后,每进入一次中断只发一位数据,接收数据也是在空闲处打开接收允许立即接收数据然后就关闭接收允许,串行口用的定时器是自动重装,不存在处理任何程序问题,我就做到了过零触发、18B20、串口收发,还有HX711、数码管、按键去抖动这些程序互相没有影响,所有程序是互相支持的关系,而不是互相依赖。
作者:
luzy666
时间:
2022-6-30 17:18
检查一下硬件设计
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1