Re: PIC16F877讀取24LC04B(EEPROM)的怪問題
|
||||
---|---|---|---|---|
版主
|
我想,您是想用硬體的Master I2C模組吧!請查PIC17C756A的data sheet,裏頭有針對Master I2C對24LC01讀寫資料,用C17寫的範例程式。雖然不是用ASM,但是程序值得參考。
印象裏,使用Master I2C的話,會在各個步驟之間,加入等待idle狀態的動作。 註:PIC17C75X是Microchip第一顆具有H/W Master I2C的PIC,所以,說明得比較詳細。另外,找找application note,也許也有範到程式可以看。 先自力救濟一下囉! 自使用PIC以來,我就再也沒有自己從無到有寫過對24lcxx的讀寫程式,都是剪貼applicaion note所附的原始碼來用;頂多稍微修改而已。
發表於: 2004/6/10 16:33
|
|||
|
PIC16F877讀取24LC04B(EEPROM)的怪問題
|
||||
---|---|---|---|---|
新會員
|
我從這個網站抓了兩個範例(有關I2C Master讀取EEPROM的)
經過一陣的猛K終於搞懂I2C的一些存取規則,可是也遇到一個很怪的問題。由於我是初學者請各位大師幫我解答疑惑吧 問題是這樣的: 當我要開始I2C通訊時用了下列的指令 StartI2C ; Initiate the I2C START condition. banksel SSPCON2 bsf SSPCON2,SEN goto I2C_Done 然後等待動作完成的中斷訊號(PIR1的SSPIF位元要等於1) I2C_Done banksel PIR1 btfss PIR1,SSPIF ; Poll for SSPIF goto $-1 bcf PIR1,SSPIF return 可是............我透過ICD單步執行看暫存器的值 在指令bsf SSPCON2,SEN之後SSPIF位元根本不會變1 反而是PIR2的BCLIF位元居然變1 這........太怪了吧.......... 居然發生Bus Collision.....翻遍所有的書,都沒寫到這一段。 當然啦...我的SSPIF也一直沒變1而那個I2C_Done的迴圈.....也變成無窮迴圈了。
發表於: 2004/6/10 9:48
|
|||
|