Desarrollo de un nuevo firmware para el kit EC1204B, reloj LED con esfera rotante. Estructura interna del chip de reloj en tiempo real DS1302. Gestión de datos entre el micro-controlador y el DS1302. Direcciones y estructura de los registros del reloj y memoria RAM, envío simple o ráfaga (burst), etc. Gestión del registro para control de carga de la batería de almacenamiento (TRICKLE-CHARGE REGISTER). Modificaciones realizadas sobre el diseño original, con el fin de mejorar las prestaciones y aumentar el brillo del display. Descripción del modo de programar la hora y modificar sus ajustes con el nuevo firmware.
Este firmware se puede descargar de forma gratuita desde el siguiente enlace:
J_RPM_v1_EC1204B.HEX
Antes de comenzar a realizar un nuevo firmware, es importante analizar el esquema y anotar los pines de entrada/salida de todos los dispositivos que se tienen que controlar. Como en este caso, tanto el control del display de 4 dígitos como los 60 diodos led están multiplexados, es conveniente utilizar la frecuencia más alta que permita el micro-procesador. Dado que este procesador (AT89S52) podría funcionar con una frecuencia máxima de 33 MHz, podemos sustituir sin problemas su cristal de cuarzo original de 12 MHz, por otro de 22,118 MHz. Con este cambio conseguiremos un aumento de 1,8 veces en la velocidad de proceso, podremos aumentar la luminosidad del reloj y reducir su parpadeo. Es importante destacar que si cambiamos el cristal de cuarzo y utilizamos el firmware original, el reloj no funcionará.
El problema está en las comunicaciones entre el chip sensor de temperatura (DS18B20) y el micro-procesador. Como las comunicaciones entre ambos dispositivos se hace con un sólo hilo (1-Wire interface), sus comunicaciones son asíncronas y los tiempos deben ser muy precisos. Aunque el resto del reloj podría funcionar sin problemas, debido a que el DS1302 lleva su propio cristal de cuarzo, con el firmware original se muestra un error en el display… y el reloj no llega a funcionar.
Las comunicaciones entre el micro-controlador y el chip de reloj DS1302 se realizan mediante 3 hilos:
- Reloj (SCLK)
- Entrada/Salida de datos (I/O)
- Habilitación (CE)
Como podemos observar en la imagen anterior, las comunicaciones entre el micro-controlador y el DS1302 pueden realizarse en modo simple (un sólo registro) o en modo burst/ráfaga (todos los registros del sector apuntado). Es importante destacar que los datos se transmiten con el flanco de subida de la señal de reloj, y se reciben con el flanco de bajada. Observar el diagrama de lectura en la imagen anterior, que entre el byte de dirección del registro (TX) y el byte de datos (RX) cambia el punto de muestreo.
El chip DS1302 incorpora un circuito para permitir la carga de su batería de almacenamiento. En caso de utilizar una pila no recargable, no se debería activar el circuito de carga. Como podemos observar en la imagen anterior, es posible conectar el circuito de carga y limitar su corriente máxima, mediante la conexión de un diodo o dos en serie y el valor de la resistencia.
Para programar el micro-controlador de este kit de reloj, podemos utilizar un interface serie (ISP: In-system programming / ICSP : In-Circuit Serial Programming) . En la imagen anterior podemos ver el conexionado que se debería utilizar entre el programador TL866A y el reloj.
En la imagen anterior se muestra la secuencia de programación del reloj con el nuevo firmware.
Hola.
¿Dónde compras el xtal 22.118mhz?
Los puedes conseguir en tiendas de electrónica o por Internet. El AliExpress los tienen muy baratos. Si lo quieres para el kit de reloj, en las últimas actualizaciones del firmware utilicé el cristal de serie (12 MHz).
«I just finished firmware ec1204b english…but my problem is,53,54,55—>>>60 dioda leds do not work…are you have any solution.
Thank’s for you time
me gustó mucho el reloj de leds EC1204B pero me gustaria me pudieras mandar el hex para 12 horas,mi correo es;
wiliamvalle@gmail.com, lo cual te lo agradeceria mucho,gracias
Lo siento, pero la última actualización que hice para el kit EC1204B es la ‘v5c’, y no se incluye la opción de cambiar el formato horario. Esa actualización sólo la hice para el reloj de control serie: https://j-rpm.com/2018/06/%E2%9C%85-programar-sistema-horario-12-24-assembler/
GRACIAS POR RESPONDER,ME GUSTARIA HACER EL FORMATO A 12 HORAS PUES CON TU EXPLICACION PARECE FÁCIL PERO NO ENCONTRE ENTRE TUS ARCHIVOS EL .ASM
El archivo ASM del kit de reloj no lo he publicado, porque es un kit comercial y yo no soy el fabricante. Si hago alguna nueva actualización del firmware lo tendré en cuenta.
Saludos,
J_RPM
Hola, excelente la modificación del soft. Ya monté desde cero el reloj y me gustaria cambiwrle el firmware pero tengo una duda, ¿se puede aplicar el firmware sin cambiar el cristal de cuarzo ni el sensor de temperatura?. Es que es un valor raro que no encuentro.
Con las versiones 1, 2 y 3 deberías sustituir el cristal de cuarzo y el chip de temperatura, pero las versiones 4 y 5 son totalmente compatibles. Instala la versión 5, que es la más completa. Incluye el cambio de hora verano/invierno, reducción de brillo nocturno y cronómetro : https://j-rpm.com/2016/05/cronometro-led-5-fc-209/
Gracias, instalaré la v5 porque el cristal es difícil de conseguir. Tengo de 20 MHz y otros pero ese no.
VPP = Mclr señal de 12v
PGD = Dat datos
PGC = Clk reloj
Vdd +5v
Vss masa
¿Qué programador tienes?. Si tu programador tiene las librerías del AT89S52, debería indicar las mismas salidas. Quizás estás seleccionando un micro-controlador diferente al Atmel… supongo que un PIC.
Has realizado un trabajo fantástico.
Se nota que has tenido o tienes una profesión que hubiéra querido para mi.
Gracias con mayúsculas por tu canal y tu blog.
Son de lo mejor que he visto por la red.
Un saludo Jose Ramón.
Me alegro que te gusten el canal y el blog. GRACIAS por tu comentario.
Hola, mi programador tiene difierente nomencratura me podrias decir que corresponde con la tuya.
Vpp
Vdd
Vss
PGD
PGC
AUX
GRACIAS.