• slider image 442
  • slider image 497
  • slider image 498
  • slider image 499
  • slider image 500
  • slider image 502
:::


Browsing this Thread:   1 Anonymous Users






Re: 求助关于dspic30f中关于片内EEPROM读写擦的问题
#4
新會員
新會員


查看用戶資訊
把TBLPAG=0x7F;调换到
NVMADR=tbl_addr+2*tbl_offset;
WREG0=NVMADR;
之前就不会出现NVMADR清空的问题了,但是执行
NVMCONbits.WR=1;还是没有反应

發表於: 2006/5/23 12:05
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 求助关于dspic30f中关于片内EEPROM读写擦的问题
#3
新會員
新會員


查看用戶資訊
多谢指教,又让我知道懂得了一些
但是我验证的时候正是用你给我提供的那个文档进行过单步仿真,发现文档的可以,而我的不行,断点的方法也我试过,可还是不行,所以我才提出来问一下的
还有我上面贴的有点错误,忘了对NVMADR赋值了,现在修改如下
unsigned int Write_Data_EE_Word(unsigned char tbl_offset,unsigned int value)
{
unsigned int tbl_addr=0xFC00;
NVMCON=EE_Word_Write_Code;

NVMADR=tbl_addr+2*tbl_offset;
WREG0=NVMADR;
TBLPAG=0x7F;

WREG1=value;
asm("TBLWTL W1,[W0]");

SRbits.IPL=7;
NVMKEY=0x55;
NVMKEY=0xAA;
Nop();
Nop();
//asm("bset.b 0x0761,#7");
NVMCONbits.WR=1;
while(NVMCONbits.WR==1);
NVMCONbits.WREN=0;
SRbits.IPL=0;
}


我发现一个奇怪的问题,我估计是我的NVMADR出了问题,因为我发现一执行完asm("TBLWTL W1,[W0]");
NVMADR里面的内容就自动被清零了,我想应该是这里出了问题,请帮我看看asm("TBLWTL W1,[W0]");这个语句有什么问题,还有就是//asm("bset.b 0x0761,#7");我用这个就能编译过,而用asm("bset NVMCON,#WR")就编译不通过,不知道哪里出问题了。

發表於: 2006/5/23 11:36
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


Re: 求助关于dspic30f中关于片内EEPROM读写擦的问题
#2
版主
版主


查看用戶資訊
當程式執行到 NVMKEY=0x55 & NVMKEY=0xAA 時,EEPROM 會進行unlocked程序,此一動作必須是連續動作時才會暫時解鎖,正因單步執行ICD2會執行內部的監督程式,所以導致解鎖動作不連貫那就無法正常謝資料到EEPROM了。所以不要對EEPROM寫入程式作單步的仿真,可以用設定斷點的方式來仿真。

Microchip provided the example cod for access Internal EEPROM:
http://www.microchip.com/stellent/idc ... e=SS_GET_PAGE&nodeId=2509


發表於: 2006/5/23 11:20
Twitter Facebook Google Plus Linkedin Del.icio.us Digg Reddit Mr. Wong 頂部


求助关于dspic30f中关于片内EEPROM读写擦的问题
#1
新會員
新會員


查看用戶資訊
unsigned int Write_Data_EE_Word(unsigned char tbl_offset,unsigned int value)
{
unsigned int tbl_addr=0xFC00;
TBLPAG=0x7F;
WREG0=tbl_addr+2*tbl_offset;
WREG1=value;
asm("TBLWTL W1,[W0]");
NVMCON=EE_Word_Write_Code;
SRbits.IPL=7;
NVMKEY=0x55;
NVMKEY=0xAA;
Nop();
Nop();
//asm("bset NVMCON,#WR");
NVMCONbits.WR=1;
while(NVMCONbits.WR==1);
NVMCONbits.WREN=0;
SRbits.IPL=0;
}
以上是我片内EEPROM写的一个子程序,在仿真的时候发现一个奇怪的问题就是单步运行到“NVMCONbits.WR=1”这一步之后,NVMCON中的WR位没办法置1,导致无法进行写操作,不知道为什么,这条指令还受到什么的限制,我看DATASHEET中写到这个位只能软件写1,而不能清零,我想我用的应该没什么错吧,请指教,谢谢!
还有想我用汇编asm("bset NVMCON,#WR")下去试一下,却编译出现这个错误
C:\DOCUME~1\HP\LOCALS~1\Temp/ccgNaaaa.s: Assembler messages:
C:\DOCUME~1\HP\LOCALS~1\Temp/ccgNaaaa.s:5099: Error: Invalid operands specified ('bset NVMCON,#WR').
C:\DOCUME~1\HP\LOCALS~1\Temp/ccgNaaaa.s:5099: Check operand #2. Operand must be between 0 and 15, inclusive.
更不知道怎么纠错

發表於: 2006/5/23 10:26
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... ]

教育訓練中心

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