Sé cómo escribir rutinas de retardo precisas en el ensamblaje para ejecutarse en un microcontrolador PIC. El problema que tengo es crear retrasos de una longitud arbitraria.
Lo que quiero hacer es aceptar algunos datos que me dicen cuánto demorar, y luego el PIC escribirá un puerto alto o bajo durante ese período de tiempo. Entonces, si tengo un retraso de 1 uS y un retraso de 1 ms, puedo dividir los datos y averiguar cuántas veces necesito llamar a cada función. por ejemplo:
0.123567 Segundos significa que llamaría Delay_1uS
567 veces, luego Delay_1mS
123 veces.
El problema es que todas estas llamadas crean demoras propias, lo que significa que habrá un error en el tiempo de demora total.
Para combatir esto, puedo calcular el retraso incurrido de las llamadas y restarlo del tiempo total de retraso. Sin embargo, ahora el número total de llamadas es menor y, por lo tanto, la demora en que se incurre es menor ... Esto parece un problema de optimización recurrente o de tipo que no sé cómo resolver. ¿Existe una forma de "mejor práctica" para hacer esto?