Re: 請教有關I2C 與TIMER的問題
|
||||
---|---|---|---|---|
新會員
|
參照:
感謝版主的提示. 我想這應該是主要原因吧. 所以之前我在正常RUN底下執行. TIMER值不會亂掉造成邏輯錯誤. Debugger --> Setting 下的 Freeze選項是暗色的. 所以無法勾選 " All Peripherals" 這是否代表MPLAB會自動檢查我有無其他設備?
發表於: 2010/1/20 10:21
|
|||
|
Re: 請教有關I2C 與TIMER的問題
|
||||
---|---|---|---|---|
版主
|
參照:
目前在開發板上DEBUG模擬時. 常常會用到2.3個TIMER 第一先檢查一下,Debugger --> Setting 下檢查一下 Freeze 的選項是否有勾選 " All Peripherals" 第二,因為在更新 watch window 時,ICD 需要利用Target MCU 來執行監督程式,所以也就會有些狀況會繼續動作這時就會與預期得結果不一樣,尤其是在做 Step 的動作時。因為你在做單部執行時表面上程式只執行一步,實際上PIC 內部也許已經跑過數百的指令了所以你的Timer 值就不是你所預期的了。 這也就是使用 ICD 需要注意的地方。
發表於: 2010/1/20 10:01
|
|||
|
請教有關I2C 與TIMER的問題
|
||||
---|---|---|---|---|
新會員
|
請教各位先進.
我使用的編譯器是Hi-Tehc Pro9.65. 晶片是16F887 目前在開發板上DEBUG模擬時. 常常會用到2.3個TIMER 雖然"感覺上"各TIMER運作正常. 但是在WATCH欄位總是覺得怪怪的. TIMER1.2應該是暫存器溢位時中斷. 但是使用中斷點觀看暫存器欄位總是亂數. 單步執行指令時TIMER暫存器增加數值也是亂跳. TMR1.2IF永遠都是1. 所以想請問TIMER即使不是外接震盪器而是內部時脈. 但是他依舊持續記數. 不管DEBUG時中斷點停下與否? 第二個問題是: 目前改實驗硬體支援的I2C. 照DATA SHEET FIGURE 13-7說明: 接收到開始信號時 SSPSTAT的開始位元為1 檢查SSPSR預暫存器到第7位元時是否與SSPADD<7:1>相符 是的話就自動幫我丟出ACK. 進入中斷. 雖然有進入中斷. 但是MASTER卻都沒有收到過ACK訊號. 由於我讓MSATER丟出0X01的訊息. 所以令SSPADD為0. void init_ssp(){ GIE = 1; PEIE = 1; SSPIE = 1; //SSPMSK = 0X00; SSPADD = 0X00; SSPM3 = 1; SSPM2 = 1; SSPM1 = 1; SSPM0 = 0; SSPEN = 1; CKP = 1; } static void interrupt isr(void) { if (SSPIF == 1){ RD0 = !RD0; //while(!BF); RD1 = !RD1; AA = SSPBUF; SSPIF=0; } } 能請問哪裡我的觀念錯誤嗎? 謝謝
發表於: 2010/1/19 15:34
|
|||
|