Autor Tema: Ayuda - Error raro de simulacion de Matriz en Proteus  (Leído 3160 veces)

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

Desconectado eskor_fdr

  • PIC10
  • *
  • Mensajes: 18
Ayuda - Error raro de simulacion de Matriz en Proteus
« 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 !

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Ayuda - Error raro de simulacion de Matriz en Proteus
« Respuesta #1 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...
« Última modificación: 07 de Noviembre de 2010, 23:22:02 por pablomanieri »

Desconectado eskor_fdr

  • PIC10
  • *
  • Mensajes: 18
Re: Ayuda - Error raro de simulacion de Matriz en Proteus
« Respuesta #2 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.


 

anything