Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
Ryangc 版主
4/2 有mail 給你了說 有收到嗎
發表於: 2005/4/5 22:18
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
版主
|
發表於: 2005/4/1 22:06
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
版主
|
版主年紀大了,老花眼沒看清楚是十進制的 56 唉!
發表於: 2005/4/1 18:14
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
好像不是吧?!
他把56 (B'00111000')丟進SSPCON 低四位元1000是設定為MASTER 怎麼會是SLAVE呢?
發表於: 2005/4/1 15:13
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
版主
|
MOVLW .56 ; SSPM3:SSPM0(3-0)=1000, I2C master mode,clock=fosc/(4*(SSPADD+1))
以上程式會讓你的I2C 設為 slave mode 當然就無法控制 SCL 的速率。 還有 Bank 切換也檢查一下,感覺怪怪的。 附上一段 I2C Master 設定的程式:
;
或可參考右邊的範例程式裡的第12項
發表於: 2005/4/1 13:55
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
這段程式應該沒問題
我想可能是你其他的程式有動到這幾個值 或是把SSPADD鎖住了 用ICD2除錯模式慢慢找吧...
發表於: 2005/4/1 13:07
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
參照:
剛剛試了把那3行移到後面, 結果依然一樣 .56 是因為這段程式是copy C compiler 之後的asm程式的關係
發表於: 2005/4/1 9:44
|
|||
|
Re: I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
MOVLW .56
BCF 0x03,RP0 MOVWF SSPCON 這三行把它放到這段程式的最後面再試試 建議你不要用movlw .56 用 movlw B'00111000' 這樣分成位元來看比較清楚,也容易除錯
發表於: 2005/4/1 8:45
|
|||
|
I2C master mode 的 clock 為什麼不會改變
|
||||
---|---|---|---|---|
資深會員
|
以下是i2c master mode 初始化的程式 for pic16f873
fosc=16Mhz ======================================= I2C_Init_MasterMode BSF TRISC,3 BSF TRISC,4 CLRF SSPSTAT MOVLW .56 ; SSPM3:SSPM0(3-0)=1000, I2C master mode,clock=fosc/(4*(SSPADD+1)) BCF 0x03,RP0 MOVWF SSPCON MOVLW .199 ; SSPADD=199 clock=fosc/(4*(SSPADD+1))=16M/(4*(199+1))=20khz BSF 0x03,RP0 MOVWF SSPADD CLRF SSPCON2 BCF 0x8C,SSPIE return =========================================== SSPADD 用199的話 照計算不是應該只有20kHz嗎? 可是用示波器看, 確是約50khz 試過其他數值, 似乎都不會改變 clock 頻率 是哪裡設的不對嗎??
發表於: 2005/3/31 22:25
|
|||
|