Hola, estoy terminando una lámapra RGB y el caso es que todo funciona perfectamente cuando el código que le cargo al PIC tiene una sola velocidad de fadding entre colores. Es decir, cada color tarda X segundos en desvancecerse para que empiece a aparecer el siguiente.
El problema lo tengo cuando quiero hacer que se pueda variar la velocidad. El PWM por soft actúa con un periodo de 10ms, con 100 pasos para cada color. El cambio de color lo implemento con un botón y la interrupción externa por rb0.
Las dos situaciones que obtengo son:
1) Si le pongo un antirebote al botón dentro de la interrupción de rb0 (delay_ms(10)) los PWM dejan de actuar y luego ya no se recuperan, quedan como colgados a una frecuencia fija.
2) Si no pongo el antirebote, al pulsar el botón obtengo saltos en las opciones. En lugar de ejecutar la siguiente velocidad, me salta 3 o 4 de golpe, como era de esperar.
Cómo podría solucionarlo? Se me ha ocurrido leer el estado de un switch desde el main, pero claro, eso hace que el cambio de velocidad no sea inmediato, sino que hay que esperar a pases todos los colores para que empiece de nuevo con la nueva velocidad.
Un saludo y gracias a todos!!