|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
在485通訊時,特定條件下遇到的特殊問題 |
| 作者:ccatwyj 欄目:通信技術(shù) |
我在MSP430F123上跑ms/tp協(xié)議(系統(tǒng)里嵌了一個小的多任務(wù)操作系統(tǒng)),在調(diào)試發(fā)送數(shù)據(jù)時遇到了這樣的一個問題 我的發(fā)送數(shù)據(jù)是用的發(fā)中斷,開始發(fā)現(xiàn)我的最后一個數(shù)發(fā)出的總是 “ff”,經(jīng)過分析發(fā)現(xiàn),我在執(zhí)行最后一個數(shù)的發(fā)中斷服務(wù)時,我關(guān)了關(guān)了發(fā)中斷,把485的收發(fā)控制端切換成了收狀態(tài),這時發(fā)送的“txdbuf”寄存器雖然空了,但是發(fā)送的“移位寄存器”才開始發(fā)出第一個起始位,我切成了收狀態(tài),其他的位就發(fā)不出去了,造成最后一個數(shù)發(fā)出的總是 “ff” 我想了幾個解決的辦法,但是總是不太妥當(dāng) 1,不用發(fā)送中籪,太費(fèi)CPU時間,發(fā)送一幀的數(shù)據(jù)有70多個字節(jié),如果是9600的撥特率 要等70ms多,任務(wù)級高了,其他任務(wù)受不了;低了,通訊又不正常了.系統(tǒng)不允許 2,在發(fā)最后一個數(shù)后,在中斷服務(wù)里等“移位寄存器”空后再做切換,但是中斷服務(wù)的時間有過長了,至少是1ms, 系統(tǒng)也不允許 3,我在發(fā)數(shù)時多發(fā)送一個數(shù),雖然有用的數(shù)據(jù)都發(fā)出去了,但是造成了一個字節(jié)的網(wǎng)絡(luò)垃圾,給網(wǎng)絡(luò)系統(tǒng)增加了負(fù)擔(dān) 4,我想最后的一個數(shù)的起始位不會太長,用電容濾掉,但是查了一下手冊 發(fā)現(xiàn)異步通訊的起始位是沿觸發(fā)的 用電容會導(dǎo)致通訊不正常 我現(xiàn)在是想不出什么完美的辦法了,請大俠們支個招吧 |
| 2樓: | >>參與討論 |
| 作者: jacksmart 于 2005/3/30 10:58:00 發(fā)布:
第二個方法可以的啊,時間應(yīng)該很短的! |
|
| 3樓: | >>參與討論 |
| 作者: ccatwyj 于 2005/3/30 13:02:00 發(fā)布:
不行呀 中斷用1ms 的時間,任務(wù)在這段時間里都沒有辦法調(diào)度了,其他的任務(wù)都耽誤了 |
|
| 4樓: | >>參與討論 |
| 作者: chunyang 于 2005/3/30 14:20:00 發(fā)布:
改變程序結(jié)構(gòu) 稍晚再切換485的收發(fā)狀態(tài)。 或者用硬件法: 不要單獨(dú)控485的狀態(tài),而用TXD來控制,要記得加反相器。 |
|
| 5樓: | >>參與討論 |
| 作者: ccatwyj 于 2005/3/31 7:43:00 發(fā)布:
感謝chunyang! 您說的"稍晚再切換485的收發(fā)狀態(tài)"。我考慮過,但是我的是嵌入式系統(tǒng),退出了中斷后不知道跑到哪兒個任務(wù)了 您說的"硬件法": 我覺得很可行,能給詳細(xì)指教一下嗎 您說的是不是用一個單穩(wěn)態(tài)觸發(fā)器,用TXD信號來控制其輸入呀,其輸出再加上其他的邏輯門來控制485的收發(fā)狀態(tài), |
|
| 6樓: | >>參與討論 |
| 作者: chunyang 于 2005/3/31 9:44:00 發(fā)布:
No!No! TDX經(jīng)反相器后接收發(fā)控制(收及發(fā)應(yīng)并聯(lián)),這樣發(fā)“0”時485處于“發(fā)”狀態(tài),發(fā)“1”時485處于“收”狀態(tài),配合總線偏置(這樣最可靠),對方收到的仍是“1”,明白了? 但此法速度不能太高,因485切換需要時間,總線加靜態(tài)偏置對可靠性和提高速度都有利。 |
|
| 7樓: | >>參與討論 |
| 作者: ccatwyj 于 2005/3/31 12:16:00 發(fā)布:
我明白了:) chunyang老師的方法實在是很妙!!我來試試.我們的總線速度最高要到57600,不知道能不能反應(yīng)過來 |
|
| 8樓: | >>參與討論 |
| 作者: jacksmart 于 2005/4/1 21:14:00 發(fā)布:
請問chunyang 總線偏置是什么意思? 發(fā)“1”時,485處于收態(tài),對方怎么還能收到“1”,是不是說這時總線上是高電平 |
|
| 9樓: | >>參與討論 |
| 作者: chunyang 于 2005/4/2 11:03:00 發(fā)布:
用電阻將485靜態(tài)電平拉成邏輯1(485的標(biāo)準(zhǔn)) 即為“總線偏置”,樓上第二個問題是由485芯片的結(jié)構(gòu)決定的。 |
|
| 10樓: | >>參與討論 |
| 作者: yangtse 于 2005/4/5 10:07:00 發(fā)布:
不錯。頂一哈。 這樣的交流就很有技術(shù)討論的味道了 |
|
| 11樓: | >>參與討論 |
| 作者: shs1981 于 2005/4/5 14:26:00 發(fā)布:
電阻用多少合適。 我現(xiàn)在用680歐,節(jié)點數(shù)多于70。合適不? |
|
| 12樓: | >>參與討論 |
| 作者: chunyang 于 2005/4/5 20:14:00 發(fā)布:
偏置電阻嗎? 偏置電阻用1K即可。 |
|
| 13樓: | >>參與討論 |
| 作者: jacksmart 于 2005/4/5 21:41:00 發(fā)布:
請問chunyang 偏置電阻怎么接的,串在A,B上嗎?還是接成上拉 |
|
| 14樓: | >>參與討論 |
| 作者: chunyang 于 2005/4/5 22:11:00 發(fā)布:
A上拉、B下拉 |
|
| 15樓: | >>參與討論 |
| 作者: jacksmart 于 2005/4/6 22:02:00 發(fā)布:
那接收的時候怎么辦啊 用TXD控制收發(fā)時,發(fā)送的時候是可以,但是接收的時候怎么辦啊? |
|
| 16樓: | >>參與討論 |
| 作者: chunyang 于 2005/4/6 22:13:00 發(fā)布:
樓上最好分析一下485接口IC的內(nèi)電路 75176的就行 |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |