Trích:
Nguyên văn bởi rikimaru87
mình đang bị đau đầu vì chuyện ghi dữ liệu vào EPPROM. mong các bạn giúp:
+dữ liệu là nhiệt độ của cái lò sấy ( ghi từng giây )
+mạch của mình sử dụng IC 24c256. truyền bằng I2C.
+sử dụng tiny bootloader cho PIC 16f877A
mỗi lần ghi dữ liệu vào eeprom xong làm sao để lưu dữ liệu đó . và khi khởi động lên thì ghi tiếp vào vùng nhớ tiếp theo . mỗi lần khởi động mạch thì giá trị của biến địa chỉ address lại quay về 0 .
mình muốn mỗi lần sấy lò xong . ghi dữ liệu xong. nó lưu vô epprom . khi khởi động lại . sấy lò tiếp . thì nó ghi vào vùng nhớ tiếp theo ( hiện tại khởi động xong nó ghi lại vùng nhớ cũ vì các biến quay lại giá trị ban đầu )
thật sự mong các bạn giúp đỡ mình .
|
Do tốc độ ghi dữ liệu vào Eeprom của bạn khá cao nên bạn muốn ghi vào nhiều nơi để tăng thời gian "sống" cho dữ liệu của bạn đúng không?
Bạn có thể ghi block dữ liệu của bạn vào eeprom và 1 byte checksum (XOR), giả sử dữ liệu của bạn là 4 byte, vậy bạn cần ghi block 5 byte, lần lượt ở các địa chỉ: 0x00, 0x05, ...., bạn sẽ mất khoảng thời gian nhỏ khi khởi động bằng các đọc tất cả các block đó và tính checksum 4 byte ,so sánh với byte 5, khi nào bạn phát hiện checksum không đúng thì địa chỉ trước đó chính là dữ liệu bạn ghi cuối cùng, còn khi địa chỉ vượt qua giới hạn của eeprom bạn có thể đọc dữ liệu cuối cùng và tiến hành ghi đè lên block đầu tiên.