Hola estoy intentando leer y escribir una EEPROM 24AA512 con el 18F258 pero no consigo que haga nada.
Tengo el siguiente conexionado:
SCL ----- RA0
SDA ----- RA1
Tengo una resistencia en cada uno de estos pines de 2200 ohm conectada a 5V y el programa es el siguiente:
#include <18F258.h>
//#fuses HS,NOWDT,NOPROTECT,NOLVP
#fuses HS,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT
#use delay(clock=20000000)
#include <Arial9.c>
#include <gclcd.h>
#include <24512.c>
//#use I2C(master,sda=PIN_A1,scl=PIN_A0,SLOW,FORCE_SW)
#define LED PIN_A2
void main(void)
{
unsigned int8 contraste = 65;
int dato1,dato2,dato3;
EEPROM_ADDRESS direccion;
direccion = 1;
init_ext_eeprom(); // Inicializacion EEPROM
setup_adc_ports(NO_ANALOGS);
gclcd_init(); // Inicialización GCLCD
gclcd_color(BLACK);
gclcd_gotoxy(10,10);
printf(gclcd_putc,"Prueba I2C");
// Escritura
dato1 = 'H';
write_ext_eeprom(direccion, dato1);
delay_ms(1000);
gclcd_gotoxy(10,20);
printf(gclcd_putc,"Grabando:");
gclcd_gotoxy(10,30);
printf(gclcd_putc,"%x,%c",dato1,dato1);
delay_ms(2000);
// Lectura
dato2 = read_ext_eeprom(direccion);
delay_ms(1000);
gclcd_gotoxy(10,40);
printf(gclcd_putc,"Leyedo");
gclcd_gotoxy(10,50);
printf(gclcd_putc,"Value: %x,%c",dato2,dato2);
do{
delay_ms(1000);
output_high(LED);
delay_ms(1000);
output_low(LED);
}while (true);
}
En la libreria 24523.c tengo los mismos pines que en el programa.
La cuestion es que no consigo leer ni escribir y he probado muchas cosas pero nada.
¿Alguien ve algo raro en el programa?
Puede ser el PIC que no sea compatible con el CCS. Una vez utilice un 18f2550 y un 18f4550 y no me funcionaba el SPI.
Desde que me he pasado al C solo tengo problemas jeje (espero que solo sea por ser novato y no sea por cuestion de compiladores y cosas asi)
Un saludo a todos.