標(biāo)題:
兩個(gè)單片機(jī)uart串口通信用內(nèi)部時(shí)鐘導(dǎo)致定時(shí)器計(jì)時(shí)波特率不準(zhǔn)?
[打印本頁]
作者:
中奧ol
時(shí)間:
2022-6-27 14:59
標(biāo)題:
兩個(gè)單片機(jī)uart串口通信用內(nèi)部時(shí)鐘導(dǎo)致定時(shí)器計(jì)時(shí)波特率不準(zhǔn)?
用的是內(nèi)部時(shí)鐘,定時(shí)器計(jì)時(shí)時(shí)間一會(huì)慢一會(huì)快,串口中斷是不定時(shí)的,是不是這個(gè)原因?qū)е露〞r(shí)器計(jì)時(shí)不準(zhǔn),有沒有什么辦法能解決這個(gè)問題呢?
作者:
mornbin
時(shí)間:
2022-6-27 16:37
首先需看下差異有多大,正常都會(huì)有一定誤差的;其次看下中斷處理函數(shù)是否占用太多處理資源,可通過置位標(biāo)志位,然后中斷外處理
作者:
Hephaestus
時(shí)間:
2022-6-27 17:52
你先把串口斷開,看看定時(shí)器準(zhǔn)不準(zhǔn)不就知道了嗎?
作者:
Y_G_G
時(shí)間:
2022-6-27 19:29
定時(shí)器時(shí)間怎么會(huì)一會(huì)快,一會(huì)慢呢?
一般來說,誤差多少是有點(diǎn)的,但絕大多數(shù)單片機(jī)的內(nèi)部RC時(shí)鐘是可以滿足串口通訊的時(shí)鐘要求的
一個(gè)定時(shí)器如果是用作串口通訊的波特率時(shí)鐘,那么,這個(gè)定時(shí)器就不要再用作其它的功能了
作者:
大漠落日
時(shí)間:
2022-6-28 14:57
加上外晶振,測(cè)試程序正常,說明可能是這個(gè)原因,如果用外晶振,還有錯(cuò)碼,就可能是程序的原因了。
作者:
meiryfu
時(shí)間:
2022-6-28 16:03
定時(shí)器不準(zhǔn)。與你的硬件設(shè)計(jì)有關(guān)。檢測(cè)MCU的GPIO口是不是接入了5VDC(MCU工作電壓3.3VDC)信號(hào)。這個(gè)問題我遇到過相同的問題。
作者:
meiryfu
時(shí)間:
2022-6-28 16:04
檢測(cè)硬件設(shè)計(jì)
作者:
大漠落日
時(shí)間:
2022-6-28 17:51
有些單片機(jī)定時(shí)器與看門狗用的時(shí)鐘源會(huì)有沖突
作者:
kmsj
時(shí)間:
2022-6-29 11:59
我用AVR和STC單片機(jī)內(nèi)部RC振蕩器完成的串口通訊非常穩(wěn)定,擔(dān)心有問題,做了溫度測(cè)試,結(jié)果是20幾度到60度左右,串口通訊的誤差都沒有超過1%,所以,樓主定時(shí)器計(jì)時(shí)時(shí)間一會(huì)慢一會(huì)快,與內(nèi)部RC振蕩器沒有關(guān)系,就算改用外部晶體,這個(gè)問題依然存在。建議樓主把需要要完成的任務(wù)按模塊編寫程序,要求就是完成這些模塊的主程序、子程序、中斷程序互相不要干擾,樓主的問題也就解決了。比如我的外部中斷是過零觸發(fā)可控硅,為了讀出兩個(gè)18B20的溫度互相不受干擾,我就把讀兩個(gè)18B20的程序安排在外部中斷執(zhí)行過零觸發(fā)可控硅之后,并且按步數(shù)讀出,一共十八步讀出兩個(gè)溫度,發(fā)送數(shù)據(jù)也是安排在外部中斷執(zhí)行過零觸發(fā)可控硅之后,每進(jìn)入一次中斷只發(fā)一位數(shù)據(jù),接收數(shù)據(jù)也是在空閑處打開接收允許立即接收數(shù)據(jù)然后就關(guān)閉接收允許,串行口用的定時(shí)器是自動(dòng)重裝,不存在處理任何程序問題,我就做到了過零觸發(fā)、18B20、串口收發(fā),還有HX711、數(shù)碼管、按鍵去抖動(dòng)這些程序互相沒有影響,所有程序是互相支持的關(guān)系,而不是互相依賴。
作者:
luzy666
時(shí)間:
2022-6-30 17:18
檢查一下硬件設(shè)計(jì)
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1