Hola,
he estado mirando por el foro, pero no he encontrado ningun tipo de solucion a mi problema. Resulta que quiero grabar en una EEPROM externa (24LC512) un array de 160 elementos que está guardado en el PIC como constante, para que no me ocupe memoria RAM. La funcion para escribir en memoria que tengo implementada funciona correctamente, pero tiene como entrada de datos un vector:
int1 escribe_1_pag(int num_datos, byte *datos)
El problema me surge cuando quiero pasar el vector de 160 elementos declarado como constante a esta funcion, ya que me da error: attempt to create a pointer to a constant, que es un error esperado.
Para solucionarlo utilizo la funcion de CCS memcpy, que no sé si es la mejor solucion. Agradecería cualquier sugerencia.
El codigo que adjunto, me funciona correctamente, ya que guardo en una variable de 64 bytes una constante de 64 bytes. Pero mi problema es: ¿como puedo grabar una constante de 160bytes sucesivamente en una variable de 64bytes para escribir los 160bytes en memoria?
Es decir como puedo ir recorriendo la constante de 160bytes, para ir grabandola en trozos de 64bytes?
BYTE auxiliar[64];
CONST BYTE imagen[64]={
0x00,0xFF,0xFF,0x03,0x03,0xE3,0x23,0x23,0x23,0xE3,0x03,0xE3,0x43,0x83,0x43,0xE3,
0x03,0xE3,0x23,0x23,0x23,0xC3,0x03,0x83,0x43,0x23,0xE3,0x03,0x03,0xFF,0xFF,0x00,
0x00,0xFF,0xFF,0x00,0x00,0x3F,0x02,0x02,0x02,0x3F,0x00,0x3F,0x00,0x00,0x00,0x3F,
0x00,0x3F,0x22,0x22,0x22,0x1D,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xFF,0xFF,0x00};
...
memcpy(auxiliar,imagen,sizeof(imagen)); // direccion de memoria= 0x0000
error=escribe_1_pag(64,auxiliar);
delay_ms(5);
Espero haberme explicado. Un saludo