Browsing this Thread:
1 Anonymous Users
|
Re: 如何使用Software UART
|
|
版主
Joined
: 2004/4/30 10:53 最後登入時間
: 2021/11/30 18:11
From CAE, Microchip
Group:
站務管理者 註冊會員
Level : 75 HP : 744 / 1861 MP : 5367 / 108732 EXP : 45
|
亂碼有可能是 bps 不對,兩種方法可以測試: 1. 用示波器量一下輸出的 bps 2. 用 MPLAB SIM 分析一下 delay 的時間,用 Stopwatch 的功能配合中斷點得設定,當然要先告訴 SIM 目前的頻率為幾 MHz
發表於: 2007/11/15 15:14
|
|
|
Re: 如何使用Software UART
|
|
新會員
Joined
: 2007/2/8 11:25 最後登入時間
: 2017/11/6 16:26
Group:
註冊會員
Level : 2 HP : 0 / 49 MP : 6 / 2487 EXP : 97
|
有誰可以幫幫我嗎? 我這樣設傳輸都會亂碼耶
發表於: 2007/11/14 22:36
|
|
|
如何使用Software UART
|
|
新會員
Joined
: 2007/2/8 11:25 最後登入時間
: 2017/11/6 16:26
Group:
註冊會員
Level : 2 HP : 0 / 49 MP : 6 / 2487 EXP : 97
|
各位大大請問一下: 如何使用Software Uart呢
我看c-18 compiler libraries的文件提到 首先先得改變pin 腳要輸出的腳位(如果有改變的話) 然後要把改變的檔案放到project裡面重新compiler
接著要定義以下function DelayTXBitUART DelayRXHalfBitUART DelayRXBitUART
現在問題來啦,就是這三個function定義的內容我是照著c-18 compiler libraries所定義的cycle去寫 故我的程式如下面宣告
void DelayRXHalfBitUART(void) { int i; //((((((2*CLOCK_FREQ) / (8*BAUDRATE)) + 1) / 2) - 9)); Delay10TCYx(1); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); } void DelayRXBitUART(void) { int i; Delay10TCYx(3); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); //Delay10TCYx(((((2*CLOCK_FREQ) / (4*BAUDRATE)) + 1) / 2) - 14); } void DelayTXBitUART(void) { int i; //Delay10TCYx(((((2*CLOCK_FREQ) / (4*38400)) + 1) / 2) - 12); Delay10TCYx(3); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); Delay1TCY(); }
我用pic18f6620 震盪器是7372800 baudrate38400 算出來的結果是
DelayRXHalfBitUART = 15.5 cycle DelayRXBitUART = 34.5 cycle DelayTXBitUART = 35.5 cycle
不知道這樣是對不對呢,請各位大大幫我檢查看看,阿哩阿多
發表於: 2007/11/13 10:24
|
|
You can view topic.
你 不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.