|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
請(qǐng)教關(guān)于異步通信的問題 |
| 作者:kukulong 欄目:單片機(jī) |
我用C寫了個(gè)關(guān)于MODBUS協(xié)議的通信程序,上位機(jī)每50ms發(fā)送8個(gè)字節(jié)的數(shù)據(jù)給我,我就發(fā)送相應(yīng)的數(shù)據(jù)回去,在50MS的時(shí)候程序老是跑死掉,但在200MS左右測(cè)試正常 查看發(fā)送OERR和FERR位有錯(cuò)誤的情況發(fā)生 請(qǐng)問有什么辦法提高通信速度,減少通信過程中沖突的情況發(fā)生 我想不明白,在50MS的情況下,剛開始的一段時(shí)間程序是跑正確的,但跑不了多久就出現(xiàn)問題,如果真有問題為什么一開始不發(fā)生?? 高手指教 * - 本貼最后修改時(shí)間:2006-1-10 19:31:42 修改者:kukulong |
| 2樓: | >>參與討論 |
| 作者: xymxym 于 2006/1/11 14:05:00 發(fā)布:
有可能是間隔時(shí)間太短和通訊速率過低造成的單片機(jī)接收緩沖 區(qū)溢出,把其它相鄰的存儲(chǔ)單元數(shù)據(jù)給沖掉了,再往下就有可能造成堆棧溢出。延長(zhǎng)間隔時(shí)間或提高速率或在接收中斷中控制,如,當(dāng)一次接收的數(shù)據(jù)串超過8個(gè)字節(jié)時(shí),不再往緩沖區(qū)里送數(shù)據(jù)。在數(shù)據(jù)線短路時(shí),這種方法也是有效的避免之一。 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |