Banner publicitario de PCBWay

Reloj/Calendario/Posicionador Geográfico/Termómetro sincronizado por módulo GPS

Buenas noches colegas, ya estamos en 2025 así que cabe un saludo de Feliz Año Nuevo :salud:

Continuando con este proyecto veremos ahora el uso del módulo RTC tipo DS3231 (Extremely Accurate I2C-Integrated RTC/TCXO/Crystal) como base de tiempo del Reloj, reemplazando al módulo GPS GY-GPSV3-NEO-M8N del proyecto del capítulo anterior.

Aquí vemos la plaqueta de ensayo que incorpora el módulo

ds3231placa.jpg

Resumiendo sus características, El DS3231 es un reloj o generador de referencia de tiempo real (RTC) tipo I2C extremadamente preciso y de bajo costo. Posee un oscilador integrado de cristal con compensación de temperatura (TCXO) y compensación por envejecimiento, lo cual le provee una precisión típica de 2 ppm o su equivalente de un minuto en un año. El dispositivo incorpora una entrada de batería externa que ante la falta de la fuente de alimentación principal, lo mantendrá funcionando normalmente.
El DS3231 mantiene la información de segundos, minutos, horas, día, fecha, mes y año. En los meses de 30 o 31 días, la fecha de finalización se ajustará automáticamente, incluidas las correcciones por año bisiesto hasta el año 2100.
El dispositivo puede funcionar en formato de 24 horas o en 12 hs AM /PM. También posee dos alarmas configurables y una salida de onda cuadrada configurable en frecuencia. El dispositivo es programable y legible por medio del bus bidireccional I2C.
Posee además un circuito comparador y referencia de voltaje con compensación de temperatura que monitorea el estado de la fuente principal Vcc para detectar fallas de energía, pudiendo proporcionar una salida de reinicio o cambiar automáticamente a la fuente de alimentación de respaldo (batería). También posee reseteo manual.
El dispositivo también integra un sensor de temperatura digital con precisión de 0,25 °C accesible por I2C.
La plaqueta de ensayo que incorpora el DS3231 (foto) tiene un rango de alimentación de 3,3 - 5,5 V, e incluye una memoria AT24C32 (capacidad de almacenamiento 32 K), con dirección predeterminada 0x57 modificable cableando los pines A0A1A2.
Como puede verse también, la plaqueta posee el zócalo para una batería recargable tipo LIR2032 para el backup de energía.

La hoja de datos competa se encuentra aquí:
DS3231 RTC

Continua...
 
Continuando, vemos ahora la placa controladora que contiene el uC PIC16F87X y el modulo RTC DS3231
El diagrama en bloques es el siguiente:

diagrama.jpg
Y la plaqueta experimental será la siguiente:

plaqueta.jpg

Tanto en el diagrama como en la plaqueta vemos tres LEDs cuya función será la siguiente:

LED1: Led Verde conectado a la salida SQW del RTC se programa para una frecuencia de salida de 1 Hz, por lo cual el parpadeo cada segundo indicará que el RTC fue programado exitosamente.
LED2: Led Verde conectado a RA5 en el uC indicarà con tres parpadeos de 1 Seg. cuando el uC inicializa el RTC con los parametros adecuados que veremos luego y arranca el lazo de lectura y display.
LED3: Led Amarillo conectado a la salida TXD deL uC que indica la actividad de datos presentes, que pueden ser monitoriados por PC para eventual diagnóstico ( troubleshooting)

Luego los cinco conectores tendrán las siguientes funciones:

CO1: conector de programacion deL uC por ICSP
CO2: conector del RTC
CO3: conector a los registros seriales de display y almanaque, que luego veremos su diagrama,
e ingreso de los pulsadores de selección y cambio que se usarán para programar el Reloj (seteo de hora, día , etc)
CO4: conector de salida de datos de diagnóstico (troubleshooting)
CO5: conector de Leds RGB separadores de Hora (Verdes) y Fecha (Rojos) , y Azules cuando se realizan los seteos de hora, día , etc

Continua...
 
