找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 9567|回復(fù): 2
收起左側(cè)

PIC單片機的串口 OERR錯誤

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

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

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

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

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

相關(guān)帖子

回復(fù)

使用道具 舉報

ID:71900 發(fā)表于 2015-1-9 10:40 | 顯示全部樓層
頂一個
回復(fù)

使用道具 舉報

ID:168869 發(fā)表于 2017-3-7 16:40 | 顯示全部樓層
tune中斷和退出中斷的標(biāo)志位
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表