alternar un pin usando la función de comparación de hardware del timer1 AVR

-1

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.

    
pregunta Shiva C

1 respuesta

1

No puedo comentar, por lo tanto, perdóname respondiendo tu pregunta. ¿Intentó desactivar las interrupciones configurando o restableciendo los bits necesarios en los registros correspondientes? (Por ejemplo, TIMSK1 --- > OEIC1A es 0) porque parece que de alguna manera el temporizador provoca una interrupción en alguna parte. Puede establecer todos los bits de TIMSK1 en cero, pero le sugiero que consulte la hoja de datos.

    
respondido por el Zgrkpnr__

Lea otras preguntas en las etiquetas