Re: 請問各位高手
|
||||
---|---|---|---|---|
新會員
|
請問我要如何得知我是跑40MHZ的
還有就是一定要買實驗版才能用嗎 不好意思我是第一次接觸 謝謝
發表於: 2005/8/10 20:35
|
|||
|
Re: Question of Interface
|
||||
---|---|---|---|---|
版主
|
EUSART 多了 Auto Baud Rate detection & Break Signal 主要使給 LIN Bus 通訊上用,除此之外功能與AUSART一樣當然可以跟RS-232通訊。
發表於: 2005/8/10 18:07
|
|||
|
Re: 請問各位高手
|
||||
---|---|---|---|---|
版主
|
可能你會看不懂我同事寫的,在此作說明:
確定你的 PIC18FXXX 是跑 40MHz, 則 Duty Cycle 最小解析脈衝精度為 1/40MHz = 25nS. 在 PIC 的設計裡,Period 最小計數單位為(進到 Timer2) Fosc/4, 也就是說 40MHz/4= 100nS. 所以你的 Period 就不可有有14.25uS (需以100nS 為基底) ,期值可以為 14.3uS 或 14.2uS. 所以解析度就算出來了,在 14.3uS (period) 下解析度為: 14.3uS / 25nS = 572
發表於: 2005/8/10 17:59
|
|||
|
Re: 18F452 + ICE2000 + C18 之問題請教.
|
||||
---|---|---|---|---|
版主
|
第一個問題很奇怪,檢查一下 Stand-Alone 模式下的 configuration words 的設定是否正確,ICE2000 的 clock 是誰供應的? 你可以再用 ICD2 來測試一下看看是否能正常跑。
第二問題要用寫的似乎有點長了,你可以打電話來討論 0800-717-718 , 基本的重點如下: 1. 將LKR檔內的 c018i.o 先移除後回存一新的LKR 檔,以後bootloader 就需使用此 LKR 檔。 2. 到 C:\mcc18\src\traditional\startup 的目錄下將 c018i.c 考到 Project 目錄下並加到 Project 裡。 3. 修改reset 起始位置到 0x200 的地方,如下所示
#pragma code _entry_scn=0x000200
4. 最後還要做RESET & INTERRUPT 向量位址的轉移,將0x008 加入 GOTO 0x208 , 0x018 --> 0x218
發表於: 2005/8/10 17:45
|
|||
|
Re: 18F452 + ICE2000 + C18 之問題請教.
|
||||
---|---|---|---|---|
新會員
|
Dear DoubleChen,
感謝您提供的方法,我試過了,問題都還是一樣耶....
發表於: 2005/8/10 16:50
|
|||
|
Re: 18F452 + ICE2000 + C18 之問題請教.
|
||||
---|---|---|---|---|
新會員
|
從你的描述,我提供兩種可能性,讓你debug看看,
1.是否TXSTAbits.TXEN有設定為1 2.在TXREG = COMPortTXDataBuffer[x];後面多加一個判斷 while(!(TXSTAbits.TRMT)); 當TSR是Empty時,才能確定你的資料已經傳送出去了。
發表於: 2005/8/10 16:33
|
|||
|
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
|
|||
|