作者kingzero (神武信魔)
看板C_and_CPP
標題[問題] 簡單的指標問題(已解)
時間Thu Jul 3 10:01:49 2014
開發平台(Platform): Ansi C 32bit MCU
額外使用到的函數庫(Library Used): 自訂lib.用來控制底層硬體
問題(Question):
I2C無法寫入正確的資料.
EEPROM_Black BOX內已經有預先放了幾筆dummy資料了.
使用指標無法傳入正確的值.全寫入四個全部都是 0xB4.
餵入的資料(Input):
EEPRO_Balck_BOX array裡面的資料
預期的正確結果(Expected Output):
Black_BOX.ROM.EEPROM[0]~[2]的資料正確送出
送出結果應該是 01,02,03
錯誤結果(Wrong Output):
0xB4 0xB4 0xB4
程式碼(Code):(請善用置底文網頁, 記得排版)
我放在這裡了.
好讀版
http://ideone.com/aMGVK5
補充說明(Supplement):
下面的這一個可以正常寫入
LDByteReadI2C(EE_ADDR,0x0001,&PFC_value,2);
這一個寫入的結果錯誤
EEPageWriteI2C(EE_ADDR, &Black_BOX.ROM.EEPROM, 3);
我的傳址應該沒有弄錯吧
我一般都使用全域變數在傳資料,這次是特別使用傳址.
會錯誤是是因為變數宣告的關係嗎?
或者我應該這樣子問,call by adress可以使用在struct上面嗎?
--
在臺灣,何謂
R&D工程師?
1.
Reverse and Decap :IC反向工程,去膠,打開封裝,拍照,複製電路佈局。
2.
Resign and Die :沒死的就操到辭職,沒辭職的就操到死。
3.
Rework and Debug :計畫永遠跟不上變化,變化永遠跟不上老闆的一句話!
4.
Relax and Delay :太過於輕鬆(Relax),那麼就要有schedule delay的準備!
但是外派到大陸的臺灣郎,晚上是
R (鴨)陪客戶,白天是
D (豬)任人宰割!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.8.13.25
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1404352915.A.719.html
※ 編輯: kingzero (101.8.13.25), 07/03/2014 11:07:56
→ saxontai:WriteI2C(&data); -> WriteI2C(*data); 07/03 12:21
回樓上..搞定了.
請問我是哪裡的觀念錯誤?導致於無法正確寫入.
※ 編輯: kingzero (101.8.13.25), 07/03/2014 17:29:40
推 LPH66:WriteI2C 期望你將一個"值"給他讓他寫入 07/03 22:11
→ LPH66:而 data 是個指向"值"的指標, 自然需要 dereference 取值 07/03 22:11
→ LPH66:而不是去加 & 取址 07/03 22:12
那請問我的這一段呼叫可以正常存取?只是運氣好?還是剛剛好可以這樣子使用?
LDByteReadI2C(EE_ADDR,0x0001,&PFC_value,2);
※ 編輯: kingzero (101.8.13.25), 07/04/2014 09:25:17
※ 編輯: kingzero (101.8.13.25), 07/04/2014 09:25:54
推 saxontai:都忘了回來看一下回答有沒有幫助,差點射後不理了 XD 07/04 10:11
※ 編輯: kingzero (115.82.184.179), 07/15/2014 11:38:16