realice este programa en C pero no logro leer los datos de la memoria eeprom.
Estoy utilizando un pic16f88
el programa es:
#include <16F88.h>
#device adc=8
#fuses NOWDT,NOPROTECT,NOLVP,NOMCLR,INTRC_IO
/*#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOPUT //No Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NODEBUG //No Debug mode for ICD
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES NOWRT //Program memory not write protected
*/
#use delay(clock=8000000)
#use i2c(Master,Fast,sda=PIN_B1,scl=PIN_B4,force_HW)
void main(){
int apuntador_memoria=0;
int i;
int Buffer[10];
int bandera;
setup_adc (ADC_OFF);
setup_oscillator(OSC_8MHZ | OSC_INTRC);
i2c_start(); //Bit de inicio de I2C
i2c_write(161); //Se escribe la direccion de la memoria R/W
for (i=0;i<=10;i++)
{
while (!bandera){
bandera=i2c_poll();} //espera que se active la bandera cuando se llena el buffer
Buffer[apuntador_memoria]=i2c_read(); //escribe lo que está en el buffer al vector
}
i2c_stop(); //Detiene la comunicación
apuntador_memoria=0; //Renicia la variable apuntador
while (apuntador_memoria<=10)
{
output_a (Buffer[apuntador_memoria++]); //manda al puerto A el valor del buffer
delay_ms(500); //Espera 500ms
}
output_a(0xff); //Enciende el puerto A
}