Así que implementé un PWM simple en un PIC 12F617. Tuve que usar el periférico Compare con interrupciones ya que no podía generar 50 Hz con el módulo PWM (frecuencia demasiado baja). Establecí un valor en el registro CCPR1 y cuando TMR1 alcanza ese valor, se dispara una interrupción en la que, o bien configuro un pin en 1 o 0 para generar el ciclo de trabajo que quiero.
Ahora también bitbang I2C en el bucle principal y aquí está la cosa rara. Probé ambos PWM e I2C por separado y funcionan bien. Una vez que los habilito a ambos, I2C se desordena por completo (se puede ver en el visor), parece que no puede bajar la línea por lo que básicamente está oscilando unos pocos milivoltios por debajo de VCC cuando quiere bajarla mientras está En otras ocasiones, solo está oscilando por todo el lugar.
Y ahora lo más extraño. Si bien I2C solo funciona y se detiene cuando habilito PWM, si vuelvo a inhabilitar PWM, ¡no volverá a donde estaba antes! Al principio pensé que era un dispositivo esclavo que actuaba, pero el ciclo de alimentación no hacía nada. Después de algunas horas de juguetear aquí y allá buscando fantasmas, rompiendo todo el circuito y armándolo nuevamente, comienza a funcionar nuevamente. Así que vuelvo a habilitar PWM y, efectivamente, ¡todo se atornilla de nuevo! Deshabilito PWM y vuelvo al cuadrado 1, todo está desordenado y simplemente no quiere trabajar. Pasé todo el día tratando de averiguar qué está pasando, ya lo he hecho 4 veces y cada vez la misma historia.
¿Alguien les había pasado esto? ¿Algún consejo sobre cómo evitar que PWM haga que todo se vuelva loco?