Hola soy nuevo en el foro, lo habia leido mucho (Vszener se merece mas el sueldo de mi profesor que mi profesor) y al fin me registré.
Estoy tratando de implementar un rutina de escritura desde un pic16f877a a 2 eeproms 24c04 por I2C en CCS pero me sale el error "Parametters must be located in RAM". Aqui esta el código de la función de escritura:
void escribir_a_eeprom(int rom,int dirMem,int dato){
int dirRom;
short int status;
switch(rom){
case 0: dirRom=0xa0;break; //0b1010 000 0
case 1: dirRom=0xa2;break; //0b1010 001 0
case 2: dirRom=0xa4;break; //0b1010 010 0
case 3: dirRom=0xa6;break; //0b1010 011 0
default: flashled();break;}
i2c_start(); //Condicion de start
i2c_write(dirRom); //Dirección del dispositivo y colocar modo write (ultimo bit en cero)
i2c_write(dirMem); //Dirección de memoria a escribir
i2c_write(dato); //Dato a escribir
i2c_stop(); //Condición de parada
i2c_start(); //Condición de start
status=i2c_write(dirRom); //Dirección del dispositivo + bit write
while(status==1){ //Acknowledge polling
i2c_start();
status=i2c_write(dirRom);
}
}
La variable rom me dice a cual de las 2 memorias eeprom y a cual bloque de memoria voy a escribir. Esta variable parece ser la del problema porque al quitarla deja de salir el error, pero entonces no sabría a cual de las 2 memorias y a cual bloque de memoria escribir.
Tal vez el error tiene que ver con la parte del manual en ingés que habla de "Non-ram data definitions", pero no se que puede ser.
Gracias por la respuesta