會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客



(1) 2 »


pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2009/08/17 13:53
所屬群組:
註冊會員
文章: 170
等級: 12; EXP: 9
HP : 0 / 277
MP : 56 / 4340
離線
請問一下,現在一個主mcu要去跟另外四顆對傳,我就把主mcu的tx接到其它MCU的rx,所有的rx接回tx,如下圖所示。

為了去判斷四個位置,所以讓我的mcu在一秒鐘中斷時,去送出訊號給其它四個mcu,四個mcu因為接到訊號而產生中斷,去判斷收回來的值是否正確,再回傳值。

主mcu送出的程式:
case(0):
//0xA0代表1號,0XB0代表2
//號,0XC0代表3號,0XD0代表4號
WriteUART2(0XA0);
delayms(1);
while(!U2STAbits.URXDA)//如果超過10ms,重送一次
{
delayms(2);
k=k+1;
if(k==5)
{
WriteUART2(0XA0);
}
}
k=0;
rpm[i]= ReadUART2() ;

break;
以上我連寫了四個,去依序送出。

子mcu就比較單純:
void __attribute__((interrupt, no_auto_psv)) _U2RXInterrupt(void)
{
unsigned char rpm_low;
unsigned char dummy;

dummy = ReadUART2() ;//收到主MCU來的訊號,如果是==0XA0就把我處理的訊號回傳。
if (dummy==0xA0){

rpm_low=(RPM%256);
WriteUART2(rpm_low);
}
IFS1bits.U2RXIF = 0 ;
}

同樣地,子MCU的部分,就是各別在dummy那是0xA0,0XB0,0XC0,0XD0,

程式在測試時,如果只有一對一,值回傳是沒問題的,但如果是1對二以上,值就傳不回來了,是不是這樣寫還是會有打架的情況?

硬體部分線拉的的距離大約20幾公分會太遠嗎?

附加檔案:



jpg  對傳.JPG (14.74 KB)
6004_4cbc4bb54a095.jpg 323X341 px

2010/10/18 21:32
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2004/07/09 22:24
來自 台灣
所屬群組:
註冊會員
文章: 919
等級: 27; EXP: 2
HP : 0 / 650
MP : 306 / 19885
離線
請參考RS-485的做法。

2010/10/18 22:38
_________________
Ho-Chung Chang (John)
Project Manager

Avionics, Chian University of Science and Technology(Taiwan)
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2010/06/30 16:18
來自 CAE, Microchip Technology Inc.
所屬群組:
站務管理者
註冊會員
文章: 1105
等級: 29; EXP: 18
HP : 140 / 704
MP : 368 / 9239
離線
老實說.使用RS-485會是更好的選擇.

如果硬要用RS-232.會很痛苦.問題也很大.首先
1.一個Tx連接四個Rx加上20cm的接線,扇出能力與阻抗對訊號造成影響很大, 請用示波器看看.
2.如果你回傳值有特殊資料(0xA0, 0XB0, ..etc.)怎處理?

最好的辦法..改用RS-485架構.

個人意見.僅供參考

2010/10/18 22:53
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2004/07/23 16:25
所屬群組:
註冊會員
文章: 1004
等級: 28; EXP: 4
HP : 0 / 676
MP : 334 / 20593
離線
uart 大都是 一對一

要一對多,你可以試著用 Lin (uart + Lin bus transceiver)

要多對多,佚可以試試 can bus

2010/10/19 08:20
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2009/08/17 13:53
所屬群組:
註冊會員
文章: 170
等級: 12; EXP: 9
HP : 0 / 277
MP : 56 / 4340
離線
我用485的話,如何給mcu一個位置,i2c中有一個暫存器是去設定address的,但485模式下,我如給它設定為一個位置呢?

