標(biāo)題: PIC單片機(jī)的串口 OERR錯誤 [打印本頁]

作者: daniu    時間: 2014-12-23 22:23
標(biāo)題: PIC單片機(jī)的串口 OERR錯誤
根據(jù)883的規(guī)格書的介紹,F(xiàn)IFO接收緩沖只有2個字節(jié)的存儲空間,因此,如果接受時的接收中斷執(zhí)行時間過長,而上位機(jī)的數(shù)據(jù)發(fā)送一次超過2個字節(jié),超過FIFO的存儲空間,就會造成單片機(jī)的FIFO溢出。如果沒有對RCREG進(jìn)行定期在主程序中讀取,則錯誤標(biāo)志無法清零,單片機(jī)的串口通信就會鎖死,出現(xiàn)無法正常通信的情況。

下圖是883在上位機(jī)一次連續(xù)發(fā)送4個字節(jié),在中斷中讀取RCREG,由于中斷執(zhí)行一次時間超過了發(fā)送3個字節(jié)的總時間,F(xiàn)IFO的接收緩沖器不能實(shí)時被RCREG轉(zhuǎn)取走,造成FIFO溢出。單片機(jī)進(jìn)入接收中斷,取走第一次接收到的0x55,但是取走后中斷要執(zhí)行其他程序,不能馬上退出中斷再進(jìn)入接收中斷,因此后面的3個字節(jié)需要存儲在FIFO中,造成FIFO的溢出。

C1:上位機(jī)發(fā)送0x55 4個字節(jié)的數(shù)據(jù),接單片機(jī)RX引腳

C2:單片機(jī)執(zhí)行中斷程序,相應(yīng)接收后的執(zhí)行返回接收到得上位機(jī)數(shù)據(jù),由于中斷有一個長時間的延時,使單片機(jī)在退出第一個接收字節(jié)的中斷時,已經(jīng)錯過了上位機(jī)發(fā)送的后3個字節(jié)。但是當(dāng)時仍有2個字節(jié)存儲在FIFO接收緩沖器中,由于還有3個字節(jié)要存儲,而FIFO只有2個,造成第二個字節(jié)丟失,單片機(jī)OERR置位。接收中斷響應(yīng)了后2個存儲成功的數(shù)據(jù),執(zhí)行完成后推出接收中斷響應(yīng),F(xiàn)ERR不會自動清零,單片機(jī)以后將無法執(zhí)行接收中斷,好比單片機(jī)已經(jīng)進(jìn)入通信鎖死狀態(tài)。

C3:單片機(jī)執(zhí)行進(jìn)入中斷和退出中斷的標(biāo)志位,為了來查看中斷的運(yùn)行與單片機(jī)通信時序的關(guān)系。


作者: dddsss    時間: 2015-1-9 10:40
頂一個
作者: 756474771@qq.co    時間: 2017-3-7 16:40
tune中斷和退出中斷的標(biāo)志位




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1