會員登陸
帳號:

密碼:

記住我



忘記密碼?

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


正在流覽:   1 名訪客





PIC18 MSSP I2C Slave 問題
新會員
註冊日期:
5月06日 15:12:11
所屬群組:
註冊會員
文章: 2
等級: 1; EXP: 2
HP : 0 / 0
MP : 0 / 0
離線
小弟我目前是當SLAVE與SMBUS的MASTER溝通,

但目前遇到問題如下.
1.正常SMBUS溝通流程為
START->WRITE_ADDRESS->ACK->WRITE_Reg->ACK->Repeat_START->WRITE_ADDRESS->ACK->要寫進去的資料-Value->NO_ACK->STOP

2.小弟的PIC18 SLAVE 目前只有
START->WRITE_ADDRESS->ACK->WRITE_Reg->NOACK

看DOC裡面所描述的
S+MATCH ADDRESS 會產生第一次INTERRUPT ->這邊有進
把BUF讀出來以後,原本BUF內數值ADDRESS就會被清除,並且RELOAD VALUE,然後將IF清除後會再進一次INTERRUPT ->這邊也有進

但第二次進INTERRUPT後,查看BUF竟然也是ADDRESS!?!?
而且這次硬體沒有回ACK,硬體判斷為沒有資料發STOP就結束了

不知道哪邊出了問題,又或是DOC哪邊沒有看到重要的資訊,跪求神人提點提點

6月20日 18:01:38
轉換PDF檔 列印


Re: PIC18 MSSP I2C Slave 問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14821
等級: 73; EXP: 55
HP : 1088 / 1813
MP : 4940 / 81975
離線
看了你的 I2C Master Command 覺得有點怪。 當儒最標準的I2C 格式以 I2C EEPROM 最為標準,例如 24LC02B 的標準元件。
https://www.microchip.com/wwwproducts/en/24LC02B

由 I2C 也會依此標準格式延生出一些進階的使用。我看你的需求有點像一些較複雜 I2C 元件的存取。在這提供一個 MCP9800 I2C 溫度感測器的存、取資料的方式,參考一下是否就是你要的命令流程。

I2C EEPROM 寫入是可以連續寫入的,讀取資料也是可以連續的。但為以 PIC 的 I2C Slave Module 建議是以單一 byte 的是讀取。

附加檔案:



jpg  擷取.JPG (82.29 KB)
16_5d10368a170a6.jpg 718X530 px

6月24日 10:33:46
轉換PDF檔 列印


Re: PIC18 MSSP I2C Slave 問題
新會員
註冊日期:
5月06日 15:12:11
所屬群組:
註冊會員
文章: 2
等級: 1; EXP: 2
HP : 0 / 0
MP : 0 / 0
離線
Hi Ryang
感謝你的回覆
不過我目前是將PIC18這顆當作SLAVE,並非當MASTER
目前是想利用MSSP controller去實作SLAVE
根據PIC18F97此顆IC的DOC內MSSP看起來,他會在Start_condition後將SSPBUF內的數值與SSPADD內的數值做比較,如果符合就會將IF立起來並進入中斷,這時候要將SSPBUF內數值讀出來(讀取後BF自動清0)清除BF過後清除IF,接著會再進一次中斷且SSPBUF會更新成位置後的資料,讀取過後自動將BF清0,BF無法被清0所以SSPOV會=1,接著controller會發STOP_condition

但正常流程只有進入中斷2次
1.BUF數值為符合SLAVE Address的位置
2.BUF數值為位置後的數值
假設我MASTER發 0xcc(address),0x02(offset),0x05(data)
第一次中斷,BUF數值為0xcc
第二次中斷BUF數值為0x02

但是我需要與特定MASTER溝通,須將序列調整為三次我已經將中斷進入調整成3次,但我BUF的數值停留在0x02這個地方,無法更新成0x05,

我想請問有沒有人知道,有沒有辦法將SSPBUF這個暫存器強制清除,或是強制更新數值的方法

6月24日 18:19:27
轉換PDF檔 列印


Re: PIC18 MSSP I2C Slave 問題
版主
註冊日期:
2004/04/30 10:53
來自 CAE, Microchip
所屬群組:
站務管理者
註冊會員
MICROCHIP
文章: 14821
等級: 73; EXP: 55
HP : 1088 / 1813
MP : 4940 / 81975
離線
先看一下 PIC18F4520 I2C Slave Timming 圖:

http://ww1.microchip.com/downloads/en/DeviceDoc/39631E.pdf

頁數第 176 頁開始,那埵頃苭傿 Slave 發生中斷的時機。

也請先參考一下: 17.4.3 SLAVE MODE 章節裡,對 SLave 接收的步驟。

6月27日 13:45:47
轉換PDF檔 列印






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

[進階搜尋]


搜尋
Microchip連結

網頁捷徑
2019 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