• slider image 442
  • slider image 477
  • slider image 479
  • slider image 480
  • slider image 481
  • slider image 482
:::


Browsing this Thread:   1 Anonymous Users




(1) 2 »


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#14
新會員
新會員


查看用戶資訊
;----------------------------
ACK
MOVLW 0000B ;
TRIS PA
BSF PA,SDA
^^^^^^^^^^^^^^^^
為什麼要把SDA先自己拉High哩
理論上I2C BUS只要DEVICE不為BUSY都會自動釋放
BUS成為HIGH , 當然有些周邊或IO要加提升電阻.

MOVLW 0001B ;
TRIS PA
NOP
NOP
NOP
^^^^^^^^^^^^
你等的時間會不會太短了啊@@
BTFSC PA,SDA
GOTO ERROR_BIT
MOVLW 0000B ;
TRIS PA
RETLW 0
;*****************

才三個NOP , 你的CPU RUN多少hz哩??
我建議要等久一點
而且最好是用LOOP來持續判斷比如

WAIT_ACK_CHKPOINT
BTFSS PA,SDA
GOTO GOT_ACK
NOP
DECFSZ WAIT_ACK,F
GOTO WAIT_ACK_CHKPOINT

當然 WAIT_ACK 要放多少自己調Timing吧~
只寫個大概其它自己看看吧~


發表於: 2004/5/31 23:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#13
版主
版主


查看用戶資訊
看別人的程式是一件很辛苦的事,尤其是組合語言。
可不可以請你用數位式波器量SDA & SCL 兩隻腳的波形
一定有錯不然ACK是會從Slave送出來的。

發表於: 2004/5/31 17:55
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#12
新會員
新會員


查看用戶資訊
請問我在傳完8個bit(start+slaveraddress)之後再check
ACK結果都處在1的狀態,試了很多次都是這樣子,請問婐的程式哪裡出錯ㄌㄋ?
;--------------------------
BSF PA,SDA
NOP
NOP
BSF PA,SCL
NOP
NOP
BCF PA,SCL
NOP
NOP
BCF PA,SDA ;START BIT
;---------------------------
MOVLW 07H
MOVWF N_DATA
RUN_LOOP
BTFSS TEMP_DATA,6
GOTO BITLOW
BSF PA,SDA
NOP
BSF PA,SCL
NOP
NOP
NOP
BCF PA,SCL
NOP
RLF TEMP_DATA,F
DECFSZ N_DATA,F
GOTO RUN_LOOP
RETLW 0

BITLOW
BCF PA,SDA
NOP
BSF PA,SCL
NOP
NOP
BCF PA,SCL
NOP
RLF TEMP_DATA,F
DECFSZ N_DATA,F
GOTO RUN_LOOP
RETLW 0
;----------------------------
ACK
MOVLW 0000B ;
TRIS PA
BSF PA,SDA
MOVLW 0001B ;
TRIS PA
NOP
NOP
NOP
BTFSC PA,SDA
GOTO ERROR_BIT
MOVLW 0000B ;
TRIS PA
RETLW 0
;*****************
ERROR_BIT ;CHECK PROGRAM ERROR BIT ********(NG)*********
NOP
NOP
NOP
GOTO ERROR_BIT
;----------------------------

發表於: 2004/5/27 15:49
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#11
初級會員
初級會員


查看用戶資訊
在判斷是不是有ack訊號的時候,最好能設一個最大的時間!不然....當eeprom出問題的時候就等於當機了!對了忘記說了如果是我在寫的時候,我一定是把所以的中斷關掉,也就是那一個時間只寫入eeprom不做其它的事!我試起來感覺這會會比較穩定啦!當然這也還是小弟的拙見!如有謬誤尚請指正,謝謝

發表於: 2004/5/25 16:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#10
版主
版主


查看用戶資訊
如果在第九個 bit 的 clock 時間(SCL由hi變Lo時)
沒收到 low 的 ACK 回應,就表示Slave端接收資料
有錯,此時可重新送出 Repeat Start 信號後,
重新再傳一次資料

發表於: 2004/5/25 15:56
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#9
管理員
管理員


查看用戶資訊
參照:

yichung 寫道:
那傳送方再傳送第9Bit 位High 時,接收方會回應Low...(ACK)
如果沒回應Low的話是不是需要從傳8個bit再繼續Check ACK
是不是這樣子ㄋ??

是的。但是8個BIT之前還要先傳一次START。如此重覆的動作,就是一般在EEPROM資料手冊中寫的"ACKNOWLEDGE POLLING"。

發表於: 2004/5/25 14:38
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#8
新會員
新會員


查看用戶資訊
那傳送方再傳送第9Bit 位High 時,接收方會回應Low...(ACK)
如果沒回應Low的話是不是需要從傳8個bit再繼續Check ACK
是不是這樣子ㄋ??

發表於: 2004/5/25 13:40
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#7
版主
版主


查看用戶資訊
在 Microchip 台灣網站 http://www.microchip.com.tw/example.htm
中的程式編號12 及 12-1 就有範例可供參考,這是使用硬體的 I2C 存取方式。

至於 Microchip 美國所提供的 I2C 應用範例可參考以下之網址
http://www.microchip.com/stellent/idc ... &nodeId=1490&filterID=392
其中AN554 是如何使用軟體的方式來完成 I2C Multi-Master Access. 有興趣的或不妨詳讀相性I2C的功力會大增。

建議如有資料需存在EEPROM最好有check-sum的檢驗機制會比較穩當點。

發表於: 2004/5/24 17:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#6
版主
版主


查看用戶資訊
參照:

yichung 寫道:

請問ACK 與 NO ACK 要如何去判別...





pic 新手
---------------------------------------------------
16c54 ctrl 24lc02
正在研讀如何控制
---------------------------------------------------

當一個byte由傳送方傳給接收方的時候,當那個byte傳完時,在其後緊接著的那一個clock,即為第9個clock時,傳送方的data線上會「傳」高位元(電位)的資料。如果接收方有將該位元拉為低位元(電位),那就表示接收方回了一個ACK;否則就表示回了一個NACK。為什麼將「傳」用引號括起來呢?這是因為其實I2C的CLOCK及DATA線具有所謂的OPEN COLLECTOR的特性;傳高位元,其實就等於沒傳資料,藉以判斷有沒有人將DATA線拉LOW (ACK)。

發表於: 2004/5/24 10:28
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 讀取I2C_EEPROM需要注意什麼地方,請大家指教...
#5
新會員
新會員


查看用戶資訊

請問ACK 與 NO ACK 要如何去判別...





pic 新手
---------------------------------------------------
16c54 ctrl 24lc02
正在研讀如何控制
---------------------------------------------------

發表於: 2004/5/21 10:22
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------