Dr. Zoidberg
Well-known-Papá Pitufo
Finalmente, todo depende de la aplicacion destino.Particularmente, de lo mostrado hasta ahora, no estoy de acuerdo con lo de los bucles infinitos (#use timer también pueden funcionar en modo ISR), pero es porque siempre intento que el chip consuma lo menos posible.
Los lazos infinitos son imprescindibles en cualquier app con microcontroladores ya que su ejecucion nunca finaliza, por que no hay un S.O. que tome el control cuando el micro no hace nada (y en este caso el loop lo haria el S.O.).
Si usas el modo ISR de la #use timer, entonces vas a tener que hacer un loop infinito esperando que ocurra la interrupcion y quedamos igual que antes. YO prefiero usar un loop que haga algo y dejar la isr lo mas reducida posible, y si tengo que despachar tareas temporizadas y no-criticas, entonces lo hago fuera de la isr.
De todas formas, a mi no me termina de gustar esta forma de trabajo por que me "queda incompleta". YO haria polling sobre una cola de eventos y despacharia las tareas basado en los eventos presentes en la cola. Esto permitiria ampliar las carateristicas del despacho de tareas, incluyendo otras que nada tienen que ver con el tiempo. Pero claro, los costos de memoria y de otros recursos son mayores que en este simple caso.