Continuando aquí con los diagramas del hardware, vemos el bloque de display de dígitos y Leds RGB para efecto backlight

digitos.jpg
Este bloque funciona igual como se ya se explicó en el capitulo anterior. Utiliza los registros de desplazamiento CD4094 y los decodificadores CD4028 que se alimentan con 12 VCC para lograr como ya se vio, la polarización adecuada de las grillas de los tubos NIMO.
Los dos transistores T1 y T2 invierten y adaptan los niveles de señal del uC (5 V) a los 12V del circuito.
El funcionamiento es simple, el uC transmite los datos codificados en BCD en forma serial por DDB5 , "clockeados" por pulsos en CDB4. Así se envían los 24 bits que completan la carga de los registros , se decodifican y excitan las grillas de los dígitos correspondientes en los tubos.
También se envía el bit correspondiente al medio dígito ( apagado o 1) y los tres bits del color RGB del backlight de los tubos (como ya se explicó) Los Leds separadores RGB y Punto Decimal también se muestran y son manejados directamente por el uC (conector CO5)

Y aqui el bloque de registros que maneja los Leds del Almanaque que se muestra debajo del display de dígitos
alamanaque.jpg
Este bloque usa tres registros de desplazamiento tipo 74HC/HCT164 que se alimentan con 5Vcc y encienden directamente los Leds del Almanaque. Este display de Almanaque (ver video) posee 4 lineas, en la superior se encienden los Leds de Hora, Minutos y Segundos (señal HMS) ó los de Leds Mes, Año, Dia (señal MAD). En la segunda linea (antes posición geográfica) se muestran Temperatura y Grados porque el nuevo diseño muestra la temperatura del RTC. En la tercera linea se muestra el Día de la semana y en la cuarta linea se muestra el Mes. En el diagrama se muestra como ejemplo el LED1 siendo en total 23 Leds Amarillos

Continua...
 

Adjuntos

  • digitos.jpg
    digitos.jpg
    41.4 KB · Visitas: 0
Veremos ahora en más detalle los parámetros del módulo RTC
Los registros internos de parámetros son de Lectura/Escritura y su tabla la vemos a continuación:

RTCParams.jpg

Los parámetros básicos del Reloj son siete y aparecen en la tabla desde Address 00h a 06h, codificados en BCD y como se ve el orden es Segundos, Minutos, Hora, Día de la semana, Día, Mes, Año, y en la columna Rango aparece el rango de valores que puede tomar cada parámetro. En el caso del Día de la semana (Day) se codifica un número (1 a 7) que se asocia al día de la semana (1-Domingo, 2-Lunes, etc.) y se incrementa a medianoche. También como se ve, se puede operar en modo 24hs o 12hs AM/PM.

Los parámetros de Address 07h a 0Dh son dos alarmas de precisión (tipo despertador) que están disponibles y no se usaran por ahora en este diseño.

Los bits del registro de Control (0Eh) lo vemos resumidos a continuación (mas detalles en la hoja de datos provista):

- EOSC: Con "0" el oscilador funciona normalmente. Con "1" el oscilador está detenido
- BBSQW: Este bit junto con INTCN controlan la salida de onda cuadrada en el pin INT/SQW que se usa como testigo de la correcta programación del RTC (parpadeo de 1 Hz en el LED1). Se carga con el valor "0" (SQW)
- CONV: Este bit en "1" inicia la lectura de temperatura que luego llenará los registros SIGN (11h) y DATA (12h) con los valores MSB y LSB del parámetro de temperatura con resolución de 0,25 ºC.
- RS2-RS1: Fijan la frecuencia de la onda cuadrada testigo (LED1) en el pin INT/SQW que serà ajustada en 1 Hz (RS2,RS1=0,0)
- INTCN: Bit de control de interrupciones que se usará en "0" en este diseño, ya que el modo de trabajo será Maestro(uC) - Esclavo(RTC)
- A2IE - A1IE: Flags de habilitación de interrupciones por alarmas 1 y 2 (despertador ) que tampoco se usan en este diseño.

Entonces la palabra de control que se carga en el registro (0Eh) será: 0 0 1 0. 0 0 0 0 (40h)

