Autor Tema: No puedo leer datos de una eeprom  (Leído 1202 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado TGDC

  • PIC10
  • *
  • Mensajes: 1
No puedo leer datos de una eeprom
« en: 13 de Mayo de 2011, 13:31:00 »
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
}

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No puedo leer datos de una eeprom
« Respuesta #1 en: 13 de Mayo de 2011, 13:42:41 »
Colocaste las resistencias pull-up? El último dato leído debe generar un NACK, eso se hace con i2c_read(0);


Saludos!
No contesto mensajes privados, las consultas en el foro