2010/10/19 09:27
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2004/10/13 06:15
來自 PIC 使用者
所屬群組:
註冊會員
文章: 426
等級: 19; EXP: 17
HP : 0 / 454
MP : 142 / 13547
離線
每一個規範制定的範圍不一定相同,這部分 RS-485 並沒有規範。 RS-485 只有電氣訊號的規範,沒有接頭機構與通信協定這些部分的規範。 一般在RS-485上使用的是 Modbus 協定。

如果距離近,線間總電容合於 I2C 要求,部會造成訊號失誤,可以使用 I2C,省去 RS485 所需的 transceiver,且 PIC 也有內建 I2C 支援。

- - -

原始設計不管是直接以 TX RX 的 TTL 準位或 RS232 準位,都有一個基本問題: 那些被接在一起的 TX 們,一些輸出0、另一些輸出1的時候,到底 RX 收到的是 0 還是 1 ? 還有,一般努力 source 電流以維持1,另一邊努力 sink 電流以維持0,電流會怎樣? (如果是真正 TLL 該 port 很可能要燒了, 還好 PIC IO Port 其實內部有一定程度限流)

2010/10/19 10:22
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 12155
等級: 69; EXP: 15
HP : 1022 / 1703
MP : 4051 / 53038
離線
1. 主 UART 送給 Slave UART 做接收,這樣一斷多是沒問題的,只是線長 20cm 會有寄生電容效應速率無法太高,加個 1K ohm 的提升電組將低一下電路的阻抗吧!

2. Slave UART 的 Tx 都並在一起,基本上以 UART tx 來看這是種打群架的接法,你要使用軟體來管理它。也就是平常這些 tx 都內控制在 UART Tx Disable 的狀態,且為一般輸入的 input 腳功能( TXSTA<TXEN> 位元可以單獨去關閉 Tx Module, Rx 能開啟的) 。只要接收到屬於自己的封包資料在重設 TX Module 後將資料回傳出去後再關閉 Txd ,這樣就可以做到半雙工的通訊模式了。

2010/10/19 10:38
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2009/08/17 13:53
所屬群組:
註冊會員
文章: 170
等級: 12; EXP: 9
HP : 0 / 277
MP : 56 / 4340
離線
我是先送出一組0xa0,等它傳回來,收到後,再傳0xb0,再去收,這樣子會有多組訊號在線上的問題嗎?

2010/10/19 11:29
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 12155
等級: 69; EXP: 15
HP : 1022 / 1703
MP : 4051 / 53038
離線
如果是一般 UART 的設定,肯定是打架了。我的意思是說 : 沒有要傳送資料出去給主控台的就先把發送模組關閉並把 TXD 設成一般的 I/O 腳的輸入功能。這樣就不會打架了,你知道何為"半雙攻通訊模式"嗎?

2010/10/19 11:46
轉換PDF檔 列印


Re: pic 跟 pic 對傳用tx and rx
資深會員
註冊日期:
2009/08/17 13:53
所屬群組:
註冊會員
文章: 170
等級: 12; EXP: 9
HP : 0 / 277
MP : 56 / 4340
離線
版主我了解您的意思,我會試試看。
但我剛剛發現另一個問題,其實就是我上次跑去問的問題,結果以為是LCD模組的問題,但其實不是,我接在麵包板上的MCU,所撰寫的程式並未含有任何LCD的程式,而我剛剛發現,真正的原因應該在於USART,我在麵包板上跑的MCU,如果把Init_UART2()寫在MAIN中,但是UR的腳位因為還沒去接上,會導致在我的DEBUGGER下,程式就一RUN就停住了,如果在PROGRAMMER下,我的程式並不會正常WORK
因為如果我把Init_UART2(); MARK掉,程式就正常執行,但我又不能把它MARK掉,因為這樣就沒有UR的功能了,所以腳位在麵包板上接法是要?

2010/10/19 12:58
轉換PDF檔 列印



(1) 2 »



無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
教育訓練
其它網站連結
電話: 02-25000405
產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830 產品技術問題
Powered by XOOPS © 2001-2012 The XOOPS Project