Ðăng Nhập

View Full Version : Lưu data vào EEPROM trong PIC18


sit_alone76816
24-05-2010, 11:00 AM
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
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
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
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õ

- 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);