Trích:
Nguyên văn bởi datk45d
Chào các bác.
Tôi đang có một ứng dụng dùng pic16f886, trong đó đọc lần lượt các giá trị trong flash và đưa ra spi. Tôi dùng khai báo "const unsigned char data[]={...}" để đặt sẵn các giá trị trong flash. Chương trình OK, nhưng chỉ với kích thước giới hạn nhỏ hơn 0x800. Còn với mảng dữ liệu lớn hơn thì không được, HTPIC pro báo:"can't find 0x801 words for psect "strings" in segment "CODE" ". Có vẻ như HTPIC không thể đặt dữ liệu trong 2 block flash thì phải. Bác nào biết cách khắc phục xin giúp đỡ. Thank trước.
|
Mời bạn xem hình 2-3 trong datasheet của PIC16F886. Bộ nhớ chương trình của PIC16F886 được tổ chức thành 4 trang (trang 0 đến trang 3, mỗi trang có độ dài 0x800 = 2048 word). Để truy cập dữ liệu nằm ở nhiều trang thì cần theo dõi và cập nhật thanh ghi PCLATH cho tương ứng với trang cần dùng.
Bạn thử tách dữ liệu của bạn thành nhiều khối có độ dài 2048 xem. Tôi không dùng HTPIC nên không rõ cách làm cụ thể như thế nào trong HTPIC, bạn nên vào diễn đàn của HTPIC (
http://www.htsoft.com/support/forums.php) để hỏi.
Về thuật toán truy cập bảng kích thước lớn, bạn có thể tham khảo piclist (
www.piclist.com), nhưng code mẫu của họ thường dùng hợp ngữ. Chẳng hạn trang này:
http://www.piclist.com/techref/microchip/bigtable.htm.
Thân,