Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
資深會員
|
UART接收我都是用中斷處理,在PIC18中外部震盪及內部震盪都用過均無接收上的問題。硬體的問題其實很小。大部分都卡在軟體處理不當。
發表於: 2008/1/2 22:04
|
|||
不要問我哪裡來,我只是個流浪天涯的工程師
|
||||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
版主
|
回覆 kyosho,
UART 是靠硬體的動作完成,一般而言硬體出錯的機率很低。絕大部分還是軟體出了問題。可否再接收中斷裡加入檢查RXSTA<FERR & OERR> 兩錯誤位元,看看是否有錯。如果是 FERR 設為 1 了就是 Baud Rate 的問題,如果是 OERR 的話就是接收處理的速度太慢了。
發表於: 2008/1/2 18:37
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
資深會員
|
建議如版主說的確認一下是否有錯誤旗標產生
另外,可確認一下RS232介面IC各pin電壓值是否正常 方便的話貼一下電路圖參考
發表於: 2008/1/2 18:28
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
初級會員
|
目前本人的測試是部分亂碼,而大部分為正常,通過調整OSCTUNE數值,可以降低,但不能消除亂碼。
改用外部8M晶體,亦是如此。但是使用USB to TTL的資料線用電腦抓進來的卻是正常,難道說電平匹配方面或者是pic的寬容度比較小,按照計算的公式,誤碼率也僅僅1%左右,為正常標準值。
發表於: 2008/1/2 18:07
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
中級會員
|
參照:
是的,每個byte與byte傳送延遲於1ms-10ms均有試過其結果相同。
發表於: 2008/1/2 17:18
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
資深會員
|
基本上已經可以接收就表示UART設定沒問題了
使用外部XTAL且頻率正確的話, 也可排除頻率漂移的問題(應該沒有環境惡劣的問題吧) 剩下就是軟體問題了 11.0592M的速度並不快 有沒可能是接收資料太長(66byte似乎有點長) 導致有部份資料無法及時從UART buffer裡取出來而錯誤呢 可試看看每個byte間的傳送間隔加點延時看看可否改善
發表於: 2008/1/2 17:10
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
中級會員
|
參照:
我剛剛使用了外部石英震盪,頻率為11.0592Mhz,其結果如上第45個Byte就會有連續4個不正確的值,之後又正常。 程式設定如下: SPBRG1 = 31 ; // 287 for 9600 bps @ 11.0592Mhz Fosc SPBRGH1 = 0x01; TXSTA1 = 0x24; // 0010 0100 // TX enable BRGH=1 RCSTA1 = 0x90; // continuous RX BAUDCON1 = 0x08; // BRG16 = 1 是否為設定問題?????,或其它問題?????
發表於: 2008/1/2 16:33
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
版主
|
內部 RC 有誤差災加上不上準確的 Baud-Rate Generator 的頻率值,建議先用外部的 Crystal 驗證一下,Crystal 頻率可以挑基本給 RS-232 用的標準品 : 4.9152MHz, 11.0592Mhz, 18.432MHz
發表於: 2008/1/2 13:52
|
|||
|
Re: 關於單片機捕捉序列埠資料的問題
|
||||
---|---|---|---|---|
中級會員
|
Dear All:
我也有相同的問題,我是使用18F6310&6410, BaudRate:9600,使用Serial Port 1,於接收一筆大於66Byte的資料,接收到第45個Byte就會有連續4個不正確的值,之後又正常。每次都是相同的狀況,目前使用的震盪方式有試過內部震盪及外部震盪,頻率8Mhz。 問題一:是否有設定上的問題 問題二:是否有硬體上的問題
發表於: 2008/1/2 10:29
|
|||
|