18F452 + ICE2000 + C18 之問題請教.
|
||||
---|---|---|---|---|
新會員
|
請教各位大大:
不好意思,小弟是C-18新手,有幾個問題要請教, 1.為什麼我使用ICE-2000及C-18寫了一段18F452的RS-232通訊程式, 在ICE-2000底下收發字串都正常,但是燒錄到I.C去時,卻發生F452只能收到指令,但是無法回傳資料的問題..我試過了個方法,包括使用C-18函式庫上的幾個USART指令(如putsUSART...)及用TXREG的方法 來傳出資料,但情形都是一樣,程式碼節錄如下,在ICE-2000都可以,但是一燒錄到晶片去後,就不能了,但是如果完全使用組合語言寫, 在ICE-2000下可以,燒錄到晶片也是可以的.不知道C-18有什麼不一樣嗎?? 請問各位大大,有沒有人知道Why?? 2.另外如果我的C程式要使用BootLoad模式時,程式起始位址要如何定義在0x200的地方?,要使用何種指令來定義?? 請賜教,謝謝!!!! //------------------------------------------------ char COMPortTXDataBuffer[50]; void COMPortTxBufferData() { char x = 0; while ( COMPortTXDataBuffer[x] != 0) { while (PIR1bits.TXIF == 0) { Nop(); Nop(); } // TXREG = COMPortTXDataBuffer[x]; WriteUSART( COMPortTXDataBuffer[x]); //<---- 以上兩種方法,結果都一樣.. x ++ ; } }
發表於: 2005/8/10 15:24
|
|||
|
Re: 請問各位高手
|
||||
---|---|---|---|---|
版主
|
如果您讓換算出來PIC18的MIPS數為4的話,就做得出來。因為PIC16或PIC18的PWM,都是基於一個TMR2所做出來的。而TMR2的最小時間單位就是SYSTEM CLOCK。
所以,如果在4MIPS的情況下,TMR2加一所花的時間為.25uS,自然就做得出來週期正好為14.25uS的PWM了。 建議到右方「教材及講義」中,找W201的教材,其中有講到PWM的基本動作方式。雖然W201是針對PIC16F877所做出來的,但是,在PWM這一部份,PIC16和PIC18沒什麼差別。
發表於: 2005/8/10 14:13
|
|||
|
Re: 燒錄時間太長
|
||||
---|---|---|---|---|
新會員
|
感謝上面那位先進
測試後真的有差,設定欲燒錄的長度即可. 不過在燒錄16F877A時,就好像可以自動控制P.M的長度 不用刻意去設定,P.M的 range. 不知道我的狀況是否正常?
發表於: 2005/8/10 13:33
|
|||
|
Re: 請問各位高手有關Fosc的問題..
|
||||
---|---|---|---|---|
新會員
|
個人早期也常混淆dataseet裡面的文字定義,甚至一定要明白文字的意思才肯動手去作,所以常常陷入咬文嚼字的迷思之中,這樣真的很浪費時間。後來個人就改變工作方式,先讓module能夠動作,再設法用示波器量訊號或IO腳的訊號,進而推敲出datasheet裡面的文字意義,這樣往往可以了解事半功倍,又可以了解datasheet裡面的內容,希望對你有幫助。
發表於: 2005/8/10 10:44
|
|||
|
請問各位高手
|
||||
---|---|---|---|---|
新會員
|
用PIC18F452 能做到週期為 14.25us 的pwm波形嗎
大概可做到小數點第幾位 謝謝
發表於: 2005/8/9 22:12
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
哇~再次感謝pic5566的熱情解答
感激感激~~~
發表於: 2005/8/9 21:18
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
嗯
解開就好,有問題再問好了。
發表於: 2005/8/9 19:14
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
高級會員
|
這是針對pic12f675所寫的
所以運用在pic18fxx你要讀一下data sheet .................... ack = input(P_SDA); 005F: BSF 03.5 0060: BSF 05.5 0061: BCF 03.5 0062: CLRF 2D 0063: BTFSC 05.5 0064: INCF 2D,F 回應一下INPUT()所產生的CODE 很嚇人喔,但是保證不會出錯因為你每input()他都會幫你切BANK設輸入但是CODE真的比較多 .................... output_low(P_SCL); 0065: BSF 03.5 0066: BCF 05.4 0067: BCF 03.5 0068: BCF 05.4 output()也一樣 在C18你可以以一行就解決 這是你問的delay_us() and delay_ms() CCS C compiler所產生的CODES .................... delay_ms(250); 01B3: MOVLW FA 01B4: MOVWF 25 01B5: CALL 00A 000A: MOVLW 25 000B: MOVWF 04 000C: MOVF 00,W 000D: BTFSC 03.2 000E: GOTO 01E 000F: MOVLW 01 0010: MOVWF 21 0011: CLRF 20 0012: DECFSZ 20,F 0013: GOTO 012 0014: DECFSZ 21,F 0015: GOTO 011 0016: MOVLW 4A 0017: MOVWF 20 0018: DECFSZ 20,F 0019: GOTO 018 001A: NOP 001B: NOP 001C: DECFSZ 00,F 001D: GOTO 00F 001E: RETLW 00 總之希望對你有所幫助
發表於: 2005/8/9 19:12
|
|||
|
Re: 想請問I2C應用範例
|
||||
---|---|---|---|---|
新會員
|
一切謎底都解開了
感謝 pic5566 的熱情與解答 小弟我感激不盡
發表於: 2005/8/9 19:10
|
|||
|