TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jorgejg en 14 de Octubre de 2011, 13:46:12
-
En mi programa defino varias cadenas asi:
char Cad1[64]="";
char Cad2[64]="";
char Cad3[10]="";
char Cad4[32]="";
...
y necesito crear otras mas para almacenar otros datos en RAM pero me sale error cuando creo otra cadena y me parece que estoy excediendo del limite, parece que el limite es 256, hay alguna forma de ampliar la capacidad de memoria? estoy usando bootloader por USB y en mi programa tambien uso el USB en CDC o que opciones tengo para ampliar el sector de RAM libre para el usuario?
-
Tendras que revisar que PIC estas usando y ver en su hoja de datos cuantos bytes de ram tiene disponibles, en caso que no quepa, usar otro Pic que si lo permita o sino una memoria externa, por puerto PSP (solo algunos de 40 pines lo tienen).
-
tengo el pic18f4550 y uso c18.
-
Revisa por aquí (http://www.todopic.com.ar/foros/index.php?topic=31611.msg263859#msg263859), en la parte de Variables/Secciones.
Saludos!
-
necesitas editar el archivo .lkr de tu pic, para no usar el original te recomiendo que lo copies al directorio de tu proyecto, y lo añadas a linker script (en el arbol del proyecto).
Luego debes modificar los DATABANK y eliminar varios para unirlos en uno, es decir, quitas el gp1, gp2 y haces un gp12 que empiece en la direccion de gp1 y acabe en la direccion final de gp2
-
Gracias por el dato Merlinz me sirvió, lo resolvi asi:
Antes decia en el lkr:
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
Luego lo cambie asi:
DATABANK NAME=gpr1 START=0x100 END=0x2FF
De esta forma ya tengo mas RAM disponible para usar.
-
No es que dispones de mas memoria RAM para usar, sino que, por la forma de empaquetar tus variables (cadenas) necesitas bloques más grandes.
Saludos!
-
Exacto, eso quise decir en realidad, de hecho la memoria tiene una capacidad unica, solo es la disponibilidad de la misma la que la tenia limitada. Gracias por el aporte.