|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: Arrays in Vex Programming Kit EasyC?
Quote:
I would suggest if you absolutely have to use an array, you make parallel arrays, perhaps several arrays of 10 or even two dimensional arrays (an array holding references to multiple arrays) to break up the locations that the array can be stored. If that does not work, then you may just not have enough memory to store large arrays. If that is the case, then you may be out of luck and will have to work around it or trim down your variable usage to free space. :\ Hope that helps somewhat. ![]() Last edited by thegathering : 11-09-2006 at 17:12. |
|
#2
|
|||
|
|||
|
Re: Arrays in Vex Programming Kit EasyC?
Thanks for the Array Clarification. I am only defining 56 locations the moment I define one more it fails as in:
int example_array[55]; //Works! int another_array[0];//does not work!!!!!!!! //Still Gives me "C:\vex\Guidance\Main.c:12:Error [1300] stack frame too large The error # [1300] as defined in the C 18 Manual is as follows: "1300: stack frame too large The size of the stack frame has exceeded the maximum addressable size. Commonly caused by too many local variables allocated as 'auto' storage class in a single function." When I change the "Default Storage Class" to from "Auto to "Overlay" or "Static" using MPLAB IDE, the linker gets me in trouble with the following: MPLINK 3.90, Linker Copyright (c) 2004 Microchip Technology Inc. Error - could not find definition of symbol '__Wait:0' in file 'C:\vex\Guidance\Main.o'. Errors : 1 So I comment out the Wait function and now the others start giving me the same problem: as in: //Wait (1000); printf("hello all\n"); Error is now : MPLINK 3.90, Linker Copyright (c) 2004 Microchip Technology Inc. Error - could not find definition of symbol '__printf:0' in file 'C:\vex\Guidance\Main.o'. Errors : 1 Any Ideas folks? |
|
#3
|
|||
|
|||
|
Re: Arrays in Vex Programming Kit EasyC?
perhaps if you declared the array static you could get it off the stack.
but remember alls you gets is a meager 2k for everything. |
|
#4
|
|||||
|
|||||
|
Re: Arrays in Vex Programming Kit EasyC?
You are running into defined limits on how many bytes of global or local variables are available within any one project file or within any one routine.
It's not your one array of [56], but the sum of all the variables you've declared. For instance, if you have a couple of other variables declared, like so: int a,b,c; int example_array[55]; then // int a,b,c; int example_array[58]; would work for you. The magic number is 256 bytes (or 128 int's).
Last edited by Mark McLeod : 12-09-2006 at 10:31. |
|
#5
|
|||
|
|||
|
Re: Arrays in Vex Programming Kit EasyC?
Thank you all for your contributions. Indeed, Mark McLeod's post is confirmed. I have also found out that we can utilize the "overlay" Storage class which acts as a static class but is initialized upon entry to the function. The maximums achieved are:
int array0[60]; overlay int array1[128];//But there are consequences in the same function. Best Sedim |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| vex programming kit | Alex Burman | FIRST Tech Challenge | 1 | 30-03-2006 18:30 |
| Pre-Load Arrays in EasyC, Possible? | Chris_Elston | Programming | 6 | 22-02-2006 10:25 |
| EasyC 2.0 for VEX Robotics Kit | jeffmorris | Programming | 7 | 26-01-2006 10:21 |
| Vex programming kit finally available?? | rswsmay | General Forum | 20 | 27-09-2005 22:08 |
| White Paper Discuss: VEX / intelitek easyC programming document | dez250 | Extra Discussion | 3 | 15-09-2005 15:20 |