Los bits del registro de estado (Status 0Fh) los vemos resumidos a continuación (mas detalles en la hoja de datos):

- OSF: Indica el estado Stop/Run del oscilador. El estado Stop ("1") puede ocurrir por distintas razones , por ejemplo por software( bit EOSC) o por caída de la tensión de alimentación , etc.
- EN32KHz: habilita la salida de señal de 32KHz en el pin correspondiente si el oscilador esta operando.
- BSY: Indica el estado de "ocupado" del dispositivo cuando ejecuta funciones, por ejemplo medición de temperatura.
-A2F-A1F : Flags de alarmas 1 y 2 (despertador) no se usan en este diseño.

El parámetro de Compensación por Envejecimiento (Aging Offset 10h) es un número con signo que permite agregar o quitar capacitores de la matriz de compensación de frecuencia del oscilador. Valores positivos incrementan la capacidad decrementando la frecuencia y valores negativos incrementan la frecuencia. Este valor permite un ajuste fino del Rejoj si fuera necesario por envejecimiento o inestabilidad térmica.

Continua...
 
Entrando ya en la programación de uC, vemos el diagrama de flujo simplificado del proceso:

Flujo.jpg
Como se ve en el punto 1) luego del encendido del equipo se inicializa el ConfigWord del uC, las puertas E/S según el diagrama visto, la USART y se colocan los estados de inicio (0 ó 1) en los pines del uC.
A continuación los puntos 2, 3 y 4 son el lazo principal del código, esto es:
2) Se leen los 18 registros internos ya vistos del módulo RTC y se cargan en un buffer de memoria de 18 bytes, con transmisión serial simultanea en TXD (LED3) para un eventual diagnóstico del proceso
3) Se procesan y transfieren los parámetros leídos en el buffer a las variables de display.
Por ejemplo en el registro 00h (Segundos) se transfieren los 4 bits del LSB a la variable SU (unidades de segundos) y los 4 bits del MSB a la variable SD (decenas de segundos). Las variables SD y SU se mostrarán en los dos dígitos de Segundos del Reloj.
En forma similar se procesan los demás valores del buffer completando todas las variables de dispaly , MD-MU(Minutos), HD-HU(Horas), DD-DU(Dia), AD-AU(Año), ED-EU(Mes).
El registro 03h (dia de la semana) se procesa luego junto con las tres variables de almanaque (24 bits, ver diagrama de los Leds de Almanaque)
4) Una vez que las variables están listas se envían a los registros de display de Reloj y Almanaque. Tal como funcionaba el Reloj en el capitulo anterior (con GPS) , el Reloj mostrará en forma alternada HMS (Hora,Minutos,Segundos) , MAD(Mes,Año,Día) y Temperatura.

Dentro del lazo ppal también se chequean los pulsadores PS(Pulsador de Selección) y PC(Pulsador de Cambio)
Si se pulsa PC , el Reloj pasa a mostrar en forma fija, HMS, MAD ó Temp cambiando con PC. Si PC se oprime mas de 5 Seg, se vuelve al display normal de HMS, MAD y Temp. en alternado automático.
Si se pulsa PS, se pasa al seteo general del Reloj (puesta en hora) En el capítulo anterior (sincronismo por GPS) esto no hacia falta pues el sincronismo y datos de tiempo eran automáticos (ver diseño). Ahora el Reloj es Stand Alone y debe ponerse en hora por lo menos una vez o cada vez que sea necesario.
El seteo o puesta en hora es simple, los dígitos parpadean individualmente en el orden SU, SD, MU, MD, HU, HD, DS, DU, DD, AU, AD ,EU, ED,
con indicación de los Leds separadores (parpadeo Verde si se setea HMS, parpadeo Rojo si se setea MAD) , seleccionándose con PS y incrementandose dentro de su rango con PC. Oprimiendo PS mas de 5 Seg, finaliza el seteo y los parametros recien ajustados se transfieren al módulo RTC y se pasa a opèración normal en el lazo ppal.
La carga exitosa de parámetros y configuración se chequea como se vio con el parpadeo de 1 Hz del LED1.

