pcf8574 Problemas inexplicables

Hola, os voy a pedir un poco de ayuda.. porque ya no se que hacer. Estoy haciendo un proyecto para el que necesito usar expansores del bus I2C y me estan dando muchisimos problemas.
Estoy haciendo un programa que simplemente, encienda en un expansor unos leds, de acuerdo a las entradas de otro expansor.
El programa en c de ccs es el siguiente:

#include <18F2550.h> // Definición de registros internos.
#fuses HSPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN

#use delay(clock=48000000) // Frecuencia máxima de trabajo 48 Mhz.
#use i2c(master,sda=pin_b0,scl=pin_b1, force_hw)

// Declaramos las funciones utilizadas.
void PCF8574_Escribe(int8 dato);
int8 PCF8574_Lee(void);

void main() {
int8 dato;
while(true){
dato= PCF8574_Lee();
PCF8574_Escribe(dato) ;
}
}

void PCF8574_Escribe(int8 dato)
{
i2c_start(); // Inicio
i2c_write(0x7E); // Direccion dispositivo en modo escritura
i2c_write(dato); // dato
i2c_stop(); // Stop
}

int8 PCF8574_Lee(void)
{
int8 dato;
i2c_start(); // Inicio
i2c_write(0x77); // Direccion dispositivo en modo lectura
dato = i2c_read();
i2c_stop(); // Stop
return dato;
}

Hice la simulación (adjunto circuito), y fallaba, si el pin p7 del expansor de entradad e información, estaba conectado a vcc (1 logico), funciona todo sin problemas, puedo cambiar cualquier otro pin, y se refleja en los leds, del expansor de salida, pero si pongo ese pin p7, a gnd (0 logico) ya no funciona nada, tengo que quitar la corriente y volver a ponerlo.
Como era nuevo con el tema de la simulación opte, por montar el circuito.. y mi sorpresa fue que hace exactamente lo mismo.
No se que puede ser. Si alguno me podeis ayudar os lo agradezco enormemente!!!

Saludos a todos y gracias de antemano.
 

Adjuntos

  • Pcf8574.zip
    21.2 KB · Visitas: 17
Alguien tiene algun ejemplo que haga eso mismo mas o menos y me lo puede pasar?? muchas gracias.
 
Atrás
Arriba