buenas noches, tengo un comportamiento super extraño según los datos que escribo en una dirección de la eeprom el programa hace ciertas cosas.
lo que estoy haciendo es un reloj de ajedrez, utilizo 4 direcciones en la eeprom para guardar los tiempos que se configuran para cada jugador
para mostrar los tiempos estoy usando 8 display de 7 segmentos multiplexeados, uso 7 pines del pic para manejar cada segmento, y utilizo 8 pines para manejar 8 transistores en el común de cada display, la forma clásica de multiplexear, los 8 pines de los transistores ocupan todo el puerto A, y el problema que tengo es con la dirección de la eeprom 3, que corresponde a los segundos del jugador b, el comportamiento es bastante extraño, pero al menos sigue una lógica.
el problema con la dirección 3 es que cada bit que se pone en 1 me apaga un display, si esta en 00 funcionan todos los display, si esta en ff se apagan todos, si por ejemplo esta en 01010101, se prenden intercalados, si esta 0F, se prenden los 4 últimos, y así sucesivamente con las 255 posibilidades que hay, cada bit que se pone en 1 hace que deje de funcionar un display, la verdad no entiendo que es lo que esta pasando.
recién probé cambiando la dirección 3 por la 4, y pasa lo mismo. no entiendo porque el puerto a, o los display, o no se que cosa, depende de lo que se escriba en la variable *"segundos_b"
dejo el código completo por las dudas, es bastante largo.
muchas gracias
lo que estoy haciendo es un reloj de ajedrez, utilizo 4 direcciones en la eeprom para guardar los tiempos que se configuran para cada jugador
Código:
* minutos_a=read_eeprom(0);
* segundos_a=read_eeprom(1);
* minutos_b=read_eeprom(2);
* segundos_b=read_eeprom(3);
para mostrar los tiempos estoy usando 8 display de 7 segmentos multiplexeados, uso 7 pines del pic para manejar cada segmento, y utilizo 8 pines para manejar 8 transistores en el común de cada display, la forma clásica de multiplexear, los 8 pines de los transistores ocupan todo el puerto A, y el problema que tengo es con la dirección de la eeprom 3, que corresponde a los segundos del jugador b, el comportamiento es bastante extraño, pero al menos sigue una lógica.
el problema con la dirección 3 es que cada bit que se pone en 1 me apaga un display, si esta en 00 funcionan todos los display, si esta en ff se apagan todos, si por ejemplo esta en 01010101, se prenden intercalados, si esta 0F, se prenden los 4 últimos, y así sucesivamente con las 255 posibilidades que hay, cada bit que se pone en 1 hace que deje de funcionar un display, la verdad no entiendo que es lo que esta pasando.
recién probé cambiando la dirección 3 por la 4, y pasa lo mismo. no entiendo porque el puerto a, o los display, o no se que cosa, depende de lo que se escriba en la variable *"segundos_b"
dejo el código completo por las dudas, es bastante largo.
muchas gracias