2010-06-06 6 views
6

Al usar el compilador Microchip C18 con un pic18f, quiero crear un "gran" búfer de 3000 bytes en el espacio de datos del programa.Crear un búfer grande en un pic18f con el compilador microchip c18

Si pongo esto en el main() (en la pila):

char tab[127]; 

tengo este error:

Error [1300] stack frame too large 

Si lo pongo en el mundial, tengo este error:

Error - section '.udata_main.o' can not fit the section. Section '.udata_main.o' length=0x0000007f 

¿Cómo crear un gran buffer? ¿Tienes un tutorial sobre cómo administrar el gran buffer en pic18f con c18?

Respuesta

2

Aquí hay un tutorial sobre exactamente esto: http://www.dwengo.org/tips-tricks/large-variables

Básicamente, usted declara su variable en una sección especial, y un puntero a ella en la sección default:

#pragma udata DATA // section DATA 
    int large_table[768]; 

    #pragma udata // return to default section 
    int *table_ptr = &large_table[0]; 

A continuación, se actualiza el enlazador secuencia de comandos para definir la sección de gran añadiendo algo como esto:

DATABANK NAME=data  START=0x200   END=0x7FF   PROTECTED 
SECTION NAME=DATA  RAM=data 

Tenga en cuenta que por lo general no es cualquier memoria no asignada en el que usted puede apenas p Use su sección de DATOS, pero los búferes USB generalmente son mi primera opción para canibalizar (a menos que necesite USB en el mismo proyecto, por supuesto ...)

Cuestiones relacionadas