PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 13-01-2009, 12:28 AM   #1
datk45d
Đệ tử 1 túi
 
Tham gia ngày: Feb 2008
Bài gửi: 13
:
Cần giúp đỡ về mảng kích thước lớn trong flash

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.
datk45d vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-01-2009, 12:43 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi datk45d View Post
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,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263

thay đổi nội dung bởi: namqn, 13-01-2009 lúc 12:50 AM.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-01-2009, 01:14 AM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Lỗi mà bạn đã gặp là lỗi (491) can’t find 0x* words for psect "*" in segment "*", đã được mô tả khá chi tiết ở trang 408 của tài liệu hướng dẫn sử dụng cho HTPIC Pro.

Bạn cần một khối nhớ liên tục có kích thước đủ lớn để đặt mảng hằng số vào. Việc này liên quan đến việc bạn cho biết linker phải đặt các psect vào đâu. Làm việc này như thế nào trong HTPIC thì tôi mù tịt. Trong MPLAB C18 chẳng hạn thì tôi chỉ cần chỉnh lại linker script được dùng để liên kết các module vào thành chương trình hoàn chỉnh.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam