Imagina que intentas escribir una rutina en C para un microcontrolador de 8 bits que convierte un intervalo de tiempo deseado (ya sean segundos, milisegundos, hercios, etc.). al valor de precarga del temporizador del hardware correspondiente (teniendo en cuenta la fuente del reloj y la frecuencia del temporizador). El objetivo es hacer que la función sea lo más fácil posible de usar, con la menor cantidad de argumentos posible. ¿Cómo sería esta función?
¿Pasaría en un uint32_t que representa los hercios deseados del temporizador (0 = 0Hz, 1000 = 1kHz, etc.):
void set_timer(uint32_t hz);
¿Preferirías usar un uint16_t que represente a kHz (0 = 0Hz, 1 = 1KHz, 10 = 10Khz)?
void set_timer(uint16_t khz);
¿O sería más deseable un argumento de punto fijo de 32 bits (para poder representar una fracción de hercios)?
void set_timer(q15_16_t hz);
¿O este valor de punto fijo representaría segundos en lugar de Hz?
void set_timer(q15_16_t sec);
O utilizarías un punto fijo de 16 bits en lugar de un punto fijo de 32 bits.
¿O incluso te atreverías a querer usar un punto flotante? O ¿qué pasa con un flotador de media precisión?
¿Qué piensas?