El problema con un enfoque basado en ISR es que es una interrupción . Interrumpe las cosas.
El uso del temporizador incorporado compara las características de coincidencia para alternar un pin de coincidencia se realiza completamente en hardware. Puede tener código ejecutándose en el procesador y no tiene idea de que el temporizador está alternando el pin.
Cuando usas un ISR para alternar un pin, tienes más flexibilidad (puedes hacer más que solo cambiar un pin, y puedes cambiar el pin que quieras), pero ahora tienes muchas interrupciones, interrumpiendo tu código . Esto puede alterar las rutinas específicas del tiempo o, a altas frecuencias, incurrir en gastos innecesarios (su interrupción puede convertirse en una gran parte del recuento general de instrucciones, reduciendo los ciclos que podrían ser utilizados por el programa principal).
¿Cuál generaría pulsos más precisos?
Es probable que la función de coincidencia del temporizador genere resultados más precisos, a menos que sea muy cuidadoso al programar sus interrupciones. De hecho, para obtener PWM / pulsos precisos con ISR, es probable que deba escribir sus ISR en conjunto para que sepa cuántos ciclos toman, y luego contabilice esto en su código que establece los tiempos. Básicamente, la sobrecarga de ingresar al ISR afectará las cosas, en el tiempo.
En general, si es posible hacer lo que quiere hacer con los pines de coincidencia del temporizador, hágalo de esa manera para que no tenga la sobrecarga de interrupción adicional. Si no es posible lograr lo que necesita solo con los temporizadores o se le han agotado los pines del temporizador, utilice un ISR.