Autor Tema: Comunicación I2C con PCF8574  (Leído 2382 veces)

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

Desconectado er_clemen

  • PIC10
  • *
  • Mensajes: 42
Comunicación I2C con PCF8574
« en: 05 de Agosto de 2003, 21:54:00 »
Hola amiguetes:

Quiero conectar un Microswitch en el puerto I/O del PCF8574 (expande I/O del PIC), en él pondré el código binario de 8 bits correspondiente a un número decimal (hasta 256).

Este número será posteriormente asignado a una variable que utilizará el programa para operar con ella y preferiblemente guardada en la EEPROM interna del PIC (por si falla el suministro eléctrico).

De manera que tengo leer los 8 bits del Microswich conectado al PCF8574, enviarlos en serie, convertirlos a decimal y asignar este valor a una variable guardada en la EEPROM, que utilizará el programa.

He revisado los comandos I2CREAD y I2CWRITE, y los ejemplos txt, pero no termino de aclararme, sobretodo con el código "Control" de estos 2 comandos.

¿Alguna idea a cerca del código a emplear en PBP o donde puedo encontrar información de proyectos parecidos?

¿Algún otro sistema introducir un valor decimal de entre 0 y 256 por harware sin emplear demasiadas entradas del PIC?

MUCHAS GRACIAS

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: Comunicación I2C con PCF8574
« Respuesta #1 en: 06 de Agosto de 2003, 11:32:00 »
 "PCF8574

I2Cread DataPin ,ClockPin ,%01000001,[valor]

Te explico este valor que esta en binario:
los 4 bits más significativos   0100  son una dirección interna, para cada el modelo de chip
es diferente , mírate el Data Sheet respectivo al chip que utilices .
Los tres siguientes  000  son la dirección que le ayas asignado tu mediante el estado de A0,A1,A2 del chip .
Si utilizas 2 pcf8574 por ejemplo en uno le asignas la dirección   000   y al otro   001   por hardware .
este valor es la dirección del  chip que te al refieres .
Si quisieras leer el valor del chip 2 quedaría así : I2Cread DataPin ,ClockPin ,%01000011,[valor]
Él ultimo bit se pone a 1 si lees y a 0 si escribes. Aunque creo que picbasic se encarga, pero por si acaso .

Para escribir es :

I2CWrite DataPin ,ClockPin ,%01000000,[valor]

------------------------------------------------------

Otro ejemplo con "PCF8583  Clock/calendar with 240 - 8-bit RAM
el PCF8574 solo tiene un registro , pero este tiene 255 asi que hay que indicarle la direccion a la  que nos referimos .
Este valor es el $01 .

I2Cread DataPin ,ClockPin ,$A1,$01,[DecimasSEG,SEG,MINU,HORA]
Esto lee las decimas de segundo que se encuentran el la posicion 0 , los segundos en la 2 etc ..

Suerte .

Desconectado juliovmd

  • PIC10
  • *
  • Mensajes: 18
RE: Comunicación I2C con PCF8574
« Respuesta #2 en: 20 de Julio de 2005, 14:04:00 »
Hola, yo tambien estoy trabajando en un enlace I2C con un PCF8574 aunque lo hago con Proton.

He tenido problemas ya que no se aceptan los comandos I2CREAD e I2CWRITE... en fin...

¿Se puede leer y escribir al mismo tiempo en el chip?, por ejemplo de los 8 bits, emplear 4 como salidas y 4 como entradas

mi codigo es este:

"Escritura del PCF8574A en PROTON
INCLUDE "Proton_4.inc"

DIM VAR1 as BYTE
SYMBOL Control =%01111001

Dim L as Byte
Dim Loop as byte

Start:
  L=1
  BUSOUT Control,0,[ L ]
  DELAYMS 100
  Loop=1
  REPEAT
    L=L << 1
   BUSOUT Control,0,[ L ]
     DELAYMS 100
     INC Loop
  Until Loop = 5
Goto Start
END


 

anything