Eso sucede porque antes de enviar al integrado pcf8574, grabo el dato en la eprom y luego lo envio.
Te digo algo en PCF8574 enciende el ultimo dato que envias, sivos envias 1 para que encienda la pata 1 lo hace pero si envias para que encienda la pata 6 apaga la uno y enciende la 6, como se corrige eso facil sumando. Si vos grabas enla eprom en la direccion 00 el valor 01 enciende la pata 1 cuando va a buscar el valor enla eprom y lo envia por I2C para que encienda.
Si vos queres queencienda la Pata 6 del integrado no podes enviar enl valor 6 sino 32 osea 2 a la n. si queres la pata 8 envias 128, asi enciende la que seleccionas porque sienvias el valor 6 hace la combinacion binaria de 6 y te enciende la 1 la 2 y la 3.
Entonces si tengo encendida la 1 y quiero encender la pata 6 no puedo enviar 32 solamente porque si enciende la 6 pero apaga la 1 eso se corrige sumando val += read_eeprom(i); hace eso sumalo de la direccion dela eprom 00 con valor 01 y sumalo de la direccion 05 (eeprom)con el valor guardado 20, dando comore sultado 20+ 01 = 21 por lo tanto al enviar por I2C al pcf8574 ese valor como la 1 estaba encendida sigue asi y me enciende la pata 6.
y el for lo que hace es leer de a grupos de a 8 en la eeprom, osea que seria el equivalente a las 8 patas de cada integrado.
direccion 00 a 07 para integrado 1, 08h a 0Fh (15d) Integrado 2, 20h (16d) a 27h (23d) y asi entonces si dato es 0 va a leer las 8 primeras direcciones para el integrado (PCF8574) 1(0 a 7), si dato es 8 osea de 8 a 15 para el integrado 2 y asi...
si dato es =16,for(i=16;i<=(16+7);++i) osea de 16 a 23 y ahi ya tenes para el integrado 3.
Asi trabaja esto.
Peroel problema es que si leo uno de los 8 pulsadores para el AN0 funciona, si hago solo para el AN1 funciona que coreesponde para elintegrado 2 AN1, y asi. pero cuando coloco enel main para que lea AN0 envie luego AN1 y envie ya no funciona.
Sera porque no estoy utilizando todas las entradas Analogicas habilitadas que tengo??? estoy en un protoboard.
Lo que quiero hacer es encender las luces de una casa hay unas 50 teclas ponele y lospcf van a controlarlos reles que van a encender, eso estoy haciendo. necesito muchas entradas y salidas las salidascon PCF8574 y las entradas 8por cada AN con divisor resistivo.
Te digo algo en PCF8574 enciende el ultimo dato que envias, sivos envias 1 para que encienda la pata 1 lo hace pero si envias para que encienda la pata 6 apaga la uno y enciende la 6, como se corrige eso facil sumando. Si vos grabas enla eprom en la direccion 00 el valor 01 enciende la pata 1 cuando va a buscar el valor enla eprom y lo envia por I2C para que encienda.
Si vos queres queencienda la Pata 6 del integrado no podes enviar enl valor 6 sino 32 osea 2 a la n. si queres la pata 8 envias 128, asi enciende la que seleccionas porque sienvias el valor 6 hace la combinacion binaria de 6 y te enciende la 1 la 2 y la 3.
Entonces si tengo encendida la 1 y quiero encender la pata 6 no puedo enviar 32 solamente porque si enciende la 6 pero apaga la 1 eso se corrige sumando val += read_eeprom(i); hace eso sumalo de la direccion dela eprom 00 con valor 01 y sumalo de la direccion 05 (eeprom)con el valor guardado 20, dando comore sultado 20+ 01 = 21 por lo tanto al enviar por I2C al pcf8574 ese valor como la 1 estaba encendida sigue asi y me enciende la pata 6.
y el for lo que hace es leer de a grupos de a 8 en la eeprom, osea que seria el equivalente a las 8 patas de cada integrado.
direccion 00 a 07 para integrado 1, 08h a 0Fh (15d) Integrado 2, 20h (16d) a 27h (23d) y asi entonces si dato es 0 va a leer las 8 primeras direcciones para el integrado (PCF8574) 1(0 a 7), si dato es 8 osea de 8 a 15 para el integrado 2 y asi...
si dato es =16,for(i=16;i<=(16+7);++i) osea de 16 a 23 y ahi ya tenes para el integrado 3.
Asi trabaja esto.
Peroel problema es que si leo uno de los 8 pulsadores para el AN0 funciona, si hago solo para el AN1 funciona que coreesponde para elintegrado 2 AN1, y asi. pero cuando coloco enel main para que lea AN0 envie luego AN1 y envie ya no funciona.
Sera porque no estoy utilizando todas las entradas Analogicas habilitadas que tengo??? estoy en un protoboard.
Lo que quiero hacer es encender las luces de una casa hay unas 50 teclas ponele y lospcf van a controlarlos reles que van a encender, eso estoy haciendo. necesito muchas entradas y salidas las salidascon PCF8574 y las entradas 8por cada AN con divisor resistivo.