Jump to content

Search the Community

Showing results for tags 'ROM'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • PIC Embedded Programming
    • BoostC and Chameleon compilers programming
    • BoostC porting source code
    • BoostC++ compiler programming
    • BoostBasic compiler programming
    • Assembler programming PIC
    • Novo RTOS Programming
    • Hardware PIC
    • Enhancement Requests
    • Bug Reports

Found 2 results

  1. Hi, currently I have a program which uses 2 dimensional arrays to store lists of menu options. These reside in RAM, because Sourceboost wont support 2D rom arrays. (I am using SB 7.30). I now have to expand my menus and dont have the space for them in RAM - so I must re-work the code to place the data in rom. I can get around the 2D array problem with a little work - but in checking on my options in the forum, I see that someone mentioned a "single rom page limit" on rom arrays. Could you explain a little more please? Is this a limit "per "rom array" or on rom arrays, total? I could do with a more detailed explanation of rom data limits in the compiler, if you have the time... also any comments on what i am trying to do and whether the method is the best approach, etc
  2. Hi all Couldn't find a way to compute the size of a rom array. The sizeof operator worked fine with the array in RAM, but in rom, it returns the size of the pointer (2). I recon this is consistent with the sintax on the declaration for the rom array. But the point is that I couldn't find a way to get the the preprocessor to compute the size of the rom array. Is it not possible, or am I missing something? The code is the following // ***** DECLARATION **** // table with LED configurations for startup sequences rom char* init_led_seq_tbl = { // first sequence: led ping-pong twice 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00000100, 0b00000010, 0b00000001, 0b00000010, 0b00000100, 0b00001000, 0b00000100, 0b00000010, 0b00000001, 0b00000000, // second sequence all LEDs on/off twice 0b00001111, 0b00000000, 0b00001111, 0b00000000, // third sequence "a" - "d" - "c" // values are doubled to slow presentation to half speed 0x0a, 0x0a, 0x0d, 0x0d, 0x0c, 0x0c, // LEDs off for 2 slots (end of initial LED sequences) 0x00, 0x00 }; // ***** USAGE **** void InitialLedSeqs(void) { for(unsigned char i=0; i<sizeof(init_led_seq_tbl); i++) { SET_LEDS(init_led_seq_tbl[i]); Delay_mS_16(LEDS_MAIN_DELAY); } // for(unsigned char i=0; i<sizeof(init_leds_tbl); i++) } // void InitialLedSeqs(void)