Continua...
 

Adjuntos

  • Flujo.jpg
    Flujo.jpg
    88.5 KB · Visitas: 0
Continuando por aquí, vemos algo mas en detalle el manejo de los registros de Display y Almanaque
pulsos.jpg
En la foto superior se ve el Display mostrando e indicando HMS (Horas, Minutos, Segundos) en este caso 10:29:51 y se muestra el gráfico de los 24 pulsos en CAB2 y los estados que toma DAB3 para cargar los registros de Almanaque y encender los Leds requeridos, estos Leds serán HMS (son tres), día de la semana SAB y mes JUN. Se acompaña el circuito con los tres registros de desplazamiento 74HC/HTC164.
En la foto inferior se ve el Display mostrando e indicando MAD (Mes, Año, Día)) en este caso 06/25/19.
El gráfico igualmente muestra la transmisión HMS (no MAD) con los 24 pulsos en CDB4 y los estados que toma DDB5 para cargar los registros correspondientes a HD (un bit) , HU, MD, MU, SD, SU, decodificar y encender los dígitos correspondientes a HMS 10:29:51 , indicada con los Leds separadores Verdes. Ademas se transmiten los bits RGB (en este caso Rojo) del BackLight.
El gráfico correspondiente a MAD (no se muestra) seria similar con los dígitos 06/25/19 y los Leds separadores en Rojo.

Continua...
 
Buenas noches, tengo detenido un poco este proyecto pues he tenido algunas fallas de componentes y estoy en pos de reponerlos.
Como habrán visto aquí utilicé tecnologías de las mas diversas, muy antigua como los tubos NIMO, medianamente antigua como los CMOS CDXXXX, y algo mas moderna como los RTC, GPS y PICS.
Pero resulta que este mes pasaron a mejor vida los 4 últimos CD4094 que tenía en mis cajones (gabetas), solo quedan funcionado los tres colocados en el Reloj y ni los toco para que no se rompan jeje.
Las fallas fueron tan extrañas como simultaneas, algún pin del CI dejo de funcionar, quedando fijo a tierra o VCC mientras todos los demás estaban correctos. Desconozco si fue por algún tema del circuito o directamente han llegado al fin de su vida útil de décadas y comenzaron a fallar todos juntos (decidieron jubilarse) :unsure:
Buscando en mi país (Argentina) su reposición encontré que aquí los cobran fortunas, unos 5 dolares por cada CI mas otro tanto de envío local, (verdadero robo) en una conocida y muy grande plataforma de venta on-line (Mer... L...).
Entonces decidí pedirlos a China por otra plataforma muy conocida (Ali....) con un costo abismalmente menor, un set de 20 CIs con envío incluido desde el otro lado del mundo por menos de 2 dolares, menos de la mitad de lo que aquí cuesta uno solo :rolleyes:

Bueno, esto ha sido una nota mas que anecdotica, y mientras espero los chinos iré porteando algo de código del uC

Continua...
 
Continuando luego de lo anecdótico, empezaremos a ver el código de programación del uC , solo con las rutinas principales para no hacer largo este tema algo pesado.
Aquí vemos la primera rutina de chequeo y escritura de los parámetros ya vistos del RTC, desde el buffer de memoria.
Entonces, Primero se configuran los parámetros requeridos según ya se vió en el buffer de memoria y luego se transmiten al RTC y se chequea su escritura exitosa con el parpadeo del Led1.
Aunque el uC ya trae "armado" el protocolo I2C con distintas variantes, aquí se "arma" el protocolo por código directo ya que no hace falta una alta velocidad de transmisión, y la velocidad se regula con la inserción de instrucciones NOP (no operation) para salvar posibles errores de lectura/escritura por exigencias de velocidad.
Con el mismo código se puede acceder a la memoria AT24C32 (capacidad de almacenamiento 32 K) disponible como se vio en la plaqueta del RTC, la que no se usa en este diseño.
Aquí el código:

