![]() |
|
Tài trợ cho PIC Vietnam |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 18
: |
bác fall cho em hỏi tý về CCSC tại sao lại "Out of ROM" sớm thế?
Em đang dùng bản CCSC 3.227.
Chương trình em viết chỉ khoảng 1000 dòng. Và bình thường dịch nó chỉ báo là chiến 54% ROM và 48%RAM, nhưng khi em khai báo thêm vài biến int16 thì nó lại báo là "Out of ROM, a segment or the program is too large @MUL1616"? |
![]() |
![]() |
![]() |
#2 |
PIC Bang chủ
|
Em phải xem lại rằng, trong quá trình sử dụng, biến đó em có thao tác gì nhiều với nó không, và nếu muốn hỏi về source, thì em nên post toàn bộ source lên mạng, nếu không không ai có thể kiểm tra hoặc giúp em.
Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
![]() |
![]() |
![]() |
#3 |
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 18
: |
Vì một vài lý do nên em không thể up code lên được.
Nhưng em nhận thấy 1 điều rằng, nếu chỉ có viết code mà không có lệnh printf thì không sao, nhưng nếu có lệnh printf thì đến khoảng 60% của ROM thì nó sẽ báo là Out of ROM.==> Nên rất khó debug chương trình. |
![]() |
![]() |
![]() |
#4 |
PIC Bang chủ
|
Nếu không tiện gửi chương trình, cách duy nhất em phải tự làm, đó là mở ASM của chương trình ra kiểm tra lại, xem chỗ nào em viết, nó dịch ra sao. Nếu nó dịch sai, cần phải đổi lại cấu trúc chương trình, em thử cài các phiên bản mới vào và dịch thử, xem nó như thế nào.
Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
![]() |
![]() |
![]() |
#5 |
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 18
: |
giờ chương trình của em đã lên đến 80% ROM rồi, do không dùng nhiều lênh printf. hic hic ==> Khó debug quá!
Không biết thằng CCSC này nó dịch kiểu gì mà ROM chương trình của 877A là 14K mà lại nhanh hết kinh khủng. So với chương trình tương đương viết cho 8051 thì của 877A chiếm nhiều tài nguyên hơn rất nhiều lần (dùng AT89C52 thì viết thoải mái trong khi ROM có 8K còn 877A với mức độ ROM là 85% thì không thể khai báo thêm 1 biến int16). |
![]() |
![]() |
![]() |
#6 | |||
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Trích:
Trích:
Trích:
|
|||
![]() |
![]() |
![]() |
#7 |
Đệ tử 2 túi
Tham gia ngày: Nov 2005
Bài gửi: 45
: |
Nếu bạn thực hiện các lệnh so sánh trên số thực thì dung lương chương trình tăng rất nhanh. Nếu có thể được thì nên khai báo các biến vừa sát với tầm sử dụng, như thế vừa tiết kiệm RAM vừa tiết kiệm ROM. Nên hạn chế dùng biến số thực.
__________________
Biết thì nói là biết, Không biết thì nói là không biết, .. |
![]() |
![]() |
![]() |
#8 |
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 18
: |
Mình cũng rất để ý đên chuyện khai báo các biến sát với tầm sử dụng. Nhưng do yêu cầu của bài toàn cần tương đối nhiều biến. Có thể mình phải tìm 1 loại PIC mới có dung lượng lớn hơn vậy. Ai có ý kiến nên sử dụng loại PIC nào cho hợp lý không cho em tham khảo với.
|
![]() |
![]() |
![]() |
#9 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Có lẽ bạn dùng printf để xuất lên máy tính để debug? Theo tôi, bạn có thể dùng ICD2 tiện lợi hơn nhiều, tất nhiên chi phí bỏ ra cũng ko nhỏ.
Bạn ko thể upload code của bạn, nhưng để mọi người dễ đoán, bạn có thể đưa thêm thông tin về chương trình của bạn. Ví dụ, bao nhiêu biến kiểu gì, thực hiện giải thuật gì, sử dụng những phép toán số học nào .... Nếu bạn thực sự cần pic nhiều RAM hơn thì chỉ còn cách chuyển sang PIC18, VD 18F458, 1536 byte RAM, 16K Word. Tôi nghĩ con này đủ cho bạn xài, vì tui đã viết chương trình trong đó sử dụng thoải mái các phép nhân chia số thực dấu chấm động + 1 bảng dữ liệu trong ROM gần 1K Word với C18. |
![]() |
![]() |
![]() |
#10 |
Đệ tử 5 túi
Tham gia ngày: Oct 2005
Bài gửi: 117
: |
Vấn đề bạn MoH hỏi mình có thể giúp đc.
Mỗi con PIC có RAM chia làm các bank RAM khác nhau, con 877A có 4 bank, mỗi bank đều có các vị trí RAM Free để bạn khi dùng CCS thì chương trình sẽ khai báo tương ứng vào đó, khi dịch nếu bạn dùng tính năng xem phân bổ bộ nhớ RAM cho PIC thì bạn sẽ thấy các biến tương ứng với các vị trí nào trong RAM. Có 1 điều củ chuối trong CCS là vơi PIC 16F tức dòng 14bit thì CCS nó chỉ dùng RAM trên Bank0 để khai báo, nếu hết nó sẽ báo lỗi mặc dù các bank khác chưa đụng tới.Khắc phục lỗi này bạn có thể xem help dùng #locate để định lại vi trí biến trong RAM VD int16 bien_16_bit; #locate bien_16_bit = 0x110 // Vi tri RAM Bank 2 Xem thêm trong Help của CCS
__________________
CallerID, Ethernet-RS232, PICWEB, Cảnh báo BTS Giải pháp toàn diện giám sát - điều khiển từ xa qua GSM/Internet 0988006696 http://linhnc308.blogspot.com linhnc308@gmail.com |
![]() |
![]() |
![]() |
#11 |
Đệ tử 2 túi
Tham gia ngày: Sep 2005
Bài gửi: 32
: |
Bạn chưa đọc kỹ CCS tiếng Việt . Hãy khai báo #device = *16 , thì sẽ dùng trọn 768 byte RAM và khai báo mảng hằng số trên 256 byte ROM . Còn PIC 18 thì *=16 là mặc định nên dùng hết RAM được .Nhưng nếu thử *=8 thì chỉ dùng tối đa 256 byte RAM và khai báo mảng hằng số tối đa 256 byte ROM , nếu khai báo hơn nó sẽ báo lỗi ( có thể là out of RAM chăng ?).Khà khà !!!
|
![]() |
![]() |
![]() |
#12 |
Đệ tử 1 túi
Tham gia ngày: Dec 2005
Bài gửi: 18
: |
Cam on bac linhnc308 va txt da chi bao, dung la em chua doc ky tai lieu ve CCSC, sau khi dung khai bao #device *= 16 thi RAM giam xuong rat nhieu.
|
![]() |
![]() |
![]() |
#13 |
Đệ tử 2 túi
Tham gia ngày: Sep 2005
Bài gửi: 32
: |
MoH:
lỗi " out of ROM , segment too large " được mô tả chi tiết trong danh mục các loại lỗi trong HELP của CCS. Đây là do viết hàm dài quá 1 trang 512 byte từ lệnh hoặc do các hàm inline gọi nhau vượt quá dung lượng trên . Không rõ là do cấu trúc phần cứng hay phần mềm? |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
"PIC16F877A!NÀO TA CÙNG CHAT!" | ntc | Cơ bản về vi điều khiển và PIC | 75 | 27-12-2010 05:32 PM |
Hội thảo: "Tầm nhìn dientuvietnam 2006" | falleaf | Đóng góp ý kiến | 2 | 03-08-2006 06:48 PM |
Ý kiến về "Tài liệu hướng dẫn PIC - Tiếng Việt" | baoquyen | Đóng góp ý kiến | 8 | 04-12-2005 10:04 PM |
"Mechatronics handbook " | elecminh | Điều khiển | 3 | 07-09-2005 12:42 AM |
Nộp bài tập "Hoc PIC trong 1 ngày" | teo | Cơ bản về vi điều khiển và PIC | 5 | 02-06-2005 01:11 AM |