View Single Post
Old 31-01-2008, 01:04 PM   #1
dvdsoul
Nhập môn đệ tử
 
Tham gia ngày: Jan 2008
Bài gửi: 10
:
Hỏi về table write trong PIC18FXXJXX

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.

thay đổi nội dung bởi: namqn, 31-01-2008 lúc 07:43 PM. Lý do: bổ sung thông tin
dvdsoul vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn