PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Lưu data vào EEPROM trong PIC18 (http://www.picvietnam.com/forum/showthread.php?t=6404)

sit_alone76816 24-05-2010 11:00 AM

Lưu data vào EEPROM trong PIC18
 
Em thấy trong con PIC có vùng EEPROM khoảng 128Bytes. Thế là em định dùng nó để lưu data, nhưng khổ nỗi, em Write và Read thì ok hết, nhưng khi tắt nguồn và On lại thì chăng thấy data đâu nữa, không biết làm thế nào để dữ liệu không bị mất nữa. Code của em như sau :

//Write
EEADR=0x01;
EEDATA=27;
EECON1bits.EEPGD=0;
EECON1bits.CFGS=0;
EECON1bits.WREN=1;

EECON2=0x55;
EECON2=0xaa;
EECON1bits.WR=1;
Delay10KTCYx(150);

EECON1bits.WREN=0;

//Read
EECON1bits.WREN=0;
EEADR=0x01;
EECON1bits.EEPGD=0;
EECON1bits.CFGS=0;
EECON1bits.RD=1;
Delay10KTCYx(150);

c=EEDATA;

Kính mong các anh chị hướng dẫn cho em. Chân thành cảm ơn các anh chị !

Mr.Bi 26-05-2010 04:38 PM

- ghi dữ liệu vào eeprom : write_eeprom( địa chỉ , dữ liệu)
vd : mún ghi dữ liệu 0x55 vào ô nhớ thứ 2 ta làm như sau write_eeprom(2,0x55)
- đọc dữ liệu ra : biến = read(địa chỉ)
vd : đọc dữ liệu từ ô nhớ thứ 5 ta viết a = read(5);

sit_alone76816 26-05-2010 11:52 PM

Bạn hổng hiểu ý của mình rồi, ý của bạn là lưu vào rom ngoài, cho nên dùng thư viện có sẵn đó. Nhưng mình dùng là rom nội của PIC nên không thể dùng theo cách đó đuợc đâu !!!

Mr.Bi 29-05-2010 09:44 AM

Trích:

Nguyên văn bởi sit_alone76816 (Post 36313)
Bạn hổng hiểu ý của mình rồi, ý của bạn là lưu vào rom ngoài, cho nên dùng thư viện có sẵn đó. Nhưng mình dùng là rom nội của PIC nên không thể dùng theo cách đó đuợc đâu !!!

ek , u còn k phân biệt đc đâu là internal ROM , external ROM mà cũng phán bừa thế . ROM ngoài làm j thực hiện đc những câu lệnh write_eeprom , read_eeprom dễ dàng thế . Những câu lệnh t đưa là áp dụng cho internal ROM đó u . Lạy lun .

sit_alone76816 29-05-2010 09:01 PM

ok, tại vì U đang nói vế cách lập trình bằng CCS thì phải. Thật xin lỗi vì mình đã không nói rõ là mình đang dùng MPLAB --> C18, nhưng vấn đề đó không quan tâm. Vì phần ghi và đọc data mình làm ok hết. Nhưng vấn đề là ở chỗ khi mình reset hoặc tắt nguồn thì data lại không còn nữa. Mình hổng biết có vấn đề gì nữa .

Mr.Bi 30-05-2010 09:37 AM

Trích:

Nguyên văn bởi sit_alone76816 (Post 36405)
ok, tại vì U đang nói vế cách lập trình bằng CCS thì phải. Thật xin lỗi vì mình đã không nói rõ là mình đang dùng MPLAB --> C18, nhưng vấn đề đó không quan tâm. Vì phần ghi và đọc data mình làm ok hết. Nhưng vấn đề là ở chỗ khi mình reset hoặc tắt nguồn thì data lại không còn nữa. Mình hổng biết có vấn đề gì nữa .

- điều đó có nghĩa u chưa ghi đc vào eeprom nội của PIC .
- Chú í sau mỗi lần nạp code , eeprom trong PIC sẽ bị xóa . có thể u rơi vào trường hợp này . Để khắc phục , trên mạch thiét kế nút bấm, hoặc thiết kế giao diện trên PC , load dữ liệu từ PC xuống PIC .

sit_alone76816 30-05-2010 12:04 PM

Cảm ơn U ! Vậy bạn có ghi vào EEprom của pic bao giờ chưa vậy, có thể share cho mình được không ?? Tham khảo thêm !!

Mr.Bi 31-05-2010 12:52 AM

Trích:

Nguyên văn bởi sit_alone76816 (Post 36418)
Cảm ơn U ! Vậy bạn có ghi vào EEprom của pic bao giờ chưa vậy, có thể share cho mình được không ?? Tham khảo thêm !!


tui đưa cách ghi đọc eeprom nội dùng trình dịch CCS , còn viết trong MPLAB thì chưa dùng nên k bik rõ

Trích:

Nguyên văn bởi Mr.Bi (Post 36300)
- ghi dữ liệu vào eeprom : write_eeprom( địa chỉ , dữ liệu)
vd : mún ghi dữ liệu 0x55 vào ô nhớ thứ 2 ta làm như sau write_eeprom(2,0x55)
- đọc dữ liệu ra : biến = read(địa chỉ)
vd : đọc dữ liệu từ ô nhớ thứ 5 ta viết a = read(5);



Múi giờ GMT. Hiện tại là 02:57 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam