View previous topic :: View next topic |
Author |
Message |
Greg
Joined: 24 Dec 2003 Posts: 7
|
#separate and out of ROM |
Posted: Sat Dec 27, 2003 2:53 pm |
|
|
Hi,
I am programming a PIC16f877 using the PCW PCM C compiler.
I have been getting the error message "out of ROM a segement of the program is too large" i looked in the .sta file and noticed that rom useage is "ROM used: 1835 (90%)" and all my functions are in page 0 and the main function seems to be too big, inside my main function i have relativly little code but i call alot of other functions so i added the #SEPARATE directive before the decleration and definition of some of the bigger functions that i call and continued to call the functions in the same way. this seemed to have no effect. the compiler still complains about being out of ROM. IT appears that all the fucntiosn are still within page 0 after doign this and the rom usage for the main function hasnt changed.
Can anyone give me some tips as to what i may be doing wrong?
Thanks in advance
Greg |
|
|
Greg
Joined: 24 Dec 2003 Posts: 7
|
Greg- |
Posted: Sun Dec 28, 2003 3:19 pm |
|
|
Hi,
I suppose my real problem is understanding how the compiler and the program memory pages work. The pic16f877 has: "8K x 14
words of FLASH program memory" and the compiler is saying that having used 1718 words it is 84% full, what does this mean?
Quote: |
ROM used: 1718 (84%)
330 (16%) including unused fragments
|
I also am having trouble understanding what it means where it says in the .sta file that every funtion in my program is in page '0' surely this is the problem, that page 0 is only 2K and it is now full, how do i make the functions appear in different pages?
Quote: |
Segment Used Free
--------- ---- ----
00000-00003 4 0
00004-007FF 1714 330
|
Any tips or advance are much appreciated,
Thank you
Greg |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Dec 28, 2003 3:40 pm |
|
|
I don't have PCW, so I don't have a .STA file to look at.
However, if this statement that you've posted,
"ROM used: 1718 (84%)" is the same thing that is shown
at the top of the .LST file, then something is wrong.
Can you look at the top of your .LST file and tell me
if it has the statement above ?
The implication of that statement is that your PIC has only
2048 words of ROM, total. But a 16F877 has 8192 words.
Based on your previous post concerning the EEPROM, I have
to ask you this question: Does your version of PCW actually
support the 16F877, or did you substitute another PIC for it in
the #include file statement, in the hope that it would work ?
Also, what version of PCW do you have ? |
|
|
Greg
Joined: 24 Dec 2003 Posts: 7
|
Greg- |
Posted: Sun Dec 28, 2003 4:30 pm |
|
|
Well at the top of the lst file i have this:
Quote: |
CCS PCM C Compiler, Version 3.177d, 15332
Filename: c:\documents and settings\greg\my documents\work\source\main.LST
ROM used: 1718 (84%)
Largest free fragment is 330
RAM used: 102 (58%) at main() level
111 (63%) worst case
Stack: 4 locations
|
the compiler does support this chip and the compiler automatically inserted the #include <16F877.h> when i told it i wanted to use a 16F877 chip. I am sure i am doign something rather silly that isnt allowing me to use more than page0 of the program rom.
Thanks again
Greg |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
Posted: Sun Dec 28, 2003 4:46 pm |
|
|
OK. Finally we get the whole story.
You're using the Demo version.
CCS PCM C Compiler, Version 3.177d, 15332
It has a 2k limit on code size, per the CCS Demo page,
in the section on "About the Demo":
http://www.ccsinfo.com/demo.shtml |
|
|
Greg
Joined: 24 Dec 2003 Posts: 7
|
Greg- |
Posted: Sun Dec 28, 2003 5:57 pm |
|
|
Well, i told you i was probably doing something silly ;)
Thanks for all your help!!
Greg |
|
|
gramya8712 Guest
|
|
Posted: Mon Nov 12, 2007 2:47 pm |
|
|
Hi even i have exactly the same problem of "out of ROM memory"
can any one give suggestions how to correct it and also how to divide the program into different pages??
thanks |
|
|
PCM programmer
Joined: 06 Sep 2003 Posts: 21708
|
|
|
|