Este enlace - dice:
"En el modo CTC, también puede activar interrupciones, pero también es es posible que no se utilicen interrupciones y aún se puede cambiar un pin de salida. Utilizando De esta manera, la funcionalidad se produce en paralelo a la CPU y no interrumpe nada. "
(énfasis mío)
Estamos tratando de usar el bucle while principal en nuestro programa AVR para hablar con un dispositivo I 2 C, mientras que simultáneamente se alterna uno de los pines OC1A para generar una onda cuadrada. Sin embargo, encontramos que el dispositivo I 2 C genera errores constantemente, y la comunicación se rompe (aunque se recupera) cuando se está activando la conmutación.
Lo que nos confunde es si la conmutación es paralela a la CPU principal, como se menciona en el enlace anterior, ¿por qué es que parece estar interfiriendo con la comunicación I 2 C? Pensamos que esta arquitectura sería mejor que una arquitectura basada en interrupciones donde el código se rompería, tal vez en medio de una comunicación I 2 C para ejecutar el código de interrupción. De hecho, esta fue la razón por la que cambiamos a este modo de alternar el pin.
Cuando el cambio está deshabilitado, la comunicación I 2 C está ocurriendo sin ningún error.
Cualquier ayuda / explicación sería bienvenida.