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 Bài Trong Ngày Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 08-07-2006, 05:22 PM   #1
MoH
Đệ 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"?
MoH vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-07-2006, 08:45 PM   #2
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
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
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-07-2006, 10:30 AM   #3
MoH
Đệ 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.
MoH vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-07-2006, 12:46 PM   #4
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
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
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-08-2006, 05:15 PM   #5
MoH
Đệ 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).
MoH vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-08-2006, 11:45 PM   #6
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
:
Trích:
Nguyên văn bởi MoH
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á!
Chỉ cần gọi 1 lần, là nó đã dịch hàm printf vô chương trình rồi, các lần sau chỉ là lệnh gọi hàm, nếu muốn tiết kiệm thì bạn đừng gọi. Hàm printf của thằng CCS khá là nhỏ cơ mà, nhỏ hơn nhiều so với KEIL C (so sánh khập khiễng)

Trích:
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.
Chỉ có 8K word, tính theo byte ko có ý nghĩa vì opcode dài 14bit.
Trích:
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).
biến thì được đặt trong ram, ko liên quan gì đến rom, có thể chương trình của bạn xài quá nhiều mảng có kích thước lớn, nên CCS C ko cho khai báo thêm biến.
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-08-2006, 09:40 AM   #7
hpecom
Đệ 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,
..
hpecom vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-08-2006, 03:08 PM   #8
MoH
Đệ 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.
MoH vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-08-2006, 09:35 AM   #9
bien_van_khat
...Damned...
 
bien_van_khat's Avatar
 
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.
bien_van_khat vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-08-2006, 02:44 AM   #10
linhnc308
Đệ 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
linhnc308 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-08-2006, 10:19 AM   #11
txt
Đệ 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à !!!
txt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-08-2006, 03:01 PM   #12
MoH
Đệ 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.
MoH vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-10-2006, 11:31 AM   #13
txt
Đệ 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?
txt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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

Similar Threads
Ðề 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


Múi giờ GMT. Hiện tại là 02:41 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