CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

16F877A getting stack overflow, why? *** Locked
Goto page 1, 2  Next
 
Post new topic   This topic is locked: you cannot edit posts or make replies.    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

16F877A getting stack overflow, why? *** Locked
PostPosted: Wed Feb 26, 2014 10:55 pm     Reply with quote


++++++++++++++++++++++
Locked.

Reason: Thread going nowhere. No info from O.P.

Suggestion: Search forum archives.

- Forum Moderator
++++++++++++++++++++++



Hi pcm_programmer and telmah:)

i am having stack overflow at pic 16f877A here what is written at top of my .lst file:

Code:

               ROM used: 4320 words (53%)
                         Largest free fragment is 2048
               RAM used: 70 (19%) at main() level
                         90 (24%) worst case
               Stack:    2 locations


As you can see my rom and ram usages are ok. Why am i getting stack overflow?
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 10:59 pm     Reply with quote

You are only using 2 stack locations. Why do you think you're getting
stack overflow ?
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 11:06 pm     Reply with quote

sorry, what do you mean by only using two stack locations?
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 11:12 pm     Reply with quote

From your first post:
Quote:

ROM used: 4320 words (53%)
Largest free fragment is 2048
RAM used: 70 (19%) at main() level
90 (24%) worst case
Stack: 2 locations


What device or program is reporting to you that you have stack overflow ?
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 11:15 pm     Reply with quote

ok, so how to increase the stack location?
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
PCM programmer



Joined: 06 Sep 2003
Posts: 21708

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 11:22 pm     Reply with quote

I don't want to continue this because you're ignoring my requests for
more information and not co-operating with the trouble-shooting process.
I'm going to quit for the night. Someone else may want to work on it later.
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Wed Feb 26, 2014 11:25 pm     Reply with quote

my apologies, i did not see your questions at the end of your message. I am simulating my .hex at proteus so it is giving me this error.
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
newguy



Joined: 24 Jun 2004
Posts: 1903

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 12:05 am     Reply with quote

http://www.ccsinfo.com/forum/viewtopic.php?t=47549
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 12:11 am     Reply with quote

Hi newguy,

this is not a proteus question. The proteus only provides me the simulation results.

As you can see from the previous posts, i am getting stack overflow. I don't really know the reason why? according to .lst files there are 2 stack locations. As far as i know compiler manages the stack location size. My rom and ram usages are fair so why i am getting this error?

If you be much more educative than posting a link to no more proteus questions because my post includes the word "proteus", i will be glad:)
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
RF_Developer



Joined: 07 Feb 2011
Posts: 839

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 2:58 am     Reply with quote

palyancodr wrote:
this is not a proteus question. The proteus only provides me the simulation results.

As you can see from the previous posts, i am getting stack overflow. I don't really know the reason why? according to .lst files there are 2 stack locations. As far as i know compiler manages the stack location size. My rom and ram usages are fair so why i am getting this error?

If you be much more educative than posting a link to no more proteus questions because my post includes the word "proteus", i will be glad:)


As you should know had you read the datasheet carefully, this PIC, like most has a fixed hardware stack. You can't "manage" it. It simply "is".

The question remains and is pertinent: how do you *know* you are seeing stack overflow? What is reporting it? Where does that information come from? The stack usage of reported by the compiler is based on static analysis of the code, its what the code could do, under worst case: its the level of nesting of routines. RAM and ROM usage have nothing to do with stack usage. The stack is not even in RAM.

If its the simulation, i.e. Proteus/ISIS, that's saying there's stack overflow, then that clearly is a simulation issue. As the hardware cannot tell you - many PICs wont even restart/trap/whatever when the stack overflows as there's no hardware stack check - then it suggest very strongly that it is simulation that's alerting you to the "overflow".

There are stack overflow issues with some PICs. That is primarily on 24 series PICs which do have a more conventional RAM based stack, and for which the default allocation is often insufficient. ON 24s its common to have to increase, in code, the stack allocation, on anything but the simplest code. This does not affect 18s, 16s, 12s or 10 series PICS which all have fixed, hardware stacks of various sizes. The datasheet, in several places, but most clearly in the memory map diagrams on page 15, shows PIC16F877A has an eight level stack, of which you are using two.

The Proteus simulator, ISIS, while being good for many things, has a lot of serious problems simulating PICs. That's a fact. Its so much a fact that we've grown averse to answering any Proteus related questions. It shows configurations working that cannot work on real hardware, and it fails with things that work in hardware. Simple things that is, stuff it really ought to get right. A lot of developers' and our time is regularly wasted by Proteus issues.
temtronic



Joined: 01 Jul 2010
Posts: 9164
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 7:14 am     Reply with quote

