• slider image 442
  • slider image 483
  • slider image 484
  • slider image 485
  • slider image 486
  • slider image 487
:::


Browsing this Thread:   1 Anonymous Users




« 1 (2)


Re: 為什麼EEPROM寫不進去??
#10
版主
版主


查看用戶資訊
合理懷疑,你是用 ICD2 來除錯,程式修改過的 EEPROM 並不會直接反應在 MPLAB IDE 下,你必須用讀取 Device 地方式更新 EEPROM 地視窗,或在此視窗下按老鼠右鍵一下 refresh 地功能來更新 EEPROM視窗。
或用 MPLIB SIM 來模擬,這樣就是直接修改EEPROM 地資料也就不用更新。

發表於: 2008/9/22 8:25
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#9
資深會員
資深會員


查看用戶資訊
要用 c 是無所謂,但是要 debug

還是請你貼 asm list file 上來

誰知道你的 c compiler 到底『私自』做了什麼事

新手學 pic 應該要由 asm 上手,

雖然一開始走得慢,但是這樣才有機會走得遠

用 c 雖然看起來走得快,但是一出問題,還是得回歸 asm

發表於: 2008/9/20 1:30
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#8
初級會員
初級會員


查看用戶資訊
感謝jlian大的指點,小弟還是式不出來,所以用Debug模式下,給EEPROM值,然後讀取!!讀取是沒問題,但還是寫不進去!!請問我是不是還需要設定什麼初始值嗎??
再次謝謝jlian大的指點!!對於我這種接觸PIC不久的人而言,真的收穫不少!!謝謝!!

char DATA_EE_ADDR=0x40;
char DATA_EE_DATA=0x41;

//---------------------- write EEPROM ---------------------//
void writeeeprom(void)
{
EEADR=0;
EEDAT=0;
EEADR=DATA_EE_ADDR;
EEDAT=DATA_EE_DATA;
//EEPGD=0;
//WREN=1;
EECON1=0b00001100;
GIE=0;
while(GIE==1){INTCON=0b00000000;}
EECON2=0x55;
EECON2=0xAA;
WR=1;
while(WR);
GIE=1;
WREN=0;
}//void writeeeprom

//---------------------------- Read EEPROM -------------------//
void readeeprom(void)
{
readEE=0;
EEADR=0x11; //強制給值
EECON1=0b00000001;
//EEPGD=0;
//RD=1;
readEE=EEDAT;
}

void main(void)
{
INTCON=0b11001000;
readeeprom();
writeeeprom();
}

發表於: 2008/9/19 19:13
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#7
資深會員
資深會員


查看用戶資訊
你好:
post hitec-16C for PIC16f917 to you:

void eeprom_write(uchar value,uchar addr)
{
EEDATA=value;
EEADR=addr;
EEPGD=0;
WREN=1;
GIE=0;
EECON2=0x55;
EECON2=0xAA;
WR=1;
GIE=1;
WREN=0;
while(WR);
}
試試看!
Thanks.

發表於: 2008/9/19 11:39
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#6
初級會員
初級會員


查看用戶資訊
感謝jlian大,小弟把程式修改如下,但似乎還是不動,請問大大該怎麼解??還是寫不進去,真是讓人心急!!


char DATA_EE_ADDR=0x20;
char DATA_EE_DATA=0x45; //

void writeeeprom(void)
{
EEIF=0;
EEADR=0;
EEDAT=0;
EEADR=DATA_EE_ADDR; EEDAT=DATA_EE_DATA;
EEPGD=0;
WREN=1; GIE=0;
EECON2=0x55;
EECON2=0xAA;
WR=1; GIE=1;
asm("nop");
asm("nop");
while(!EEIF);
{
}
EEIF=0;
WREN=0;
}

void interrupt isr_Sevr ( void )
{
writeeeprom();
}

發表於: 2008/9/19 11:19
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#5
資深會員
資深會員


查看用戶資訊
你好:
先用SIM模擬,須先將EEPROM視窗打開,
在程式中的寫完EEPROM後設斷點,
看EEPROM是否有寫入.
Thanks.

發表於: 2008/9/19 10:31
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#4
資深會員
資深會員


查看用戶資訊
你好:

int DATA_EE_ADDR=0x20;
int DATA_EE_DATA=0x41;

char DATA_EE_ADDR=0x20;
char DATA_EE_DATA=0x41;
用我給的code試試.
Thanks.

發表於: 2008/9/19 10:26
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#3
初級會員
初級會員


查看用戶資訊
感謝jlian大,不過小弟手邊沒有18F,所以還是要用16F來做!!不過真的感謝回覆!!
順便一問,我從view>EEPROM視窗中,看到都是FF,都燒不進去,實在是太奇怪了!!

發表於: 2008/9/19 9:50
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 為什麼EEPROM寫不進去??
#2
資深會員
資深會員


查看用戶資訊
你好:
EEIF=0;
EEADR=addr;
EEDATA=value;
//EEPGD=0;
//CFGS=0;
WREN=1;
GIE=0;
EECON2=0x55;
EECON2=0xAA;
EEWR=1;
GIE=1;
//while(EEWR);
while(!EEIF);
EEIF=0;
WREN=0;
用18F試試看!
Thanks.

發表於: 2008/9/19 9:29
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


為什麼EEPROM寫不進去??
#1
初級會員
初級會員


查看用戶資訊
各位前輩好,小弟剛接觸單晶片沒多久,問題真是一大堆!!希望前輩指導,如果問的問題很低階,還請多包含!!
請問前輩們,小弟使用16F883,我照著datasheet上的範例,為什麼還是寫不進去??是我有遺漏什麼嗎??還是需要設定什麼我沒設定??還請大家多指導,謝謝!!


int DATA_EE_ADDR=0x20;
int DATA_EE_DATA=0x41;
//----------------------------------------
EEADR=DATA_EE_ADDR;//Data Memory Address to write
EEDAT=DATA_EE_DATA; //Data Memory Value to write

EEPGD=0; // EECON1 Program/Data EEPROM Select bit
WREN=1; // EECON1 EEPROM Write Enable bit
GIE=0; // disable INT
EECON2=0x55;
EECON2=0xAA;
WR=1; // EECON1 Write Control bit
GIE=1; // Enable INT
asm("nop"); // Assembly no operation
asm("nop"); // Assembly no operation
WREN=0;

發表於: 2008/9/18 21:23
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部







You can view topic.
不可以 發起新主題
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.
You cannot use topic type.
You cannot use HTML syntax.
You cannot use signature.
You cannot create PDF files.
You cannot get print page.

[進階搜尋]


:::

Microchip連結

https://www.facebook.com/microchiptechnologytaiwan/
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=13
https://mu.microchip.com/page/tmu
http://elearning.microchip.com.tw/modules/tad_link/index.php?cate_sn=1
https://page.microchip.com/APAC-PrefCenters-TW.html
http://www.microchip.com/
http://www.microchip.com/treelink
http://www.microchipdirect.com/
http://www.microchip.com.cn/newcommunity/index.php?m=Video&a=index&id=103
http://www.microchip.com.tw/modules/tad_uploader/index.php?of_cat_sn=2
http://www.microchip.com.tw/Data_CD/eLearning/index.html
http://www.microchip.com.tw/RTC/RTC_DVD/
https://www.microchip.com/development-tools/
https://www.youtube.com/user/MicrochipTechnology
[ more... ]

教育訓練中心

!開發工具購買
辦法說明 [業界客戶] [教育單位]
----------------------------------
!校園樣品申請
辦法說明 [教師資格] [學生資格]
----------------------------------