Cuando escribía acerca del calendario perpetuo en los relojes mecánicos de soslayo explicaba el algoritmo para determinar si un año es o no bisiesto, y las complejidades que ello tenía. Mencioné el caso de los relojes de cuarzo, creo que poniendo como ejemplo los digitales. No tardó en aparecer la cuestión entonces: ¿por qué los calendarios programados terminan en el año 2099?
Comencemos explicando los diferentes sistemas de calendario programado o autocalendar como los denominan en el mundo anglosajón.
Calendario automático programado (auto-calendar en inglés)
El calendario automático o auto-calendar es el más sencillo de los que se implementan en los relojes digitales. Tiene codificados los días que contiene cada mes, contando con que febrero siempre es de 28 días. De este modo cada cuatro años, es decir, los años bisiestos deberemos corregir la fecha manualmente.
Es el que vemos en los modelos más asequibles como el Casio F-105W con su módulo 3298.
Calendario automático completo (Full auto calendar en ingles)
La siguiente evolución, también conocida como calendario completamente automático preprogramado o full auto calendar, es capaz de determinar los años bisiestos, así que supera al calendario automático anterior, sin embargo lo hace sólo entre un rango de fechas. Siendo las más habituales de 1985 a 2029; 1995 a 2039; o 2000 a 2099.
El inminente límite del año 2029 lo encontramos en el módulo 691/901 del Casio G-Shock DW-5600C, mientras que el de 2099 aplica por ejemplo al módulo 3495 del Casio G-Shock GW-M5610U.
Volvamos atrás para recapitular como se calculan los años bisiestos.
Los años bisiestos son los divisibles entre 4 (como 2012, 2016, 2020, 2024 etcétera)
excepto si son divisibles entre 100, entonces no será bisiesto (por ejemplo 2100, 2200, …)
excepto si es divisible entre 400, que entonces sí lo será (como 2000, 2400, …)
Por tanto el primer paso es saber el resto de la división o módulo entre cuatro. A nivel electrónico es realmente sencillo de utilizar, porque si bien las divisiones son cálculos complejos, cuando éstas implican potencias de dos como es el caso, se simplifica mucho. El motivo es que «X MOD 4″ es equivalente a «X AND 3″. Es decir, obtener el resto de la división por 4 es idéntico a calcular una Y lógica por 3.
Si lo verificas, verás que se cumple fácilmente con 2020, 2024, 2028, 2032, 2036, 2040, 2044, 2048, 2052, 2056, 2060, 2064, 2068, 2072, 2076, 2080, 2084, 2088, 2092 o 2096. El problema ocurre cuando llegamos a 2100, si miráis el algoritmo de arriba veréis que 2100 aunque sí es divisible entre cuatro, no lo es entre 100, lo que implica que no será bisiesto. La división entre 100 sí que es un cálculo complejo, así que presumiblemente es la razón por la que los calendarios programados se detienen en 2099, evitan tener que implementar la división entre 100.
Si esa teoría fuera acertada, los calendarios deberían comenzar en el año 2001, evitando así el 2000, puesto que no solamente es divisible por 4 (bisiesto), y por 100 (no bisiesto), sino que también por 400 (sí bisiesto). Ello implicará calcular la división no sólo entre 100, sino entre 400.
Así que para evitar ese problema, lo que se ha hecho es guardar qué años son bisiestos y cuáles no. Una tabla de 44 posiciones 1985-2029 en los modelos más antiguos o 1995-2039 en los más recientes que informa de antemano cuantos días tiene febrero en cada año. Últimamente lo hemos visto ampliado hasta 100 posiciones (2000-2100). En cualquier caso son cantidades arbitrarias, lo mismo habría sido almacenar 30 años que 50, que 200.
¿Qué ocurrirá entonces cuando llegue 2029, 2039 o 2099? Suponiendo que sigamos aquí, el calendario completamente automático preprogramado de nuestro reloj se habrá vuelto loco. Si tenemos un F-91W o similar con auto-calendar, nada de eso pasará, seguiremos teniendo que corregir la fecha el 1 de marzo de los años bisiestos. Sin embargo, hay equivalencias de años:
2040 -> 2012
2041 -> 2013
2042 -> 2014
2043 -> 2015
2044 -> 2016
2045 -> 2017
2046 -> 2018
2047 -> 2019
2048 -> 2020
2049 -> 2021
2050 -> 2022
2051 -> 2023
2052 -> 2024
2053 -> 2025
2054 -> 2026
2055 -> 2027
2056 -> 2028
2057 -> 2029
2058 -> 2030
2059 -> 2031
2060 -> 2032
2061 -> 2033
2062 -> 2034
2063 -> 2035
2064 -> 2036
2065 -> 2037
2066 -> 2038
2067 -> 2039
2068 -> 2012
2069 -> 2013
2070 -> 2014
2071 -> 2015
2072 -> 2016
2073 -> 2017
2074 -> 2018
2075 -> 2019
2076 -> 2020
2077 -> 2021
2078 -> 2022
2079 -> 2023
2080 -> 2024
2081 -> 2025
2082 -> 2026
2083 -> 2027
2084 -> 2028
2085 -> 2029
2086 -> 2030
2087 -> 2031
2088 -> 2032
2089 -> 2033
2090 -> 2034
2091 -> 2035
2092 -> 2036
2093 -> 2037
2094 -> 2038
2095 -> 2039
2096 -> 2012
2097 -> 2013
2098 -> 2014
2099 -> 2015
La tabla es mucho más sencilla que calcular restos de divisiones, pero hay relojes sencillos y que hacen cálculos bastante complejos, me acuerdo de mi querido W-753 sin ir más lejos, que te calcula la posición solar partiendo de los datos geográficos. Que pena que a Casio ya se le haya olvidado hacer esas cosas.
Por supuesto Droid Drika, tienes mucha razón. La tabla es simplemente un acceso a memoria, no implica calcular nada. Quizás en tiempos en que la memoria era cara podría ser un problema tener que almacenar 100 bytes extra, pero hoy en día no lo es. De hecho estoy seguro que el W-753 que mencionas, o los que indican mareas, también usan tablas con elementos precalculados.
Lo malo es que en relojes de cuarzo analógicos eso no sucede y hay que cambiarlo manualmente. sería un puntazo pero bueno. Es que cada vez que pasa de fecha me toca cambiar todos los horarios de mis relojes manualmente 🙁 y es un poco pesado
Lo de acabarse el calendario, me ha pasado en 2020 con un Электроника, conclusión, restar 28 a la fecha actual y ya coinciden los calendarios, a olvidarme hasta dentro de otros 28 (seguro que menos, algún cambio de pila me pide y ya cuadraremos fechas).
Respecto a lo de 2100… se me antoja complicado llegar, así que dejaré a mis herederos el problema del fin del calendario en los Casio.
Es lo que me deja tan asombrado de la programación. Como algo tan nuevo, puede ofrecer resultados tan precisos y constantes, con un esfuerzo mínimo y a un precio tan económico. Es impresionante para mí pensar en cómo se puede simplificar algo (que para mí no tiene nada de simple) y ponerlo a funcionar en algo tan pequeño como un reloj y tan bien.
A veces creo que tiene algo que ver con nuestro enfoque social. Lo tecnológico se valora, pero no tanto como lo lujoso y exclusivo.
Un saludo con gratitud Guti!
No son muchos, pero hay cuarzos analógicos con calendario programado Óscar hostyn. No tengo muchos cuarzos, pero el Citizen Pilot funciona así. Sabe los días que tiene cada mes.
Pues los nuevos Elektronika ChN-55 lo tienen programado hasta 2050 Lopatin. Creo que los hay de 2040 y 2030 también, me imagino que dependiendo de cuando se fabricasen. Lo que ya no sé es el rango que tienen, porque se me ocurre que en vez de restar 28 puedes restar 56 si hay suficiente espacio, y así te dura más. Aunque claro, con pilas que duran 3-4 años en el mejor de los casos, es lo que tu dices, un tanto irrelevante.
Tienes mucha razón Cesar José Maestre, la tecnología se ha convertido en una commodity y no le damos valor. Se presupone que está ahí. En los años 60, 70 y 80 todo era muy distinto, y la tecnología se admiraba per sé. Grandes avances, muchos de ellos en la simplificación se han producido gracias a la creatividad. Asociamos un ingeniero o un programador con alguien cuadriculado, pero también hubo muchos creativos que supieron aprovechar lo poco que daba ese hardware.
Guti yo he adquirido mi casio y citizen en ciberwatch y me ha gustado mucho esa relojería y está en Benidorm cerca de mi casa. Me enviaron el reloj el mismo día y por suerte la mía Nacex no me ha fallado me llama cuando está entrando a mi casa para que salga. Guti ayer por la mañana decidí ponerle el armis a mi casio, pero lamentablemente por la tarde cuando estaba de compras me fijé que debajo del mismo tenía manchas en la piel rojas y dos heridas me percate de que estaba hecho ese armis para que me diera reacción de esas manera. Llego a casa lo cambio por mi citizen de titanio y me levanto esta mañana, me fijo y las heridas han desaparecido. Esto me hace dudar si realmente ese armis es de calidad o es que yo soy muy sensible a los metales. Vamos que al final me va a tocar llevar titanio. Lo curioso es que el reloj en si, si le pongo una de caucho la parte posterior del mismo reloj no me da alergia que cosas más raras pero bueno tiene fácil solución no usar armis :(. La verdad mira que tengo relojes de latón, plástico… Y ninguno me da. Se ve que es al dichoso níquel. Pero bueno la solución es llevar el citizen de titanio y listo. Los otros me los guardo en la caja para usarlo en ocasiones especiales.
Es interesante ver como un recurso tan ampliamente usado en programación como son las tablas pre-calculadas se usan en un elemento tan cotidiano y cercano como los relojes.
Todo cálculo conlleva un coste: computacional (tiempo de computo) y energético (energía consumida en el cálculo). Estas son las principales razones por las que en determinados algoritmos se recurren a las tablas pre-calculadas.
Por un lado, en algoritmos complejos, recurrir a una tabla calculada y grabada como datos fijos (o actualizables) permite simplificar el algoritmo a algo razonable (aquí razonable depende de la situación concreta). Un algoritmo simple requiere menos memoria y menos poder de cálculo.
En ocasiones el problema no es no poder calcular los datos, es que estos cálculos se usan en un proceso que no admite latencias elevadas (visualización de gráficos, por ejemplo), en estos casos el programa calcula «al vuelo» la tabla que necesitará para su uso posterior.
Un elemento común hoy en día que usa tablas pre-calculadas que se van actualizando son los GPS y las tablas de efemérides de los satélites. Calcular con precisión las orbitas de los satélites es un esfuerzo computacional inasumible para los dispositivos «de mano». Además dichos cálculos dependen de ciertas variables que van cambiando y hay que ir actualizando. Tan complejos son los cálculos que las propias tablas son una simplificación que da una precisión aceptable para un tiempo determinado, de ahí que necesiten ser actualizadas cada cierto tiempo.
Así que ese recurso de la programación tan veterano que son las tas tablas pre-calculadas sigue tan vivo hoy en día como desde el comienzo del uso de máquinas de calcular.
Cuando digo que el programa calcula «al vuelo» la tabla, quizás sería más correcto decir «en tiempo de ejecución» en contraposición de las tablas calculadas durante la fase de desarrollo y programación.
Un saludo
Muy bien explicado y un asunto muy a tener en cuenta. Por cierto, muy bonito el F-105W, me gustaría hacerme con uno.
Sí que es verdad Fernando Herrero, y algo que no es nuevo, lo empecé a ver en los tiempos de los 8 bits con el Spectrum. Personalmente donde más lo usé fue para tablas trigonométricas. Efectivamente se hacía el cálculo en tiempo de ejecución, al principio del programa aprovechabas el emulador de coprocesador matemático que tenían la mayoría de compiladores y montabas tu tabla en coma fija, algo que merecería también otro artículo.
En el caso de un reloj que no «arranca» y que no inicia un programa como tal, me imagino que no tiene ninguna ventaja y el calendario viene hardcoded o preconfigurado ya en la memoria.
El F-105W me encanta. Lo encuentro más bonito que el F-91W y con un módulo de mejor calidad que te facilita que le cambies la pila Jostma. Curiosamente me lo pongo muy poco, y el F-91W sale más. No sé si porque es un modelo más histórico, o porque el contraste de su LCD es superior al no tener EL. En todo caso el F105 es un reloj que pasará a la historia como el modelo que quiso desbancar al F91 y no lo logró, igual que ocurrió con el W86 y el W59.
Estoy muy pez en electrónica en general, también en electrónica digital: tuve unas cuantas asignaturas en esta materia cuando hice la carrera, pero mi experiencia laboral es nula. No obstante voy a echarme en la piscina sin estar del todo seguro si hay agua.
Si se utilizan tablas en las que los cálculos están pre-computados es por un motivo: no utilizar un microprocesador. Hay buenas razones para no utizarlo: espacio, coste y consumo de energía.
Lo anterior hace años tenía lógica en relojes digitales de bajo coste. No obstante actualmente hay microprocesadores que en comparación con los de hace un par de décadas son mucho más pequeños, mucho más económicos y mucho más frugales en el apartado de consumo de energía. Comercialmente tienen se les llama microcontroladores y hay decenas de modelos – de fabricantes como Microchip, Silicon Labs, Analog Devices … – que muy bien podrían ser el corazón de un reloj digital sencillo. Con la posibilidad, además, de que añadiendo un termistor el reloj tuviese funcionalidad de termocompensación.
[1] https://www.microchip.com/en-us/product/ATTINY4
Precisamente es el ChN-55 el cual «vive» actualmente en 1994, el 53 y el 77 como no tienen calendario, sin mayor problema, ahora que no sabia que había una nueva versión del ChN-55, a ver si lo encuentro.
Respecto a todo lo que habláis de computación y demás, menuda cara de poema que se me queda leyendo.
Otra casualidad más Óscar hostyn. Ciberwatch fue mi tienda de cabecera cuando empecé a buscar relojes en tiendas reputadas a buen precio. Adquirí unos cuantos con ellos, cerca de 10 te diría yo. Trato muy profesional y buenos precios. Hace algunos años que no les compro, no por nada en especial sino porque mi evolución me ha llevado a marcas más minoritarias, aquellas que les veo algo especial.
Está claro que tu piel es más sensible de lo normal. En eso el titanio te va muy bien, pero también me comentabas de otros aceros que no te producían reacción. Creo que mejor no arriesgarse y usar titanio. Lo que me resulta curioso es que la trasera de la mayoría de relojes es de acero, y en eso no has experimentado nada negativo. No tengo ni idea de cuál debe ser el motivo, pero es curioso.
Otro aquí que estudió física, electricidad y electrónica en la universidad y tampoco se le dio demasiado bien un relojista. En cuanto a lo que dices de los microcontroladores, es verdad, han avanzado muchísimo. De los que controlaban ascensores o máquinas de café en los 80, hasta lo que hay ahora, la evolución ha sido exponencial, siguiendo la Ley de Moore. Justo hoy leía esto en ZonaCasio: Todas estas cosas se pueden hacer con un F-91. Da qué pensar
Muy cierto lo que dice Un Relojista. Se me había pasado por alto al leer el post, pero es una buena puntualización: el uso de tablas te evita usar microprocesadores.
Y ya que mencionáis lo del consumo de energía, y Guti hace referencia al post de ZonaCasio, se me olvidó poner que la autonomía del «friki» que ha hecho ese F-91 tan interesante es de 1 año. Que con todo lo que tiene es una autonomía más que digna.
Lopatin, los nuevos son los de Technochas que supongo que conoces. Por lo visto además de actualizar el calendario parten de la última revisión de los módulos de Integral.
Muy meritorio Bia Namaran. Además que es lo que menciona el artículo de ZC, es el proyecto de un aficionado. Así que alguien con los medios de Casio podría hacerlo mucho más barato y más eficiente energéticamente.
Con el SAML L22 ya nos metemos en microprocesador de 32 bits, poca broma con eso. Yo estaba pensado en algo con menos potencia de cálculo.
Si con ese procesador obtenemos una autonomía de 1 año – cierto es que se trata de arquitectura ARM, de lo mejor que hay en bajo consumo -, yo diría que con uno de 8 bits la autonomía sería sensiblemente mayor.
Y si añadimos carga solar – el procesador podría ejecutar un software que regulase la carga de la batería -, yo diría que el factor limitante de la autonomía sería la vida útil de la batería.
Un reloj digital con carga solar, termocompensación, caja de acero, cristal de zafiro, tapa trasera roscada, resistencia al agua de al menos 5 ATM … parafraseando a Vito Corleone, sería «una oferta que no podrán rechazar».
Jajajaja, no tengo comentarios, solo leo y sigo aprendiendo, me encantan estos artículos con sus comentarios, pues en esta Bitácora hay conocimiento de autor y lectores. ( me acordé de Mecánica Popular )
Muchas gracias Guti, saludos a todos.
Es algo impresionante lo que han logrado un relojista. Tu propuesta sería una oferta que yo tampoco podría rechazar, y creo que a la mayoría de entusiastas de los relojes digitales les ocurriría igual que a nosotros.
Sobre los 8 bits, como alguien que vivió su infancia con un Z-80 que aún se fabrica, los estuve mirando hace un par de años. Los de Zilog han ido implementando leves mejoras, sobre todo en cuanto a frecuencia, pero se han centrado en reducir su precio, no tanto el consumo. Así que creo que pese a todo, energéticamente hablando no deben ser tan competitivos como un ARM.
Entrañables esas «Mecánica popular» RICARDO. Entre todos aprendemos, y aunque en algunas cosas tengo nivel, del resto aún estoy en la primaria.
Una pregunta, Javier: si me comprara el W 202, como bien se sabe solo tiene calendario hasta 2039, lo que significa que cuando cumpliera el año 2040 tendría que ajustarlo al año 2012 ¿cierto? una vez cambiado ¿tendría que volver a cambiarlo en el futuro? porque lo cierto es que es un Casio que me encantaría tener y solo por eso ya no sé si comprarlo o no.
Un saludo.
Esa es la idea Jose Manuel. En principio si le pusieras 2012, no tendrías problema con él hasta que la fecha volviera a ser 2039, es decir, en 2066.