Código:
;-----------------------------------------------------------------------
  ;RTC checkeo y escritura
    ;se escriben los 19 parametros del RTC que
    ;previamente se guardaron en el buffer de memoria
    ;
    clrf ADDLOW ;poner a cero la direccion baja, en el RTC solo se usa ADDLOW
    movlw 0x0F;  ;el time out de checkeo de presencia será de 15 lazos
    movwf CONACK ; contador de timeout de chequeo del ACKnowledge del RTC
    ;0xAE 1010.1110/1   direccion de la memoria 24C32A que está en la plaqueta
    ;0xD0 1101.0000/1   direccion del RTC
    movlw 0XD0    ;aqui se carga la palabra de comando
    movwf COMANO  ;de escritura del RTC
    
rtc_check ;checkear la presencia del RTC , envianmdo un comando y sensando el ACK.
    
    call sta_rt ;iniciar el protocolo de R/W
;
    movfw COMANO ;  aca esta el comando (0xDOh) 1101.0000 para el RTC
    movwf DATSDA
    call txdatack ; transmision de un byte
;
    call sto_pp  ;finalizar el protocolo

    btfsc PORTA, LEDVA5 ; sensar indicador de estado de ACK   led VERDE   
    goto no_ack4 ;;el_ACK esta arriba, LED encendido, el ACK no fue recibido
    ;el_ACK esta abajo, LED apagado, el ACK fue recibido
    goto si_ack4 ;el ACK fue recibido OK
no_ack4 ;el ACK no fue recibido, entrar en lazo de chekeo, se intentas 15 veces
    decfsz CONACK,1 ; decreementar el contador de timeout
        goto rtc_check  ;y seguir esperando el ACK
    ;Termina el timeout, si no se detecta ACK el RTC no está presente
    ;o no responde. el LED2 queda encendido indicando la falla
    ;
si_ack4  ;el ACK de chekeo se detectó OK

;mandar el buffer de memoria al RTC
    clrf ADDLOW ; se pone a cero el address bajo ADDLOW
    movlw 0x0F;  ;se inicializa el time out de escritura de 15 lazos
    movwf CONACK ; contador de timeout
    bcf STATUS,IRP ; noveno bit de la direccion del buffer se pone a cer
    movlw 0x20     ; inicializa un buffer de 64 bytes para direccionamiento indirecto, 64=0x40=0100.0000
    movwf FSR      ; arranca en 0x20=0010.0000, tamaño 0x40=0100.0000, final 0x60=0110.0000
               ;la capacidad es de 64 bytes pero solo se usaran 19 posiciones (0x00 a 0x12)
    movlw 0x12     ;cargar la cantidad de parametros
        movwf CONBUF   ;en el contador de buffer
            
    call sta_rt ;iniciar el protocolo
;
    movfw COMANO ; Cargar comando de escritura
    movwf DATSDA
    call txdatack ; escribir en el RTC el comando de escritura
    movfw ADDLOW  ;escribir en el RTC
    movwf DATSDA 
    call txdatack ; la direccion de escritura
laz_rtc ;arrancar el lazo de escritura de los 19 parametros
    movfw INDF ; recupera el dato del buffer
    movwf DATSDA
    call txdatack ; lo transmite al RTC
        incf FSR,1 ;incrementa puntero
    decfsz CONBUF,1 ; decrementa el contador del buffer
    goto laz_rtc ;sigue en lazo de de escritura
        ; cuando el contador de byte CONBUF llega a cero, estará escrito el RTC
    call sto_pp  ;finalizar transmision de buffer al RTC
    
lazo_write ;lazo de espera de grabacion de parametros en el RTC
       ;
    call sta_rt ;iniciar el protocolo
;
    movfw COMANO ;
    movwf DATSDA
    call txdatack ; transmision del comando de escritura
;
    call sto_pp  ;finalizar protocolo

    btfsc PORTA,LEDVA5 ; como antes sensar indicador de estado de ACK   led VERDE   
    goto no_ack5 ; el ACK esta arriba, el RTC aun está en proceso de escritura
    ;el_ACK esta abajo, LED apagado, el ACK se recibio OK
    goto si_ack5 ;el ACK esta OK
