帮忙看看片内flash的写问题,檫除没有问题,就是不能写入数据。
谢谢了!
用的是pic18f97j60 ,
#define FLASH_ERASE_SIZE 1024ul
#define FLASH_WRITE_SIZE 64ul
#pragma romdata ROM_CONFIG_SECT=0xb400
static ROM BYTE vConfigData[FLASH_ERASE_SIZE];
#pragma romdata
void flashwrite(unsigned char * source_addr,unsigned char length, unsigned long addr)
{
TBLPTR = (DWORD)vConfigData;
EECON1bits.FREE = 1;
EECON1bits.WREN = 1;
_asm
movlw 0x55
movwf EECON2, ACCESS
movlw 0xAA
movwf EECON2, ACCESS
bsf EECON1, 1, ACCESS //WR
_endasm
EECON1bits.WREN = 0;
TBLPTRL=((addr)&0xFF);
TBLPTRH=(((addr)>>8)&0xFF);
TBLPTRU=(((addr)>>8)>>8);
EECON1=0;
while(length--)
{
TABLAT=*source_addr++;
_asm
TBLWTPOSTINC
_endasm
}
TBLPTRL=((addr)&0xFF);
TBLPTRH=(((addr)>>8)&0xFF);
TBLPTRU=(((addr)>>8)>>8);
EECON1bits.WREN=1; // this is the required sequence
INTCONbits.GIE=0;
EECON2=0x55;
EECON2=0xAA;
EECON1bits.WR=1;
while(EECON1bits.WR);
EECON1bits.WREN=0;
} |