Chris
Is it possible to let us have just "all" your variable declarations so that we can test it out?
I am suspecting that the compilers' symbol table is unable to cope with so many variables.
Chris
Is it possible to let us have just "all" your variable declarations so that we can test it out?
I am suspecting that the compilers' symbol table is unable to cope with so many variables.
That is what I was alluding to.
If that is the case then one workaround may be to declare a large array, called 'MY_VARS' and then declare the existing program variables to be related to that one as aliases, because the number of aliases seems not to make a difference in the same way that the number of vars do.
Chris,
Accessing your vars in your asm routine without knowing which bank they're in, or handling BSR, is most, if not all, of the problem I suspect.
If all of your vars will fit into 1 bank, just tell PBP to place them all in the same bank, then set BSR to this bank on entry to your int handler.
Thanks Bruce. What i've assumed is that because all of my vars do fit into one bank if i put them at the start of the declarations they will be placed there. The problem with the extra vars is happening whether I place the extra vars before or after my own. it doesn't seem to matter where I put them the fault doesn't go away until I comment out enough of them to get the total number down. But I take your point about using the BSR in the interrupt. I think I have relied too much on PBP and overseen the fact that I still need to obey Microchip's laws !
You could try a really quick test to see if this is the only problem. See if you can force YOUR variables all into bank13.
Change_delay var word[6] BANK13
Delay_set var word[6] BANK13
rest here.
NOTE: You only need to do this for all variables YOU are accessing directly in your int handler, or some other assembly routines. If you have vars you only access from PBP, don't bother trying to force locations.
Then make the first line in your assembly int routine MOVLB 0XD. You might want to have a look at the .lst file after compiling just to make 100% sure PBP really is placing all your vars in this bank.
If it works, it will be the easy fix. If not, then you're going to need to know where every single one of your variables are located, and select banks accordingly. Or learn how to use some of the PBP macros like CHK?RP.
Last edited by Bruce; - 24th March 2010 at 18:53.
With 18F's, PBP sorts the list of variables first by type, then alphabetically.
Arrays are always placed at the end, in the order ... byte arrays, word arrays then Long arrays end up last and will be the first things to end up in a different bank.
It doesn't matter where the variables are place in the code.
DT
Thanks for the tips and information Bruce, Darrel.
I'm about to take a much needed break but I'll try out the ideas when I returm
Chris
Bookmarks