El retraso máximo alcanzable se basa en una combinación del reloj del sistema y la RAM disponible.
Básicamente, puede crear variables grandes (por ejemplo, ints de 32 bits, ints de 64 bits) en una MCU de 8 bits al distribuir el int en varios segmentos de ram de 8 bits. Se requieren varias operaciones para realizar la suma o la multiplicación de dichos números (ya que debe iterar sobre los bytes individuales), pero la velocidad no es exactamente crítica aquí, por lo que está bien.
Entonces, suponiendo un reloj de 20 Mhz, ¿qué tamaño de variable necesita?
Estoy haciendo muchas asuspciones aquí. Primero, estoy asumiendo una paridad de instrucción de reloj. Muchas MCU requieren varios ciclos de reloj para ejecutar una sola instrucción, lo que reduciría la frecuencia de reloj efectiva. En segundo lugar, supongo que su contador base está aumentando a la misma velocidad que el reloj del sistema. Esto generalmente solo es cierto para los contadores de hardware. Tercero, los números que estoy usando para cosas (la duración de un año, etc.) son versiones redondeadas de los números reales. Por último, todo este ejercicio es bastante tonto.
\ $ 20 Mhz = 20 \ veces 10 ^ {6} = 20,000,000 \ $
Bueno, \ $ \ frac {log (20,000,000)} {log (2)} = 24.2534966642115 \ $, por lo que necesita ~ 24.25 bits para demorar un segundo.
2 horas = \ $ 2 * 60 * 60 = 7200 ~ \ $ segundos, por lo que necesita \ $ \ frac {log (20,000,000 * 7,200)} {log (2)} = 37.0672778554286 \ $, por lo que necesita 37.06 (o básicamente 38 bits) bits de RAM para representar un retraso de 2 horas.
Entonces ... Suponiendo que su microcontrolador tenga al menos 5 bytes de RAM, todos los dispositivos listados funcionarán.
Por diversión, veamos cuánto duraría un 64% de long long
:
\ $ 2 ^ {64} = 18,446,744,073,709,551,616 \ $
\ $ 18,446,744,073,709,551,616 / 20,000,000 = ~ \ approx922337203685.478 ~~ \ $ Segundos
\ $ \ frac {922337203685} {60 * 60 * 24 * 365} = ~ \ approx29247.120 ~~ \ $ años
Entonces, con solo 8 bytes de memoria, parece que eres bueno durante al menos los próximos 30 mil años.