會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





關於mcc產生i2c slave的code
新會員
註冊日期:
2016/10/14 10:48
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 45
離線
各位先進好,
小弟最近在一顆PIC16F18855上架I2C Slave,
並且使用MCC(Version: 3.16)產生的code來做測試,
目前用PICkit Serial Analyzer來做讀寫都很正常,

只是有個疑問是產生出來的code似乎都找不到最底層的drive,
例如甚麼時候clk要拉high.或傳送ack之類的code,
這部分看滿久了都沒再產生的i2c2.c裡面,
想請問是否還有在更底層的code可以看呢?

1月10日 17:00:51
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14126
等級: 72; EXP: 47
HP : 1072 / 1786
MP : 4708 / 70373
離線
I2C Slave 的回應因為是要即時的,所以 ACK/NACK 都是硬體做掉了,所以沒有這部分的程式。


Clk 都是master發出來的總共會有九個clk( 一個Byte), 並在中斷接收裡將 clk 線自動拉成 low 電位將 Master 暫停下來, Slave 離開中斷前再將 clk 釋放後,master 才可以繼續傳送下一個 Byte 的資料。

1月10日 21:07:54
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
新會員
註冊日期:
2016/10/14 10:48
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 45
離線
引用:

Ryang 寫道:
I2C Slave 的回應因為是要即時的,所以 ACK/NACK 都是硬體做掉了,所以沒有這部分的程式。


Clk 都是master發出來的總共會有九個clk( 一個Byte), 並在中斷接收裡將 clk 線自動拉成 low 電位將 Master 暫停下來, Slave 離開中斷前再將 clk 釋放後,master 才可以繼續傳送下一個 Byte 的資料。


原來如此 非常感謝解答!

1月11日 13:33:14
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14126
等級: 72; EXP: 47
HP : 1072 / 1786
MP : 4708 / 70373
離線
請看一下 I2c Slave 的動作圖對 SCL 的回應。

附加檔案:



jpg  擷取.JPG (79.86 KB)
16_5875d373101b0.jpg 934X601 px

1月11日 14:38:34
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
新會員
註冊日期:
2016/10/14 10:48
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 45
離線
引用:

Ryang 寫道:
請看一下 I2c Slave 的動作圖對 SCL 的回應。



不好意思,這邊想問兩個問題,應該是我的觀念還不夠清楚,


(1)照這張圖來看是如果要啟動中斷,是先收完來自master的data才啟動中斷,

直到slave剛開始回傳沒多久中斷就結束了,這樣對嗎?

(2)我目前理解的是,程式部分只負責中斷啟動這段期間的事情,

例如master要讀的話,slave這邊先收一次master要讀的addr(第一次中斷),

將data放進buf(第二次中斷),然後就由硬體將資料回傳回去,

不知道這樣的理解是否正確,還麻煩您解惑,謝謝

1月12日 09:40:22

dusyi 於 2017年01月12日 09:56:38
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14126
等級: 72; EXP: 47
HP : 1072 / 1786
MP : 4708 / 70373
離線
Slave Module 是硬體做的,自動比對 Slave Address 正確才會產生終端並設定 D/A 位元來了解是 Command 還是 Data 的資料,他可以自動回 ACK 訊號。至於中斷的時間會有多久那要看你的軟體要如何處理這中斷的,一般是除殂接收資料後再清除 CPK 釋放 SCL 後就離開中斷了。

至於第二個問題,建議先看一下 Master 的動作,W401 的教育訓練第六章節有詳細的使用 I2C Master 去存取 EEPROM 的詳細動作及說明。
先看懂 Master 後再去了解 Slave 的動作。

1月13日 11:03:26
轉換PDF檔 列印


Re: 關於mcc產生i2c slave的code
新會員
註冊日期:
2016/10/14 10:48
所屬群組:
註冊會員
文章: 7
等級: 1; EXP: 60
HP : 0 / 15
MP : 2 / 45
離線
引用:

Ryang 寫道:
Slave Module 是硬體做的,自動比對 Slave Address 正確才會產生終端並設定 D/A 位元來了解是 Command 還是 Data 的資料,他可以自動回 ACK 訊號。至於中斷的時間會有多久那要看你的軟體要如何處理這中斷的,一般是除殂接收資料後再清除 CPK 釋放 SCL 後就離開中斷了。

至於第二個問題,建議先看一下 Master 的動作,W401 的教育訓練第六章節有詳細的使用 I2C Master 去存取 EEPROM 的詳細動作及說明。
先看懂 Master 後再去了解 Slave 的動作。



非常感謝您的回答,讓我對這部分有較正確的觀念,

謝謝!

1月17日 09:41:40
轉換PDF檔 列印






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

[進階搜尋]


搜尋
線上教學影片
網頁捷徑
2017 Summer Elite 報名
教育訓練
其它網站連結
電話: 02-25000405
產品技術問題產品技術支援專線:0800-717718 台北02-25088600 新竹03-5778366 Ext. 8600 高雄07-2137830 MicrochipDIRECT 專線: 07-2137830
Powered by XOOPS © 2001-2012 The XOOPS Project