por qué el const char *array_write_eep?
Pues la verdad, estaba probando diferentes tipos ( unsigned char, char, unsigned int, int, static, rom ) a ver con cual me iba, (la verdad es que hay cosillas que se me escapan todabía, lo siento) y se me quedo el const, porque lo vi en una función estandar de C al igual que unsigned char.
Pues he de decir que ya lo he resuelto, la verdad que me deja loco porque no lo entiendo 100%, voy a exponer el código a ver que me dicen y de camino para que alguien lo use si le hace falta.
resulta que para que funcione tengo que poner la función de esta manera:
en el archivo principal main.c
#define __MAIN_C
#include "Include/config.h"
void main(void){
unsigned int direccion = 0x0000;
unsigned char array_write[]= "0123";
unsigned char array_read[5];
do{
Write_Internal_Eeprom(strlen(array_write), direccion, array_write); //Averiguamos la longitud de la cadena y Guardamos el array en la memoria interna
Read_Internal_Eeprom(5u, direccion, array_read); //Leemos los datos guardados en la eeprom del pic
}
while(1);
}
el el archivo de la función que lo he llamado read_write_array_eep.c
#define READ_WRITE_ARRAY_EEP_C
//Guardamos el array en la memoria interna del pic
void Write_Internal_Eeprom(unsigned int wLeng, unsigned int address_eep, unsigned char array_write_eep[])
{
unsigned char i;
for(i=0;i<wLeng;i++) //Bucle que escribe cada byte del array en una posición consecutiva
{
Busy_eep(); //Se espera a que el buffer esté libre
Write_b_eep(address_eep++, array_write_eep[i]); //incrementamos la dirección eeprom al mismo tiempo que se incrementa la posición del array a guardar
}
}
void Read_Internal_Eeprom(unsigned int wLeng, unsigned int address_eep, unsigned char array_read_eep[]) //esta función está en desarrollo
{
unsigned char i;
for(i=0;i<(wLeng-1);i++) //Bucle para la lectura de la eeporm en su posición correspondiente
{
Busy_eep(); //Se espera a que el buffer esté libre
array_read_eep[i] = Read_b_eep(address_eep++);
}
array_read_eep[i+1] = '\0';
}la lectura de la eeprom de momento creo que no me funciona, tengo lío con los punteros al array en main.c (no sé muy bien como hacerlo)
pero para que funcione la escritura tengo que definir el puntero en un archivo de cabecera la función que quedaría algo así
/* FUNCTION PROTOTYPES */
#if defined (EEP_V1) || defined (EEP_V2) || defined (EEP_V3)
void Busy_eep ( void );
unsigned char Read_b_eep( unsigned int);
void Write_b_eep( unsigned int, unsigned char);
void Write_Internal_Eeprom(unsigned int, unsigned int, unsigned char *);
void Read_Internal_Eeprom(unsigned int, unsigned int, unsigned char *);
en éste archivo de cabecera es donde definimos el puntero (*), si ponemos el puntero (*) en la función que se encuentra en read_write_array_eep.c me da el error del que hablo,
no tengo ni idea de porque pasa eso ya que hay otras funciones ya estandarizadas donde el puntero se pone en la función que se encuentra en el archivo .c tanto en el de cabecera y funciona perfecto