|
發(fā)布時(shí)間: 2011-9-9 16:09
正文摘要:最近用STC12C5202AD芯片,實(shí)現(xiàn)主機(jī)與從機(jī)通信功能,用的是RS485協(xié)議,上面是RS485電路圖,現(xiàn)在的情況是只能收發(fā)一個(gè)數(shù)據(jù),無論主機(jī)發(fā)送多少個(gè)數(shù)據(jù),從機(jī)也只能收發(fā)一個(gè)數(shù)據(jù),調(diào)試了整天也沒有找到原因,下面是 ... |
我給你提一個(gè)意見,硬件沒啥問題,看到有人說加匹配電阻,其實(shí)線很短,不加也沒事,你有兩個(gè)延時(shí)函數(shù),如果程序正在執(zhí)行第一個(gè)延時(shí)函數(shù),如果我給你串口發(fā)數(shù)據(jù)了,但是你還沒有拉低485接受信號(hào)線,也就是收不到,你不覺得邏輯有問題嗎? |
呵呵。簡單。下載一份485規(guī)格書就可以的了。 |
支持一下 |
距離短的話你的電路沒甚問題 |
可能是主機(jī)發(fā)送的太頻繁,叢機(jī)沒有反應(yīng)過來主機(jī)的數(shù)據(jù)又來啦,叢機(jī)一直工作在中斷中自然數(shù)據(jù)發(fā)不回去 |
就硬件電路而言,我建議你改進(jìn)一下,貼一個(gè)我量產(chǎn)過的485電路 |
學(xué)習(xí)中 |
1 485芯片A、B端沒接上下拉電阻,沒接中間電阻,會(huì)導(dǎo)致控芯片制信號(hào)邏輯不正確,兩個(gè)控制端短接為一個(gè)讀寫電平; 2 定義全局?jǐn)?shù)組,每次串口接收中斷把數(shù)據(jù)堆入數(shù)組,主程序每次循環(huán)都檢測(cè)數(shù)組里面的數(shù)據(jù)有效性,數(shù)組超限自動(dòng)出棧最先進(jìn)來的數(shù)。如果數(shù)據(jù)有效則取數(shù)到臨時(shí)數(shù)組后標(biāo)記全局?jǐn)?shù)組為無效數(shù)據(jù)。 3 默認(rèn)情況下主程序控制485芯片為接收狀態(tài)。當(dāng)需要發(fā)送數(shù)據(jù)時(shí)才控制485芯片為發(fā)送狀態(tài),狀態(tài)轉(zhuǎn)換時(shí)間可以累加變量來判斷,不要用延時(shí)子程序。while(!TI)也是用累加變量來判斷實(shí)現(xiàn)超時(shí)功能清TI,不要一直等待..... 建議去單片機(jī)仿真論壇看看吧http://proteus.5d6d.com |
你這個(gè)程序這樣寫也是沒問題的。 只不過主機(jī)發(fā)送的程序要配合從機(jī)。 主機(jī)發(fā)了一個(gè)數(shù)據(jù),等從機(jī)收到并且返回了再發(fā)下一個(gè)就可以了。。。。。 你的程序有很多不好的地方,效率不高,盡量利用中斷來延時(shí)和中斷來發(fā)送數(shù)據(jù)就好點(diǎn)。。。。 |
那個(gè)3腳一邊是DE,一邊是DO,不會(huì)是這里有問題吧,其他的我都看不懂. |
圖上3腳一個(gè)是DO,一個(gè)是DE |
那個(gè)3腳一邊是DE,一邊是DO,不會(huì)是這里有問題吧,其他的我都看不懂. |
好好研究 |
如果哪位高手解決問題,請(qǐng)通知一聲c86518@163.com。 網(wǎng)上相關(guān)485注意事項(xiàng)都看過了。 |
我也正遇到同樣的問題。四套STC11F04XE+MAX485CSE連接到一起。一個(gè)單片機(jī)發(fā)送,其他單片機(jī)接收。通過反復(fù)調(diào)試發(fā)現(xiàn),若連續(xù)發(fā)送4個(gè)字節(jié),只能接收到前兩個(gè)字節(jié)。若間隔1秒發(fā)送一個(gè)字節(jié),則都能收到。感覺到MAX485接收很慢。 |
如果你是連續(xù)發(fā)送數(shù)據(jù),則串口一直產(chǎn)生中斷,無法執(zhí)行其他程序。 |
你這個(gè)程序?qū)崿F(xiàn)的功能是:從主機(jī)收一個(gè)數(shù)據(jù),再將該數(shù)據(jù)發(fā)送給主機(jī)。當(dāng)然無法連續(xù)的接收到主機(jī)上發(fā)送的數(shù)據(jù)的。因?yàn)槟阍诎l(fā)數(shù)據(jù)的時(shí)候,就沒有辦法接收數(shù)據(jù)。這個(gè)485是工作在半雙工的狀態(tài)。 |
程序不懂,僅就硬件說兩句: 1、輸出端,A、B兩線之間,要并聯(lián)一個(gè)120歐姆的負(fù)載匹配電阻。必要時(shí),最好再串接一個(gè)平衡濾波器。 2、供電腳(pin 8)最好能再并一個(gè)10uF的電解,以確保供電穩(wěn)定。 |