會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





使用PIC16F1824的I2C與OZ89202電池保護IC通訊
中級會員
註冊日期:
2014/09/29 12:04
所屬群組:
註冊會員
文章: 46
等級: 5; EXP: 59
HP : 0 / 114
MP : 15 / 973
離線
各位先進好,小弟想要使這兩顆IC用I2C的方式通訊,我有上Microchip找了範例來參考(PIC對EEPROM),但我上網GOOGLE發現,對EEPROM的通訊方式好像跟IC不太一樣?
想請教一下哪邊可以找到對IC通訊的範例呢?是使用C語言的,謝謝!

5月28日 18:06:33
轉換PDF檔 列印


Re: 使用PIC16F1824的I2C與OZ89202電池保護IC通訊
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14052
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4684 / 69401
離線
參照以前的討論路徑:
http://www.microchip.com.tw/modules/n ... t_id=73902#forumpost73902

最後一頁有 W301 的教育訓練裡的 Lab7 裡, 又有一個 I2C Master的範例: "MCP9800 IIC Function.c" 可以參考看看。

5月31日 13:09:39
轉換PDF檔 列印


Re: 使用PIC16F1824的I2C與OZ89202電池保護IC通訊
中級會員
註冊日期:
2014/09/29 12:04
所屬群組:
註冊會員
文章: 46
等級: 5; EXP: 59
HP : 0 / 114
MP : 15 / 973
離線
謝謝版主提供我範例參考
看了LAB7後有些問題想要請教您

在這函式裡:
void IdleI2C( void )
{
while ( ( SSPCON2 & 0x1F ) || ( R_nW ) )
continue;
}

請問為什麼要加一個continue?
請問為什麼不能只單獨確定(SSPCON2 & 0x1F)或者R_nW這個條件就好?為什麼要兩個都同時成立呢?

我的想法是:如果MSSP都不在那五個狀態下,那一定是閒置的狀態。或者是R_nW = 0代表資料沒有在傳輸,也一定是在閒置的狀態下

另外,在這個函式:
unsigned char ReadI2C( void )
{
RCEN = 1; // enable master for 1 byte reception
while ( !BF ); // wait until byte received
return ( SSPBUF ); // return with read byte
}
判斷讀取完成的條件是while(BF),會不會有可能是一種情況BF永遠不可能變成0,而卡死在這個while迴圈裡?

6月14日 17:29:25
轉換PDF檔 列印


Re: 使用PIC16F1824的I2C與OZ89202電池保護IC通訊
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14052
等級: 72; EXP: 35
HP : 1070 / 1783
MP : 4684 / 69401
離線
1. 確實只要偵測得這 SSPCON2 裡的這五個位元即可,致於為何會多加偵測 R/W 位元我也是看了公司的範例程式再加入的。continue; 是可以拿掉的,你就把它當做一個小 Delay 吧!

2. 當設定 RCEN = 1 時,I2C Bus 就會送出九個 clocks 出去,前 8 個 SCL 是讀取 Slave 端 8-bit 的資料,第九個是寫入 ACK/NACK 給 Slave 端做繼續下一個 Byte 的讀取 (ACK) 或結束讀取的操作 (NACK)。
會不會卡住在 while(BF) ? 基本上是不會的,除非 Slave 死掉了,當然好的做法是可以加上讀取時間的 Time-Out 限制。這就要看你的需求了。

6月15日 14:59:22
轉換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