Autor Tema: Grabar en EEPROM externa una cadena  (Leído 1905 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Arimai

  • PIC10
  • *
  • Mensajes: 6
Grabar en EEPROM externa una cadena
« en: 07 de Junio de 2006, 08:38:58 »
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:
Código: [Seleccionar]
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?

Código: [Seleccionar]
 

   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

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Grabar en EEPROM externa una cadena
« Respuesta #1 en: 07 de Junio de 2006, 12:03:49 »

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:
Código: [Seleccionar]
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.


Dicha función  que has posteado con esos argumentos está esperando "un puntero" al primer byte a grabar, pero no espera que le pases el vector.

El vector no es un puntero ni viceversa, ahora que al momento de llamar la rutina tu utilices &vector[] para que el compilador de C tome la primera direccion del vector esa es otra cuestión.

Llamalo mandando como parámetro la dirección de la primera posición de memoria del vector.

Saludos






- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything