Todo deja de funcionar después de habilitar PWM

0

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?

    
pregunta John

2 respuestas

1

De mi comentario anterior:

  

Si solo hubo errores de software involucrados en su problema, entonces reiniciando todo restablecería el funcionamiento normal. Por lo tanto, basado en su historia hasta ahora, podría ser más que solo software, lo que ayudaría a proporcionar un esquema preciso.

Ahora se ha confirmado que el problema es más que un problema de software, por lo que estoy "promoviendo" este comentario a una respuesta.

En tu pregunta de seguimiento " ¿Mi pin GPIO está frito? ", se ha confirmado un error de hardware con al menos GPIO pin GP2 en el PIC.

    
respondido por el SamGibson
2

La mayoría de lo que me describe me suena como si su ic2 estuviera lanzando interrupciones desenmascaradas que no está manejando. Habilitar las interrupciones para su PWM haría que su bucle principal salga mal.

    
respondido por el Mathieu L.

Lea otras preguntas en las etiquetas