TODOPIC

Simuladores, editores de PCB, etc => Simuladores de circuitos => Proteus ISIS => Mensaje iniciado por: eskor_fdr en 07 de Noviembre de 2010, 22:23:58

Título: Ayuda - Error raro de simulacion de Matriz en Proteus
Publicado por: eskor_fdr en 07 de Noviembre de 2010, 22:23:58
Hola gente, bueno les paso a contar, estoy realizando una matriz de leds como proyecto de fin de curso. El tema es que realize el circuito en proteus, y realize un programa de prueba en CCS (voy a usar un PIC 16f628a).
Este programa de prueba lo que hace es enceder la primer fila, espera 1 segundo, apaga la primera y enciende la segunda, y asi sucesivamente. Osea que va prendiendo las filas una por una.

El tema es que mi matriz tiene 80 columnas, en el programa esta el bucle for que tiene como condicion i < 10 (osea que solo prende 10 columnas). Pero cuando lo compilo y lo cargo en el ISIS, solo me prende 9 columnas, cosa rara.

Volvi a compilar el programa pero de a poco, osea, primero puse para que se prendieran dos columnas nada mas, y bueno lo cargue, y prendio BIEN las dos columnas por fila. Despues volvi a probar con 5 columnas, y tambien lo hizo BIEN. Probe con 7, y tambien lo hizo bien, despues probe con 8, y ahi salto el problema, se me prenden solo 7 !, y si pongo 9, se me prenden 8 !, y la novena no me prende.
A los pines de la matriz le llegan las tensiones correspondientes, tanto en columnas como en fila, no entiendo porque no prende, las etiquetas tambien estan bien, y el programa es muy simple, no creo que sea el programa, pero bueno capaz que me equivoque en algo obvio y no me di cuenta.
Me da la impresion que el error esta en el proteus, en el modulo de la matriz mas especificamente.

Bueno les adjunto la matriz en Proteus ISIS, y el codigo tanto el .C como el .HEX.
Muchas gracias de antemano !
Título: Re: Ayuda - Error raro de simulacion de Matriz en Proteus
Publicado por: pablomanieri en 07 de Noviembre de 2010, 23:10:44
En los registros de desplazamientos las salidas son de 8 bits en paralelo, ahora tu estás aprovechando sólo 7 de cada registro y le estás enviando el octavo al registro siguiente, esto produce un delay de 1 ciclo de reloj de más entre un registro y otro, po eso se enciende una columna de menos
Lo que te conviene hacer es aprovechar los 8 bits de los registros y el último bit de cada registro se lo envías el siguiente registro. Además hasta te ahorras un 74hc164

como sería esto:
Al primer registro nombras los bits de salida de C1 a C8,
Al segundo registro le entras los datos con C8, y nombras las salidas de C9 a 16
al tercer registro le entras los datos con C16 y nombras las salidas C17 a 24
etc...
Título: Re: Ayuda - Error raro de simulacion de Matriz en Proteus
Publicado por: eskor_fdr en 08 de Noviembre de 2010, 21:27:43
En los registros de desplazamientos las salidas son de 8 bits en paralelo, ahora tu estás aprovechando sólo 7 de cada registro y le estás enviando el octavo al registro siguiente, esto produce un delay de 1 ciclo de reloj de más entre un registro y otro, po eso se enciende una columna de menos
Lo que te conviene hacer es aprovechar los 8 bits de los registros y el último bit de cada registro se lo envías el siguiente registro. Además hasta te ahorras un 74hc164

como sería esto:
Al primer registro nombras los bits de salida de C1 a C8,
Al segundo registro le entras los datos con C8, y nombras las salidas de C9 a 16
al tercer registro le entras los datos con C16 y nombras las salidas C17 a 24
etc...

Al final era eso, nunca me lo hubiera imaginado, muchas gracias !. Como decis me ahorre dos registros, y funciona perfecto.