Jump to content

Search the Community

Showing results for tags 'Pic16'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • 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

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests

Found 1 result

  1. I use a PIC16F1847 and the BoostC compiler. I wrote some code which uses 14 bytes of data. Now I have to do the same code but for another data record. I started by writing the same function twice, one for the first data record and the other for the second data record. Because I only have 14 bytes of data but much more code I thought it is better using a pointer, then it is much easier to expand it later too. So I thought, no problem, just put it in two arrays or structures and pass a pointer. But there is a problem, now the code size is blown up in a way that the memory of the pic is too small, before I used about 30% for this and now 60%. So the code size is nearly doubled by using pointers instead of writing the same code twice. With my other code now I am at about 90% but the software is not yet ready. I also tried to use linear addressing, but the code size is nearly the same. Because I only have 2 data records with 14 bytes each, I thought, why not using the banking mechanism of the pic by placing every record at the same address but in another bank. May be that the compiler is intelligent enough to detect this and to generate code which don't use the MOVLB instuction but moves the content of a variable to the BSR register (MOVF BANK,W, MOVWF BSR). All local variables can be doubled too, the data memory size is not the problem. This will not blow up the code size because every function only has to set the BSR once if not using data of another bank. Is there a way to do this? Or is there another possible solution? Best regards, Albert
×
×
  • Create New...