TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fr4n en 13 de Octubre de 2011, 12:02:59
-
Hola a todos, estoy usando un PIC 18F4550. Programo en C usando CCS.
Uso un cristal externo de 20Mhz, pero mi sistema funciona a 48Mhz (mediante trasformaciones PLL)
Necesito crear una salida que sea un tren de pulsos, pero cada pulso puede tener distinta frecuencia (periodo) y distinto ancho de pulso. Es del orden de los us (microsegundos).
Por ejemplo la señal puede ser:
nivel alto (3us), nivel bajo (2us), nivel alto (8us), nivel bajo (5us), etc...
¿Como puedo general una señal así?
He buscado información en el foro y demás y he visto que con módulo CCP, se pueden conseguir cosas similares, pero en modo PWM tiene la frecuencia (periodo) fija y solo se puede variar el ancho del pulso, por lo que pienso que no me puede valer.
¿Alguien tiene alguna idea?
Muchas gracias!
-
No te valdria...
output_high(PIN_XY);
delay_us(3);
output_low(PIN_XY);
delay_us(2);
.
.
.
¿?
Porcierto, el modo comparador del modulo CPP no te servira para eso.
-
La cosa es que queria prescindir de hacerlo así, pero gracias igualmente!
-
Podés utilizar el timer1 que genere interrupción cada tiempo que necesites y cuando se genera y atendes la interrupción cambias el estado del pin y a su vez actualizas al nuevo valor de tiempo deseado. y así podés cambiar tanto el tiempo que permanece en alto como el tiempo que permanece en bajo.
Deberías tener dos variables globales, una que te de el tiempo en alto y otra que te de el tiempo en bajo.
-
Exactamente algo asi queria hacer. Gracias!
Saludos!