Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
中級會員
|
我又重新測試了一下,終於發現問題出在那邊的
測試程式如下: #include <18F452.H> #rom 0xF00000 = { 0x82 } // IEEE754 float #rom 0xF00001 = { 0x2D } // data ee 可以用byte為單位 #rom 0xF00002 = { 0xE8 } #rom 0xF00003 = { 0xA7 } void main() { int8 x; x=1; } 這個程式compiler後的hex檔可以在allp3 & Mplab5.7 版中正確的載入data ee,而Mplab 6.xx~6.2就會發生,第一筆資料是對的後三筆就都是"0x00"(後三筆有錯誤) 相同的hex files 在MPLAB5.7版與6.xx版載入卻有不同的結果 我原本以為是ccsc的問題(一年改幾十版,每年還要給us.99,真無奈),現在終於知道問題點了
發表於: 2004/10/20 10:00
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
資深會員
|
這樣寫就可以用 MPLAB 讀 HEX 燒 DataEE 啦
#include <18F452.H> #rom 0xF00000 ={0x0201, 0x0403} #rom 0xF00004 ={0x0605, 0x0807} // 18F 的程式碼以 16 bit 的 word 為單位 void main() { int8 x; x=1; } 仔細看這句說的 words ... address is a ROM word address, list is a list of "words" separated by commas HEX 檔 :020000040000FA :1000000002EF00F0F86AD09EEA6AE96AC180C18214 :0A001000C184C196010E066E0300C4 :0200000400F00A :080000000102030405060708D4 // 成了吧 :00000001FF ;PIC18F452 #rom 0xF00000 竟然會寫到 DataEE去,Manual 沒寫,你去哪裡學來這招的? 有夠厲害!
發表於: 2004/10/20 1:59
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
中級會員
|
可能有點地方弄錯了
#rom 0xF00000 = { 0x82 } #rom 0xF000={1,2,3,4} 測試程式如下: #include <18F452.H> #rom 0xF00000 ={1} //不可用上述的方法放資料 #rom 0xF00001 ={2} //只能一個位址放一筆資料 #rom 0xF00002 ={3} #rom 0xF00003 ={4} void main() { int8 x; x=1; } hex files如下: :020000040000FA :1000000002EF00F0F86AD09EEA6AE96AC180C18214 :0A001000C184C196010E066E0300C4 :0200000400F00A :020000000100FD :020001000200FB :020002000300F9 :020003000400F7 :00000001FF ;PIC18F452 使用cod檔載入 data ee寫入ok 使用hex檔載入 data ee寫入就失敗 我也有觀察用hex檔載入後 data ee的內容 第一筆資料是對的後三筆就都是"0x00"(後三筆有錯誤) 我用了一些浮點變數,所以參數區以四個byte為一組data 我用picstart與allp3載入hex檔都可在程式中正確的讀寫 data ee(所以參數寫入應該不會有問題才是,否則讀回來的浮點數值應該會有錯才對),對此不解 謝謝你的回文 (台灣就是要有樣熱心的大大,才會更進步)
發表於: 2004/10/20 1:27
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
資深會員
|
參照:
傷腦筋 #rom 0xF00000 編出來的是在 HEX 檔裡,燒到 Program EE 去,看看 HEX 檔就知道 read_eeprom() 讀的是 Data EE,挖哩,怎能讀到 Program EE?該用 write_eeprom() 寫到 Data EE 才對。 Help -> index -> #rom 看看線上說明吧 Help -> index -> write_eeprom Help -> index -> write_program_eeprom CCS 無法對 Data EE 做初始化,若要用 ICD2 燒進 Data EE則要用 MCH 檔,開 MPLAB,View -> EEPROM -> 滑鼠移到 EEPROM 子視窗上你要的位址,點右鍵,Import Table -> MCH 檔或 TXT 檔均可,格式範例如下 00 00 07 00 00 07 8C 00 00 00 00 50 04 1F 0D 61 67 75 65 73 74 5F 5F 70 6C 61 79 69 6E 67 01 00 我就只會這招啦,知道其他招數的朋友們再教一下吧,謝謝囉 -------------------------------- #rom 0xF000={1,2,3,4} 的效果如下 -------------------------------- #include <18F452.H> #rom 0xF000={1,2,3,4} void main() { int8 x; x=1; } 變成 HEX 檔 ... :020000040000FA :1000000002EF00F0F86AD09EEA6AE96AC180C18214 :0A001000C184C196010E066E0300C4 :08F000000100020003000400FE <--#rom ... 放在這裡 :00000001FF ;PIC18F452 燒進 Program EE 囉,呵呵 #ROM Syntax: #rom address = {list}; Elements: address is a ROM word address, list is a list of words separated by commas Purpose: Allows the insertion of data into the .HEX file. In particular, this may be used to program the '84 data EEPROM, as shown in the following example. Note that if the #ROM address is inside the program memory space, the directive creates a segment for the data, resulting in an error if a #ORG is over the same area. The #ROM data will also be counted as used program memory space. Examples: #rom 0x2100={1,2,3,4,5,6,7,8} -------------- po 了 41 篇之後,終於從"勇於發言"昇級為"熱心公益"啦, 喝杯咖啡,慶祝一下囉
發表於: 2004/10/19 23:18
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
中級會員
|
Date EEprom (ic用18F452)
我是用 #rom 0xF00000 = { 0x82 } 指令去set eeprom 的初值 在程式中用 read_eeprom 指令去讀這個位址的數值 謝謝你對ccsc compiler 一些問題的解惑 對我真的滿有幫助的,再一次謝謝你 另外 pch v3.212版好像如你所說的,沒什麼bug 我的code 在v3.187版本中編譯後執行大都沒什問題 近期會再用 v3.212的試試看,真希望這是最後的版本了
發表於: 2004/10/19 16:10
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
資深會員
|
參照:
Data EE 還是 Program EE ? 我沒用過 DataEE 把你的 TEST.c 貼出來,我試試看
發表於: 2004/10/19 15:29
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
中級會員
|
非常感謝你的回應.
我用了是PCH V3.187 & MPLAB 6.0(5.7也試過) 問題出在EEPROM使用hex檔無法正確用ICD2燒入IC中(cod檔可以) (我在程式段有加入一些EEPROM初始的數值) PICSTART & ALLP3 可以 我會更新到6.2版試試看 PCH compiler參數如下 CCSC +FH +ES +O8 TEST.c
發表於: 2004/10/19 14:02
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
中級會員
|
非常感謝你的回應.
我用了是PCH V3.187 & MPLAB 6.0(5.7也試過) 問題出在EEPROM使用hex檔無法正確用ICD2燒入IC中(cod檔可以) (我在程式段有加入一些EEPROM初始的數值) PICSTART & ALLP3 可以 我會更新到6.2版試試看 PCH compiler參數如下 CCSC +FH +ES +O8 TEST.c
發表於: 2004/10/19 14:01
|
|||
|
Re: CCSC & ICD2燒錄格式 ???
|
||||
---|---|---|---|---|
資深會員
|
參照:
我用 CCSC 加 ICD2加 MPLAB 6.62,沒問題啊。 參閱\r http://www.ccsinfo.com/forum/viewtopi ... 1b146985348b5a17620f9615d 唯一差異,CCSC 編出來的 HEX 檔的最後多了一行, ;PIC16F877 MPLAB 編出來的 HEX 檔沒這行,把它刪掉試試吧 喔,還有一件事 Options -> File Formats -> 8 bit HEX 你該不會是選錯格式了吧 又,CCS 也有出 ICD-U40,只要 USD$75,也有 C-level debug,單行執行,斷點等功能,試試看吧
發表於: 2004/10/19 10:24
|
|||
|