re: 'simulation'. The major problem with 'simulators' is they do NOT simulate the real world.Instead they 'interpret' your code based upon what some programmer 'thinks' should happen NOT what actually happens.
Since YOU have NO control over what the 'simulator' thinks is right or wrong you're led into believing ISIS is alway right.
Case in point. ISIS doesn't care IF there's NO crystal attached to the 877 in the shcematic, yet will 'simulate' that the PIC is running at 20 MHz! Fine, program works you(ISIS) say, you make 1000 PCBs for production,install all the parts but NO crystal(it's NOT in the schematic, ISIS says not needed),go to test before product is shipped.....oops they do NOT work! 'But it did in the simulation'.....Now you've got thousands of dollars in scrap PCBs, angry clients and an empty bank account.

I've been in this field since 1974 and there isn't any simulator I've met or used that 100% correctly simulates the PIC.99% is NOT good enough!
The point is do NOT trust simulators, always test in the real world,with
real PICs and parts.

hth
jay
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 7:29 am     Reply with quote

Quote:
As you should know had you read the datasheet carefully, this PIC, like most has a fixed hardware stack. You can't "manage" it. It simply "is".


That is what i know.

Quote:
The question remains and is pertinent: how do you *know* you are seeing stack overflow? What is reporting it? Where does that information come from? The stack usage of reported by the compiler is based on static analysis of the code, its what the code could do, under worst case: its the level of nesting of routines. RAM and ROM usage have nothing to do with stack usage. The stack is not even in RAM.


I was suspected when i saw pic restarts it self on hardware, then i check the proteus results than it is clearly stack issue for me. On the other hand, when i delete some pice of code, code works. If i add let's say one line it does not work and goes to restart loop. Why this can happen?

Quote:
If its the simulation, i.e. Proteus/ISIS, that's saying there's stack overflow, then that clearly is a simulation issue. As the hardware cannot tell you - many PICs wont even restart/trap/whatever when the stack overflows as there's no hardware stack check - then it suggest very strongly that it is simulation that's alerting you to the "overflow".


i don't understand why you suspicious from the proteus from the first hand. I got same results from proteus every single time what i got from real tests. What do you use for simulation? And yes the pic i am using 16f877A going into restart loop i think its because it is having stack overflow.

Quote:
There are stack overflow issues with some PICs. That is primarily on 24 series PICs which do have a more conventional RAM based stack, and for which the default allocation is often insufficient. ON 24s its common to have to increase, in code, the stack allocation, on anything but the simplest code. This does not affect 18s, 16s, 12s or 10 series PICS which all have fixed, hardware stacks of various sizes. The datasheet, in several places, but most clearly in the memory map diagrams on page 15, shows PIC16F877A has an eight level stack, of which you are using two.


I agree in this point that pic 24 series having that issue and yes 16f877 has fixed stack and i am using only 2 of 8.

Quote:
The Proteus simulator, ISIS, while being good for many things, has a lot of serious problems simulating PICs. That's a fact. Its so much a fact that we've grown averse to answering any Proteus related questions. It shows configurations working that cannot work on real hardware, and it fails with things that work in hardware. Simple things that is, stuff it really ought to get right. A lot of developers' and our time is regularly wasted by Proteus issues.


Again this is not a proteus issue. I have the hardware the hardware does the same with proteus, i got true results all the time from proteus. And along the way i learned not to trust the proteus %100 percent.

All the symptoms show that problem is with PIC. Just help me to understand why on earth when i add just a simple line to code, code does not work and why it starts working when i delete it.
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
temtronic



Joined: 01 Jul 2010
Posts: 9164
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 8:17 am     Reply with quote

hmm...
Quote:
All the symptoms show that problem is with PIC. Just help me to understand why on earth when i add just a simple line to code, code does not work and why it starts working when i delete it.

It could easily be what I call a 'page violation'. Adding a line of code, increases the program size and a function may have split over the 'page boundry'. The compiler might have tried to 'refit' into available codespace, but can't. Without seeing your code, I don't know how it's arranged in memory,however 'functions' MUST be continuous the same page,Same holds true for RAM, you can't 'split' say a 16bit variable(word) over 2 pages(unless a preproceesor directive is issued, I think).
I haven't used the 877 for a decade or so though it was my favorite PIC for 10+ years. Using the 18F46k22 was a quantum jump, lots of RAM, codespace, 2 UARTS, etc.

We need to see a small, compilable program from you to see what's really going on.

hth
jay
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 8:40 am     Reply with quote

I would like to share the code however it requires so many knowledge to understand and it will be inappropriate since we have competitors trying to copy what we do.

I would like to assist you with your question. One interesting fact, if i switch to 18f4550 the same code works if i switch back to 16f877 it does not. I don't wanna switch to 18f4550 because 16f877 must be sufficient for this job and my code is not that big.
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
palyancodr



Joined: 06 Jan 2014
Posts: 31

View user's profile Send private message

PostPosted: Thu Feb 27, 2014 8:58 am     Reply with quote

Another strange fact, I am using 2x16 lcd. At that lcd i show some real time readings that i get from timer1 as timer.
_________________
Hardware-Software Developer
Physics Engineer
Ceo airVision Aerial Video and Photography
Ceo Massive Robotics

ccs c ide version: 4.110
Pic: 16F877
Display posts from previous:   
Post new topic   This topic is locked: you cannot edit posts or make replies.    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group