TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: er_clemen 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
-
"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 .
-
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