Something's wrong with simulator when trying to add to watch window variables which were split over two banks. An endless string of 'Access violation ...' messages follows attempts to add some of them (or the remainder of a variable - like Farg_xxx+4 - just to check where it is placed in RAM).
Also the View Statistics/RAM window shows incomplete listing of internal variables.
Access violation
Re: Access violation
We will check this. Thanks.
BTW, "Array has been split over two banks ..." warning appearing for PIC16 processors - I've seen these warnings but no following actual variable splitting over two RAM banks.
Does the warning mean what I suspect - that there are variables in higher RAM banks (2 & 3) accessed indirectly without STATUS,IRP switching?
Does the warning mean what I suspect - that there are variables in higher RAM banks (2 & 3) accessed indirectly without STATUS,IRP switching?
It may mean that, but for sure it is issued when the array elements do not follow each other sequentially, which happens on P16 due to memory decayed teeth organization.janni wrote:Does the warning mean what I suspect - that there are variables in higher RAM banks (2 & 3) accessed indirectly without STATUS,IRP switching?
It wouldn't bother me, if it were so. Problem is, I've checked all the way down to hex code and there is for sure no trace of noncontinous memory distibution. All variables checked had their bytes placed consequtively.for sure it is issued when the array elements do not follow each other sequentially
The only fragmentation I've noticed was in naming - when the compiler places variables of different length at the same starting address, it sometimes uses name of shorter variable in Statistics or Watch widows. Longer variables are then 'fragmented' in the sense of their memory designation - shorter variable plus the remainder. (In consequence many variables cannot be found in Statistics window by name, and in Watch window groups of variables are represented by the same name which is plain cruelty to programmers ).
All the variables with warning had also two things in common - they were placed in 2nd or 3rd memory bank and they were indirectly addressed in library functions (hence my suspicion). This, however, could be coincidental.