Antes de continuar sería interesate que se lean el siguiente artículo
Introducción a PWM
La generación de una señal PWM se lleva a cabo através de Hardware dedicado. Tener HW dedicado para realizar este tipo de trabajo, disminuye la sobrecarga desde el lado del software y CPU. Una vez que la CPU indica que se tiene que producir una salida determinada, el HW dedicado envía la señal hacia los pines de salida, mientras que la CPU se dedica a otra cosa.
En AVR las señales PWM se generan a través de Timers. En esteejemplo utilizaré el TIMER0 del Atmega2560 para generar pwm (Esto también puede ser utilizado en el ATmega16 y ATmega32).
En primer lugar, se tiene un contador de 8 bits, es decir que va desde 0 a 255. Se puede apreciar en la figura la representación gráfica del contador.
El periodo del contador depende del prescalar que se elija en la configuración del TIMER. Existe un registro que vamos a utilizar que se denomina OCR0 (Output Compare Register Zero, cero porque depende del TIMER0, vamos a tener un OCR1, OCR2, etc... dependiendo del TIMER). OCR0 es un número cualquiera (que seteamos) entre 0 y 255. Por ejemplo tomemos el número 30. Esto lo vemos en la figura como una línea recta roja horizontal.
Con esto podemos calcular el ciclo de trabajo 30/256 = 11.7%. Entonces se puede setear el valor de OCR0 y con esto calcular el PWM del ciclo de trabajo de OCR0/256. Nótese que un OCR0 = 0 es un ciclo de trabajo de 0% y un OCR0 = 255, es un ciclo de trabajo del 100%, es decir 5V.
En la siguiente imagen se puede observar mejor lo que se trató de eplicar anteriormente.
Fuente: http://extremeelectronics.co.in/avr-tutorials/pwm-signal-generation-by-using-avr-timers/ |
Con esta introducción a la Generación de señal PWM, ya podemos pasar a la práctica, que lo haremos en el siguiente post.
No hay comentarios:
Publicar un comentario