Interesante lo del pwm, pero quisiera saber si puedo activarlo y desactivarlo sobre la marcha.
Tengo en mente otra solucion para micros sin esas exquisiteces aunque si hay que usar un pic mas potente pues asi será.
La solucion que propongo es un tanto enredada de explicar pero tratare:
Primero, tenemos que generar la señal de f1 = 102,2KHz, esto lo hacemos implementando un retardo de 4,89uSeg (medio periodo de f1), al final de este retardo cambiamos el valor del pin y asi tenemos una señal cuadrada de aprox 102KHz.
Segundo, habilitamos dos contadores (C1 y C2) que iremos incrementando, despues de la rutina de retardo y los iremos incrementando hasta que C1=240 decimal y C2=5113 decimal;
cuando esa cuenta se alcance, cambiaremos el estado del pin asociado a la frecuencia que necesitamos, es decir, si para la frecuencia f1 estamos usando el pin A0, A0 cambiara de estado cada vez que se retorne de la rutina de retardo; si para f2(425Hz) estamos usando el pin A1, A1 cambiara de estado solo cuando C1 alcance el valor 240 y asi sucesivamente.
Ahora, de donde salen los numeros 240 y 5113, muy simple, si repetimos 4,89uSeg 240 veces habremos completado un total de
4,89E10-6 * 240 = 1,17E-3 es decir 1,17mSeg y esto no es mas que el valor de un medio periodo de una señal de 425Hz;
4,89E10-6 * 5113 = 2,500257E-2 o sea 25mSeg que es el valor del medio periodo de la señal de 20Hz
Adjunto un diagrama de flujo.
http://miarroba.com/foros/ver.php?foroid=256746&temaid=2264386&msgid=19677142En el diagrama de flujo P0, P1, P2 son los pines por donde se obtendran las señales; C1 y C2 los contadores y N1=240 y N2=5113, la llamada a d1 se refiere el retardo de 4,89uSeg