Mình đang viết ctrinh bootloader, trong đó có phần ghi data xuống lên flash memory (ROM) của con PIC18F67J10 vẫn còn bị lỗi. Sau khi thử chạy chức năng ghi này và đọc lại vùng memory vừa được ghi thì thấy ko có gì hết. Code của mình như sau:
Code:
int i;
TBLPTR = addr; // địa chỉ của vùng nhớ mà data đc ghi, ở đây mình dùng 0x2000
// ghi 64 bytes data vào holding register trước khi bắt đầu write
for (i=0;i<64;i++) {
TABLAT = 0x43; // kí tự C sẽ đc ghi vào từng byte bộ nhớ
_asm
TBLWTPOSTINC
_endasm
}
EECON1bits.WREN = 1; // bật bít write, cho phép ghi
INTCONbits.GIE = 0; // tạm thời disable interrupt
EECON2 = 0x55; // unlock register
EECON2 = 0xAA;
EECON1bits.WR = 1; // bắt đầu ghi
while (EECON1bits.WR); // trong khi đang ghi thì chờ
INTCONbits.GIE = 1; // enable interupt
EECON1 = 0x00; // disable WREN , ko cho phép ghi nữa
Trước khi thực thi đoạn code này, vùng nhớ đã được xóa bằng một hàm erase(addr) (đã được kiểm chứng). Nhờ các bạn debug giúp mình. Cám ơn nhiều.