Problema con matriz de LEDS al migrar del PIC16F84A al PIC16F628A

Hola, a ver si alguien puede resolverme el problema. Tengo una matriz 8x8 la cual funciona perfectamente tanto a nivel Hardware como Software, he intentado substituir el PIC16F84A por el PIC16F628A porque este tiene mas memoria de programa y me permite hacer desarrollos mas complejos. La cuestión es que simulado en el PROTEUS los cambios funcionan al adaptar un programa hecho para 16F84A para el 16F628A, pero en la realidad no funciona. El PIC16F628A no está estropeado pues he realizado otros montajes y funciona, otra cosa que tengo que decir es que los datos los saca de una memoria externa I2C usando un archivo .INC que tiene implementado dicho protocolo, creo que el problema viene de ahí ¿alguna incompatibilidad entre ese .INC y el PIC16F628A?, os dejo los archivos y simulación en PROTEUS para ver si podeis resolverme el asunto. Mirad los videos de youtube con el funcionamiento cuando esta el 16F84A y cuando está el 16F628A.


 

Adjuntos

  • Matriz 8x8 16F84A.rar
    35.1 KB · Visitas: 94
  • Matriz 8x8 16F628A.rar
    37 KB · Visitas: 91
Última edición:
El circuito físico es exacto al de este esquema sólo que cambiando de microcontrolador. Tambien subo un zip con el esquema por si no se ve bien.
 

Adjuntos

  • Matriz_8x8.JPG
    Matriz_8x8.JPG
    112.5 KB · Visitas: 88
  • Matriz_8x8.zip
    77.8 KB · Visitas: 102
Última edición:
a) evalua el funcionamiento solo con el registro
b) evalua el funcionamiento manualmente (sin la memoria)



A ver, este circuito de matriz está testado con el pic16f628a con un software que no hace uso de la memoria externa y FUNCIONA PERFECTAMENTE. Mi problema radica en que el mismo software que si funciona para memoria externa con un PIC 16F84A no funciona con un PIC 16F628A, no se, quizas los pines del 16F628A que estoy usando para acceder con clock y data a la memoria externa esten tocados, he comprado otra unidad PIC 16F628A para probar que no sea fallo del PIC, cuando me llegue os pondré el resultado.
 
Última edición:
Bueno, pues ya me vino la unidad nueva del PIC16F628A, le he cargado el software y hace exactamente lo mismo que en el video 2, queda descartado que el PIC esté en mal estado, y sigo sin entender porque no funciona.
 
No se, creo que la palabra de configuracion es la correcta ¿no tendra algo que ver el direccionamiento de la memoria?, al poder poner datos tanto en BANCO 1 como en el BANCO 2. Cuando se pone la directiva:

CBLOCK 0X20
ENDC

¿Coloca los registros de libre creacion por orden o puede colocar unos en el BANCO 1 y otros en el BANCO 2?. Vaya lio.
 
La diferencia que nos puede incompatibilizar programas entre el PIC 16F84A y el PIC 16F628A, ES EL BANCO DE MEMORIA, estoy haciendo pruebas forzando los registros a colocarse en el banco 1 mediante la instrucción:

Registro_1 EQU 0x20
Registro_2 EQU 0x21
Registro_3 EQU 0x22
ETC

Y colocando tambien los registros de los .INC mediante las mismas intrucciones en el programa principal, todo esto en vez de usar:

CBLOCK 0X20
ENDC


Estoy obteniendo en las pruebas resultados interesantes. Lo que a todas luces es patente es que la simulación del PROTEUS no es perfecta al 100%, pues si algo no funciona en el circuito real y si en el PROTEUS es porque el PROTEUS FALLA.
 
Última edición:
aun asi los simuladores son una buena herramienta.

Lo que yo haria es colocar todos las variables de memoria en un solo bloque. Suerte y cuenta com o te fué
 
Atrás
Arriba