• slider image 514
  • slider image 516
  • slider image 517
  • slider image 518
  • slider image 519
:::


Browsing this Thread:   1 Anonymous Users






dsPIC30F4011讀寫內部EEPROM問題!
#1
新會員
新會員


查看用戶資訊
我現在讀寫dsPIC30F4011內部EEPROM,有時候將值寫入EEPROM後,將電源關掉後再將電源開啟,接著讀取EEPROM的值會發現寫入的值跟剛才寫入的不一樣,會變成0xFF,因此想請各版主幫忙看程式是否有問題。

謝謝!

//----寫入eeprom----
void WriteEeprom(unsigned int addr,unsigned int dataSource)
{
addr=addr*2+0xFC00;
NVMCON = 0x4044; // 設定擦除eeprom內資料
NVMADRU = 0x7F; // 將0x7F移至NVM位址暫存器NVMADRU
NVMADR = addr; // 將addr資料移至NVM位址暫存器NVMADRU
asm volatile("push SR"); // 禁止中斷指令
asm volatile("mov #0x00e0,w0");
asm volatile("ior SR");
NVMKEY = 0x55; // 寫入密鎖暫存器NVMKEY指令
NVMKEY = 0xAA;
NVMCONbits.WR=1; // 設定NVMCON暫存器WR位元為1,開始擦除
asm volatile("pop SR");
while(NVMCONbits.WR){continue;}; // 判斷WR位元,擦除完成WR位元為0
NVMCON = 0x4004; // 設定寫入eeprom內資料
TBLPAG = 0x7F; // 將0x7F移至TBLPAG暫存器
WREG4 = addr; // 將addr資料移至WREG4暫存器
WREG5 = dataSource; // 將dataSource資料移至WREG5暫存器
asm volatile("TBLWTL.W W5,[w4]"); // 將資料寫入eeprom位址
asm volatile("push SR"); // 禁止中斷指令
asm volatile("mov #0x00e0,w0");
asm volatile("ior SR");
NVMKEY = 0x55; // 寫入密鎖暫存器NVMKEY指令
NVMKEY = 0xAA;
NVMCONbits.WR=1; // 設定NVMCON暫存器WR位元為1,開始寫入
while(NVMCONbits.WR){continue;}; // 判斷WR位元,寫入完成WR位元為0
asm volatile("pop SR");
NVMCONbits.WREN=0; // 寫入完成將NVMCON暫存器WREN位元設為0
}

//----讀取eeprom----
unsigned int ReadEeprom(unsigned int addr)
{
unsigned int dataSource;
addr=addr*2+0xFC00;
TBLPAG = 0x7F; // 將0x7F移至TBLPAG暫存器
WREG6 = addr; // 將addr資料移至WREG6暫存器
asm volatile("TBLRDL.W [W6],W7"); // 讀取eeprom位址內資料
dataSource=WREG7; // 將WREG7暫存器資料移至U1TXREG暫存器
return dataSource;
}

發表於: 2009/12/23 11:07
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... ]

教育訓練中心

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