Re: 電腦轉RS458與RS232連結
|
||||
---|---|---|---|---|
新會員
|
目前巳測試TX功能正常
唯在RX時一直無法接收 巳確定DE處於LOW狀態,等待接收 一開機就會一直卡在接收程式中斷當中的等待字元接收 但當時並未有任何訊號輸入需接收 並確定非由其他中斷觸發 中斷服務程式如下: =============================== #pragma interrupt isr_high void isr_high(void) { getsUSART(UR_ADR,2); getsUSART(UR_CMD,2); getsUSART(UR_REVERSE,2); getsUSART(UR_CHIP,1); getsUSART(UR_CH,1); getsUSART(UR_DATA,4); getsUSART(UR_LRC_CHK,2); Delay1TCY(); } #pragma code =============================== 中斷所呼叫之副程式如下: =============================== void getsUSART(char *buffer, unsigned char len) { char i; unsigned char data; for(i=0;i<len;i++) { while(!DataRdyUSART());//<==卡在此處 data = getcUSART(); *buffer = data; buffer++; } } =============================== 煩請解惑,感激不盡
發表於: 2009/9/26 10:55
|
|||
|
Re: 電腦轉RS458與RS232連結
|
||||
---|---|---|---|---|
版主
|
以 APP001 為例,版子上用 SN75176 為RS-485 的介面元件,電路上將 RC0 --> J2 -->J7 (CTS pin) 接到 SN75176 的 DE 腳做為半雙工發送控制用。
使用 RS-485 做半雙工傳輸時,切換DE (輸出/輸入方向控制) 時,不可以只檢查TXIF 這會使的最後一個Byte 傳不出去的,建議檢查 TMRT 這樣才可以確保 UART 資料以經傳算完畢。 DE 腳是控制輸出的,RS-485 平常處於接收模式,要傳送資料時再將 DE 設成 Hi 後再傳送資料,完全傳送完畢後再將 DE 設成 Low 成為接收模式。 還有RS-485 的傳輸線須接上一終端電阻 220 ohm 的,不然訊號會因傳輸線的阻抗過高而無法傳送的。
發表於: 2009/9/25 15:51
|
|||
|
Re: 電腦轉RS458與RS232連結
|
||||
---|---|---|---|---|
新會員
|
請問半雙功時,程式該如何設定?
發表於: 2009/9/25 13:45
|
|||
|
Re: 電腦轉RS458與RS232連結
|
||||
---|---|---|---|---|
資深會員
|
基本上RS232是全雙工,RS485是半雙工(與用什麼MCU無關)
而用RS232(全雙工)沒問題. 用RS485(半雙工),會有收不到問題: MCU可以傳給PC, 而MCU收不到PC信號. 可能要檢查一下(量一下波形),是否為全雙工,半雙工問題.
發表於: 2009/9/25 11:19
|
|||
|
電腦轉RS458與RS232連結
|
||||
---|---|---|---|---|
新會員
|
實驗硬體:APP001ver3 with pic18F4520
================================== Complier:PIC C18 ================================== 實驗目的: 確認PIC18F4520上之RS458通訊正常 (目前使用電腦之RS232port 配合市面上之轉接頭轉成RS458與PIC18F4520通訊) 註:巳確認轉接頭工作正常 ================================== 實驗條件: 使用9600 baud rate 不使用轉接頭,使用RS232時與電腦通訊時均正常 ================================== 當轉接成RS485時狀況如下: 可傳送字元至電腦,但無法接收電腦傳回之字元 接收來自電腦之訊號使用中斷撰寫,但一直會卡在中斷中 且無法接收字元訊號 ================================== 程式設定: OpenUSART( USART_TX_INT_OFF & USART_RX_INT_ON & USART_SYNCH_MODE & USART_SYNC_MASTER & USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH ,103); RCSTAbits.SPEN=1; TRISCbits.TRISC7=1; TRISCbits.TRISC6=0; PIE1bits.TXIE=0; PIR1bits.RCIF=0; IPR1bits.RCIP=1; PIE1bits.RCIE=1; ================================== 請教問題: 轉接成RS458時,是否要設定成同步模式 ? 如是的話,該設成Master還是slave ? 另外RXDTP及TXCKP該如何設定 ? ================================== 感激不盡~
發表於: 2009/9/25 9:59
|
|||
|