no_ack5 ;el ACK no OK
           decfsz CONACK,1 ; decrementasr contador timeout
        goto lazo_write ; continuar chequeo
si_ack5  ;el ACK esta OK, los parametros estan cargados ,
     ;se verifica con el parpadeo del Led1
    
;Aqui finaliza la escritura del RTC
    goto clk_star ;ir a arrancar el Reloj normalmente

;-----------------------------------------------------------------------------   

;-------------------------------------------------------------------------------
;TRANSmitir un byte a la memoria o RTC,

txdatack ; shiftear DATSDA pulsando SCL, la salida SDA esta en 1, solo baja si hay que poner un 0
;7---
                bcf PORTA, SDATA4 ;bajar la salida SDA
        btfsc DATSDA, 7 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;6---
        btfsc DATSDA, 6 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;5---
        btfsc DATSDA, 5 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;4---
        btfsc DATSDA, 4 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;3---
        btfsc DATSDA, 3 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;2---
        btfsc DATSDA, 2 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;1---
        btfsc DATSDA, 1 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA
;0---
        btfsc DATSDA, 0 ;bit de > peso primero
        bsf PORTA, SDATA4 ;subir la salida SDA
        call pulsar ;pulsar clock SCL
                bcf PORTA, SDATA4 ;bajar la salida SDA

;se chequea el ACK, la linea SDA debe quedar en 1 para que el ACK del RTC la baje
loop_ack
        bsf PORTA, SDATA4 ;subir la salida SDA para que el RTC maneje la linea
        bsf STATUS,RP0        ; apuntar al banco 1
        bsf TRISA , SDATA4      ;poner SDA como entrada, para poder leer el ACK del RTC
        bcf STATUS,RP0        ;volver al banco 0
        nop
                
        bsf PORTA,SCLKA3 ;subir el clock, aca shiftea el dato del RTC
        nop                ;esperar que aparece el dato
        nop                ;esperar que aparece el dato
;aqui se cheqkea el ACK
        btfss PORTA, SDATA4 ;LEER dato entrante SDA
                goto hay_ack ;si se detecto un cero, vino el ACK
        btfss PORTA, SDATA4 ;LEER dato entrante SDA
                goto hay_ack ;si se detecto un cero, vino el ACK
        btfss PORTA, SDATA4 ;LEER dato entrante SDA
                goto hay_ack ;si se detecto un cero, vino el ACK
;no hay ACK, no fue detectado     
        bsf PORTA, LEDVA5 ; no hay ACK , el led se enciende indicando error
        goto  no_ack
hay_ack
        bcf PORTA, LEDVA5 ; si hay ACK, el led SE apaga indicando OK
no_ack
        bsf STATUS,RP0        ;apuntar al banco1
        bcf TRISA , SDATA4        ;poner SDA como salida
        bcf STATUS,RP0        ;volver a banco0
        bcf PORTA,SCLKA3         ;bajar el clock a reposo
        nop
        nop
        bcf PORTA, SDATA4       ;bajar la salida SDA a reposo
                nop    
        return
;-------------------------------------------------------------------------------

Continua...
 
Ya finalizando este proyecto y para no seguir con el aburrido código de programación (la rutina publicada es aprox. el 1% de todo el código requerido) les dejo un vídeo del Reloj ya terminado y funcionando. Como puede verse y se explicó, muestra secuencialmente Hora, Minutos y Segundos, luego Mes, Año y Día, y luego la temperatura que es la del módulo RTC dentro del gabinete, que gracias a un pequeño ventilador trasero se mantiene alrededor de los 30ºC.
A la derecha del gabinete pueden verse los pulsadores de puesta en hora y fecha, usados como ya de detallò.
Ajustado el Reloj en hora y fecha al segundo ayer, veremos si cumple la especificación de error de un minuto por año :rolleyes:
Sobre el gabinete del Reloj puede verse otro reloj mas pequeño y apagado que utiliza display de tubos Nixie miniatura, y será el próximo proyecto a poner en marcha con RTC... luego de un descanso.

Un saludo y nos vemos en el próximo (y)


 
Última edición:
Atrás
Arriba