會員登陸
帳號:

密碼:

記住我



忘記密碼?

現在註冊!
網站導航
最新下載
訪問統計 (自2012/5/3)


正在流覽:   1 名訪客





PIC16F877讀取24LC04B(EEPROM)的怪問題
新會員
註冊日期:
2004/06/10 09:27
所屬群組:
註冊會員
文章: 2
等級: 1; EXP: 2
HP : 0 / 0
MP : 0 / 32
離線
我從這個網站抓了兩個範例(有關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/06/10 09:48
轉換PDF檔 列印


Re: PIC16F877讀取24LC04B(EEPROM)的怪問題
版主
註冊日期:
2004/04/28 12:58
所屬群組:
註冊會員
DISTI
文章: 339
等級: 17; EXP: 19
HP : 0 / 404
MP : 113 / 19185
離線
我想,您是想用硬體的Master I2C模組吧!請查PIC17C756A的data sheet,媕Y有針對Master I2C對24LC01讀寫資料,用C17寫的範例程式。雖然不是用ASM,但是程序值得參考。

印象堙A使用Master I2C的話,會在各個步驟之間,加入等待idle狀態的動作。

註:PIC17C75X是Microchip第一顆具有H/W Master I2C的PIC,所以,說明得比較詳細。另外,找找application note,也許也有範到程式可以看。

先自力救濟一下囉!

自使用PIC以來,我就再也沒有自己從無到有寫過對24lcxx的讀寫程式,都是剪貼applicaion note所附的原始碼來用;頂多稍微修改而已。

2004/06/10 16:33
轉換PDF檔 列印


Re: PIC16F877讀取24LC04B(EEPROM)的怪問題
高級會員
註冊日期:
2004/06/15 10:18
文章: 97
等級: 8; EXP: 84
HP : 0 / 196
MP : 32 / 9213
離線
關於PIC16F877A的MSSP MODULE有一個功能會偵測BUS的主控權 , 用來做為MULTY MASTER的應用 , 其作用在送START及STOP的時侯 , 如果你有使用MULTY MASTER的話 , 請注意準位的控制 , 提升電阻及串聯電阻的使用有助於信號準位的穩定作用 , 另一點注意的是 , 大部份的範例程式在對於ACK的判定通常都是用DELAY就帶過了 , 可以對此加以修改 , 而一些判定廻圈也都是死廻圈 ,

BTFSS SSPIF
GOTO $-1

可以的話 , 加個TIME OUT來輔助程式的完整性吧!

2004/07/05 20:10
轉換PDF檔 列印






無法在此發表文章
可以在此觀看文章
無法回覆文章
無法編輯自己的文章
無法刪除自己的文章
無法發起投票調查
無法在此投票
無法上傳附加檔案
無法不經審核直接發表文章

[進階搜尋]


搜尋
Microchip連結
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project