TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jorgejg en 14 de Octubre de 2011, 13:46:12

Título: Definir mas cadenas
Publicado 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?
Título: Re: Definir mas cadenas
Publicado por: MGLSOFT en 14 de Octubre de 2011, 14:05:05
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).
Título: Re: Definir mas cadenas
Publicado por: jorgejg en 14 de Octubre de 2011, 14:22:25
tengo el pic18f4550 y uso c18.
Título: Re: Definir mas cadenas
Publicado por: Suky en 14 de Octubre de 2011, 14:44:46
Revisa por aquí (http://www.todopic.com.ar/foros/index.php?topic=31611.msg263859#msg263859), en la parte de Variables/Secciones.


Saludos!
Título: Re: Definir mas cadenas
Publicado por: MerLiNz en 14 de Octubre de 2011, 15:06:58
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
Título: Re: Definir mas cadenas
Publicado por: jorgejg en 25 de Octubre de 2011, 20:44:33
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.
Título: Re: Definir mas cadenas
Publicado por: Suky en 25 de Octubre de 2011, 21:28:40
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!
Título: Re: Definir mas cadenas
Publicado por: jorgejg en 25 de Octubre de 2011, 22:08:18
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.