Está en la página 1de 18

Sistemas de Tiempo Real Laboratorio 2: Introducci on a Pulse-Width Modulation (PWM) en Arduino Grado en Ingenier a Inform atica.

Curso 2011/2012

1 Objetivos del laboratorio


El objetivo del laboratorio es que el alumno aprenda los conceptos b asicos de la modulaci on en anchura del pulso (Pulse-Width modulation, PWM) y c omo puede ser implementado sobre la plataforma Arduino. Este laboratorio persigue: 1. Presentar al alumno las distintos modos de PWM. 2. Dise nar un circuito electr onico y desarrollar el programa (sketch) que permita controlar un LED mediante PWM (parte 1 del laboratorio) y posteriormente reproducir una melod a usando tambi en PWM mediante un zumbador (parte 2 del laboratorio).

2 Materiales
Para la elaboraci on de este laboratorio necesita utilizar los siguientes componentes: Microcontrolador Arduino UNO. 1 Placa de prototipado. 1 LED (Light-Emitting Diode). 2 resistencias de 220 ohmios. 1 LDR (fotorresistencia). Cable r gido para interconexi on de los componentes. Cable USB de conexi on del PC al microcontrolador. Para ahorrar tiempo durante el laboratorio, se recomienda traer un conjunto de cables precortados y listos para su uso de las siguientes medidas: 2cm, 5cm, 10cm. En el Ap endice A se muestra una descripci on de cada uno de los componentes anteriores.

3 Introducci on a PWM
La modulaci on de anchura de pulso o Pulse-Width Modulation (PWM) consiste en generar se nales digitales como ondas cuadradas donde la frecuencia es constante pero la fracci on de tiempo en que la se nal est a activada (denominado ciclo de actividad) puede variar entre 0% y 100%. La Figura 1 muestra diferentes ondas cuadr aticas generadas con distintos ciclos de actividad: 0%, 10%, 25%, 50%, 80% y 100%. De esta manera, el tiempo en que se mantiene el pulso (anchura del pulso) en estado de activaci on (on) en un per odo (tiempo total que dura la onda), puede ser expresado como un tanto por ciento de la longitud del per odo. Como puede observarse la frecuencia se mantiene 1

Figure 1: Ondas cuadradas generadas con distintos ciclos de actividad (extra do de arduino.cc) constante. La frecuencia puede denirse como la cantidad de pulsos (estado on/off) por segundo 1 y su expresi on matem atica es la inversa del periodo es decir frecuencia= periodo . El microcontrolador Arduino dispone de una serie de pines que implementan PWM. Estos pines son algunos de los pines digitales, espec camente: 3,5,6,9,10 y 11. Cuando se congura apropiadamente PWM en uno de estos pines, y se conecta un dispositivo de salida, por ejemplo un LED, el resultado es que se generar a una onda cuadrada cuya anchura de pulso se representa como estado ON del dispositivo y el resto del tiempo del per odo en estado OFF del dispositivo. La funci on analogWrite proporciona una interfaz m as simple al hardware PWM: aunque permite modular la anchura del pulso no proporciona ning un control sobre la frecuencia. Los modos PWM se describen en el Ap endice B de este enunciado.

4 Descripci on del laboratorio


El laboratorio se divide en dos partes:

4.1 PWM y analogWrite


Modique el c odigo correspondiente a la parte 2 del Laboratorio 1 para usar PWM en lugar de analogWrite. En ese laboratorio, el LED estaba conectado a la salida anal ogica 9. Para congurar PWM en el pin 9, usaremos el Timer 1, y la salida A. Para ello deber a simplemente congurar PWM con los siguientes valores (ver Ap endice C): 1. Seleccionar Modo Fast PWM escribiendo 0101 en WGM. 2. Valor de pre-escalado de 64 (011). 3. No invertir la salida. Para ello, en la secci on setup() escriba el siguiente c odigo que congura PWM con los valores anteriores: pinMode(9, OUTPUT); pinMode(10, OUTPUT); TCCR1A = BV(COM1A1) | BV(COM1B1) | BV(WGM10);

TCCR1B = BV(WGM12) | BV(CS11) | BV(CS10); nico cambio consiste en asignar el valor del sensor LDR En la secci on loop() del sketch, el u al registro OCR1A, de la siguiente manera:
valor=analogRead(LDR); OCR1A=valor; delay(10);

Una vez programado la funci on anterior, verique y compile el sketch. Conecte el cable USB y cargue el c odigo sin errores en la plataforma Arduino. Compruebe que el programa ejecuta correctamente. Cu al es el resultado de este programa?

4.2 Control de un LED mediante el modo Fast PWM


El alumno deber a dise nar un circuito que permita conectar un LED al pin PWM correspondiente de salida. De esta manera, cuando haya pulso en la onda generada el LED permanecer a encendido (ON) y en caso contrario se apagar a (OFF). En esta parte del laboratorio, el alumno deber a modicar los valores de comparaci on para modicar la salida. Para ello, el alumno deber a seguir los siguientes pasos: Seleccionar el Timer que desea usar. Puede usar Timer0, Timer 1 y Timer2. En funci on del Timer seleccionado, identique los dos pines PWM de salida correspondientes al timer seleccionado (ver Tabla B1). Por ejemplo, si usa el Timer 2, la salida A se corresponde con el pin PWM 11; si usa la salida B el pin PWM es el 3. nodo del LED. La Figura 2 muestra la placa de de Conecte a uno de esos pines de salida el a prototipado (en la parte izquierda) y el esquema de conexi on (en la parte derecha) para la realizaci on de esta parte del laboratorio.

Figure 2: Placa de prototipado (izquierda) y esquema de conexi on (derecha) del laboratorio (parte 2))

Abra el IDE de Arduino y programe un nuevo sketch que realize las siguientes operaciones: 1. En el apartado setup() debe inicializar los pines PWM como salida mediante la funci on pinM ode. Debe congurar adem as el modo PWM usando las siguientes opciones: (a) Asignar 011 a los bits WGM correspondientes al timer usado (selecciona Fast PWM). (b) Asignar el valor de pre-escalado de 64 escribiendo 100 en los bits C2 (divide la frecuencia del reloj del sistema entre 64). (c) Asignar el valor 10 en los bits COM2A y COM2B de manera que no se invierta la salida generada en A y en B. El c odigo de conguraci on si usa el Timer 2 es similar al explicado como ejemplo cuando se describi o Fast PWM en este enunciado. 2. En el apartado loop() debe alternativamente modicar los valores de comparaci on utilizados por el timer. Estos registros se denominan OCRXA y OCRXB, donde X=0,1,2 dependiendo del timer utilizado. En este c odigo fuente usamos valores aleatorios para los registros de comparaci on:
valor=0; if (valor == LOW){ OCR2A=180; OCR2B=250; }else{ OCR2A=100; OCR2B=5; } valor = 1 - valor;

Una vez programado la funci on anterior, verique y compile el sketch. Conecte el cable USB y cargue el c odigo sin errores en la plataforma Arduino. Compruebe que el programa ejecuta correctamente. Cu al es el resultado de este programa? Pruebe a modicar los valores de comparaci on. Cu al es la diferencia con respecto a la ejecuci on anterior?

4.3 Evaluaci on del laboratorio


El profesor debe comprobar visualmente el correcto funcionamiento de cada parte del laboratorio. Para ello, cuando el grupo de pr acticas haya terminado, debe llamar al profesor para que pueda realizar esta vericaci on. Antes de abandonar el aula, cada alumno deber a entregar y responder el cuestionario que proponga el profesor.

5 Material de consulta
El alumno podr a consultar la siguiente bibliograf a para la realizaci on de este laboratorio: El microcontrolador Arduino (http://arduino.cc). Fritzing (http://fritzing.org). Electr onica B asica (http://www.sc.ehu.es/sbweb/electronica/elec_basica/default.htm). Componentes electr onicos (http://es.wikipedia.org/wiki/Componente_electronico). Secrets of Arduino PWM (http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html). C odigo de ejemplo PlayMelody: http://www.arduino.cc/en/Tutorial/PlayMelody Datasheet de Atmega328 http://www.atmel.com/Images/doc8271.pdf Material y transparencias de clase.

Appendix A Ap endice A. Descripci on de los componentes electr onicos


A1 LED
Un LED es un diodo semiconductor que emite luz. Muchos dispositivos usan LEDs de distintos colores como indicadores. Los hay de varios colores, siendo los m as usuales rojos, verdes y amarillos. Las patas de los LEDs tienen distintos tama nos: la m as corta es el c atodo (que nodo (que debe debe conectarse al polo negativo de la fuente de alimentaci on) y la m as larga el a conectarse al polo positivo de la fuente de alimentaci on). La siguiente gura muestra el aspecto de los LEDs.

Figure A1: Leds de distintos colores

A2 Fotorresistencia
Una fotorresistencia es un componente electr onico cuya resistencia disminuye con el aumento de intensidad de luz incidente (puede descender hasta 50 ohmios) y aumenta cuando est a a oscuras (varios megaohmios). Figure A2 muestra un LDR.

Figure A2: Ligth Diode Resistor (LDR)

A3 Placa de prototipado
Una placa de prototipado es un dispostivo de pl astico que contiene las y columnas de agujeros que dejan pasar la electricidad. Esos agujeros est an situados a una distancia est andar de 2.54 mm y los componentes electr onicos mantienen esa separaci on entre sus pines. Al poner un pin de un componente en uno de los agujeros, se establecer a una conexi on el ectrica con todos los agujeros en la misma columna vertical. En la parte inferior y superior de la placa, existen dos las especiales marcadas como + (5v) y - (0v), que permiten conectar horizontalmente con los otros agujeros 6

en esa la. De esta manera, se pueden poner jumpers o cables para conectar a tierra o al voltaje especicado los distintos componentes insertados en la placa.

Figure A3: Una placa de prototipado

A4 Resistencias
Una resistencia es un componente electr onico con un cuerpo cil ndrico con dos patas. Se trata de un componente imprescindible en cualquier circuito electr onico: en un circuito el voltaje, la intensidad, y la resistencia est an relacionados; en particular, la resistencia de un circuito determina la intensidad de corriente que circula, dado un cierto voltaje (conocida como la Ley de Ohm): R(resistencia) = V (voltaje)/I (intensidad) Los ingenieros han dise nado un c odigo de colores, para determinar la capacidad de una resistencia (en ohmios). Por lo general, en el cuerpo de una resistencia hay cuatro anillos de colores, una de ellas en color dorado o plata, donde cada color representa lo siguiente (le do de izquierda a derecha, dejando a la derecha el anillo de color dorado/plata): 1. El color del primer anillo representa las decenas. 2. El color del segundo anillo representa las unidades. 3. El color del tercer anillo representa el valor k (en formato 10k ) que multiplica el valor de la resistencia. ltimo, el color del cuarto anillo representa el valor de tolerancia. 4. Por u

Negro Marr on Rojo Naranja Amarillo Verde

0 1 2 3 4 5

Azul P urpura Gris Blanco Plata Dorado

6 7 8 9 10 % 5%

Table A1: C odigo de colores de las resistencias La Tabla A1 muestra el c odigo de colores usados para calcular el valor de la resistencia. Por ejemplo, considera una resistencia con c odigo de colores: marr on, azul, naranja y dorado. Entonces su 3 valor es 16 10 5%. Figura A4 muestra varias resistencias el ectricas.

Figure A4: Resistencias el ectricas

A5 Bot on
Un bot on es un dispositivo compuesto de dos pines de metal y una cubierta de pl astico. Cuando los pines de metal no est an conectados, es decir el bot on no est a presionado, no existe circulaci on de corriente. Por otro lado, cuando el bot on se presiona los pines entr an en contacto y entre ellos circula corriente. El bot on es, pues, una forma b asica de interruptor de la corriente el ectrica. La ectrico o bot on. Figura A5 muestra el aspecto de un pulsador el

Figure A5: Pulsador o bot on el ectrico

A6 Zumbador
Un zumbador es un transductor electroac ustico que produce un sonido o zumbido del mismo tono que puede ser continuo o intermitente. Se utiliza como mecanismo de se nalizaci on o aviso en m ultiples sistemas como en autom oviles o en electrodom esticos. Para lograr distintos tonos puede ser conectado a distintos tipos de circuitos. El zumbador consta de dos elementos b asicos: un electroim an y una l amina met alica de acero. Cuando la corriente pasa por la bobina del electroim an, se produce un campo magn etico variable que hace vibrar la l amina de acero, lo cual produce un tono.

Figure A6: Zumbador (buzzer)

B Modos de PWM
Para controlar la frecuencia en que se generan las ondas se utilizan los timer (o relojes de software) incorporados en el microcontrolador de Arduino. El chip ATmega168P/328P usa tres timer para PWM (ver datasheet) denominados Timer 0, Timer 1 y Timer 2. Cada uno de estos timer controlan la funci on PWM modicando los valores de dos registros de control, denominados TCCRnA y TCCRnB. Los registros permiten codicar las opciones de PWM que queramos usar en cada caso. 1. Los bits Waveform Generation Mode (WGM) permiten seleccionar el modo de PWM. Esos bits se almacenan discontinuamente en los registros TCCRnA and TCCRnB. 2. Los bits Clock Select (CS) permiten controlar el pre-escalado del reloj, es decir, dividen la frecuencia del reloj del sistema por un factor de pre-escalado entre 1 y 1024. Los valores de CS identican uno de esos factores. Cada timer tiene dos registros de comparaci on denominados OCRnA y OCRnB, correspondientes a las salidas A y B respectivamente. Cuando el valor del timer llega al valor del registro de comparaci on, la salida se modicar a de acuerdo al modo PWM especicado. Existen dos bits m as, denominados Compare Match Output A Mode (COMnA) y Compare Match Output B Mode (COMnB) que permiten habilitar, deshabilitar o invertir la salida de los registros A y B. NOTA: los bits de los registros de control dieren en cada timer (ver datasheet para detalles). Por ejemplo, el Timer 2 usa las salidas PWM 3 (asociada al registro de salida OC2B) y 11 (asociada al registro de salida OC2A). El Timer 1 est a implementado como un contador de 16 bits y el Timer 0 y Timer 2 de 8 bits. Existen distintos modos de PWM. En este enunciado se describe el modo Fast PWM, PhaseCorrect PWM y modicaci on del l mite superior del timer mediante el registro OCRA.

B1 Fast PWM
Fast PWM es el modo m as simple de PWM, donde el timer cuenta repetidamente desde 0 hasta 255. La salida generada toma el valor 1 (ON) cuando el timer es igual a 0 y toma el valor 0 (OFF) cuando el valor del timer alcanza el valor del registro de comparaci on. En este caso, cuanto m as alto es el valor en el registro de comparaci on, mayor es la anchura del pulso. El siguiente diagrama muestra las salidas para dos valores concretos de los registros de comparaci on: OCRnA es 180 y OCRnB es 50. Para congurar Arduino con cualquier modo PWM se ha de usar los pines PWM correpondientes al timer que queremos usar. La tabla siguiente muestra la asignaci on de timers a pines PWM de Arduino. El siguiente c odigo congura Fast PWM, un pre-escalado de 64 (divisi on de la frecuencia del reloj del sistema), salida no-invertida para A y B y los valores de los registros de comparaci on OCRnA igual a 180 y OCRnB igual a 50. pinMode(3, OUTPUT); pinMode(11, OUTPUT); TCCR2A = BV(COM2A1) | BV(COM2B1) | BV(WGM21) | BV(WGM20); TCCR2B = BV(CS22);

10

Figure B1: Fast PWM (http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html) Timer Timer 0 Timer 0 Timer 1 Timer 1 Timer 2 Timer 2 Registro de salida del Timer OC0A OC0B OC1A OC1B OC2A OC2B Pin PWM de Arduino 6 5 9 10 11 3

Table B1: Relaci on entre timers, registros de salida y pines PWM de Arduino OCR2A = 180; OCR2B = 50; La macro BV permite activar (poner a 1) el bit que recibe como argumento. El ap endice C muestra los registros de control y los bits que los componen. La modicaci on de esos bits permite congurar distintos modos de PWM. Asumiendo que estamos usando el timer 2, para congurar el modo Fast PWM debemos escribir el valor 011 en los bits WGM; para congurar un pre-escalado de 64 escribimos el valor 100 en los bits CS; nalmente, para indicar que la salida no se invierta, se escribe el valor 10 en los bits COM2A y COM2B. Podemos calcular la frecuencia y el ciclo de actividad conociendo la frecuencia del reloj del sistema, en el caso del chip Atmega328 de 16Mhz. En este caso la frecuencia del reloj del sistema se ha dividido entre 64 (valor de pre-escalado), dividido entre 256 ciclos que toma el timer para iniciar de nuevo la onda. Nota que la frecuencia en las salidas A y B es la misma. Por tanto: F recuencia reloj sistema (B1) P re escalado 256 El ciclo de actividad de las ondas generadas en las salidas A y B depende del valor del registro de comparaci on correspondiente. En este caso: f req (F astP W M ) = OCRN 2X + 1 (B2) 256 donde X es igual a A o B, seg un el registro de comparaci on. El incremento en 1 se debe a que el valor de salida cambia un ciclo despu es de que el valor del timer alcance el valor del registro de comparaci on. duty cycle(F astP W M ) = 11

B2 Phase Correct PWM


En este modo PWM, el timer cuenta de 0 a 255 y de aqu cuenta hacia atr as hasta llegar a 0. La salida se desactiva (pone a 0) cuando el valor del timer alcanza el registro de comparaci on durante la cuenta hacia adelante; por el contrario la salida se activa (pone a 1) cuando el valor del timer alcanza el registro de comparaci on durante la cuenta hacia atr as. Este modo PWM genera una onda m as sim etrica, tal y como muestra la siguiente gura:

Figure B2: Phase-correct PWM (http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html) En este caso, la frecuencia de salida ser a aproximadamente la mitad que en el modo Fast PWM, dado que la salida cambia dos veces, cuando el timer cuenta hacia atr as y hacia adelante: f req (P hase correctP W M ) = F recuencia reloj sistema P re escalado 255 2 (B3)

El ciclo de actividad de las ondas generadas en las salidas A y B depende del valor del registro de comparaci on correspondiente. En este caso: duty cycle(P hase correctP W M ) = OCRN 2X 256 (B4)

donde X es igual a A o B, seg un el registro de comparaci on. Nota que en este caso no existe el incremento en 1. El siguiente fragmento de c odigo usa el Timer 2 y los pines 3 y 11 para congurar Phase Correct PWM. En este caso, escribimos en los bits WGM el valor 001 (correspondiente a este modo de PWM). Dado que las opciones de pre-escalado y no invertir la salida se mantienen, el resto de bits permanecen igual que en el ejemplo Fast PWM. pinMode(3, OUTPUT); pinMode(11, OUTPUT); TCCR2A = BV(COM2A1) | BV(COM2B1) | BV(WGM20); TCCR2B = BV(CS22); OCR2A = 180; OCR2B = 50;

12

B3 Modicaci on del l mite superior del timer con OCRA


ltimo de los modos PWM consiste en modicar el valor del l El u mite superior del timer y puede usarse tanto con Fast PWM como con Phase-Correct PWM. En este modo, el timer cuenta de 0 hasta OCRA (el registro de comparaci on de la salida A) en lugar de contar hasta 255 (como lo hac a en los modos anteriores). Esto proporciona m as control en la frecuencia de salida que los modos anteriores. Dado que el registro OCRA contiene el valor superior del timer, cuando usamos este modo s olo la salida B puede ser usada para PWM. El modo especial, denominado Toggle OCnA on Compare Match modica la salida A al nal de cada ciclo, generando una onda cuadrada y un ciclo de actividad del 50% y la mitad de la frecuencia. La Figura B3 muestra como el timer resetea cuando alcanza el valor de OCRnA, produciendo una frecuencia m as r apida para la salida B que en los casos anteriores.

Figure B3: Fast PWM con OCRA (http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html) En este modo, los valores de frecuencia y ciclo de actividad se calculan de distinta manera para las salidas A y B. Para la salida A: f requencyA (F ast P W M OCRA) = F recuencia reloj sistema P re escalado (OCR2A + 1) 2 duty cycleA (F ast P W M OCRA) = 50% (B5) (B6)

Para la salida B: f requencyB (F ast P W M OCRA) = F recuencia reloj sistema P re escalado (OCR2A + 1) OCR2B + 1 duty cycleB (F ast P W M OCRA) = OCR2A + 1 (B7) (B8)

En este ejemplo, el Timer 2 cuenta de 0 a 180 (OCRA), y tarda 181 ciclos de reloj, por tanto, la frecuencia de salida se divide entre 181. La salida A tiene la mitad de la frecuencia que la salida B, debido a que el modo Toggle on Compare Match cambia la salida A toda vez que se completa el ciclo del timer. Para controlar el valor de OCRA usando Fast PWM, se debe escribir 111 en los bits WGM. El modo Toggle on Compare Match se consigue escribiendo 01 en los bits COM2A.

13

pinMode(3, OUTPUT); pinMode(11, OUTPUT); TCCR2A = BV(COM2A0) | BV(COM2B1) | BV(WGM21) | BV(WGM20); TCCR2B = BV(WGM22) | BV(CS22); OCR2A = 180; OCR2B = 50; De igual modo, es posible congurar Phast-Correct PWM con OCRA para modicar el valor m aximo del timer. La Figura B4 muestra la salida en este modo:

Figure B4: Phase-correct PWM con OCRA (http://www.arcfn.com/2009/07/secrets-of-arduino-pwm.html) Para congurarlo, escribimos el valor 101 en los bits WGM (selecciona phase-correct PWM con OCRA). Como en el caso anterior, para seleccionar Toggle on Compare Match escribimos 01 en los bits COM2A. pinMode(3, OUTPUT); pinMode(11, OUTPUT); TCCR2A = BV(COM2A0) | BV(COM2B1) | BV(WGM20); TCCR2B = BV(WGM22) | BV(CS22); OCR2A = 180; OCR2B = 50; Calculamos la frecuencia y ciclo de actividad para las salidas A y B usando este modo. Para la salida A: F recuencia reloj sistema f requencyA (P haseCorrect P W M OCRA) = (B9) P re escalado OCR2A 2 2 duty cycleA (P haseCorrect P W M OCRA) = 50% (B10) Para la salida B: F recuencia reloj sistema (B11) P re escalado OCR2A 2 OCR2B duty cycleB (P haseCorrect P W M OCRA) = (B12) OCR2A En el ejemplo, el Timer 2 cuenta hacia adelante de 0 a 180 y despu es hacia atr as hasta llegar a 0, lo cual tomo 360 ciclos de reloj. f requencyB (P haseCorrect P W M OCRA) = 14

C Ap endice B. Conguraci on de los timer para implementaci on de PWM


NOTA: Para consultar los detalles de implementaci on, vea el datasheet del chip Atmega328.

C1 Timer 0
Congurar el modo PWM. Timer 0 - 8 bits TCCR0B WGM02 Deshabilitar canales 0 16-bit Phase + Frecuency correct 8 bit Phase-correct 0 9 bit Phase-correct 10 bit Phase-correct 16 bit Phase-correct 8 bit Fast PWM 0 9 bit Fast PWM 10 bit Fast PWM 16 bit Fast PWM Mode TCCR0A WGM01 0 0 TCCR0A WGM00 0 1 Valor TOP 255 255

255

Table C1: Opciones PWM en Timer 0 Pre-escalado. Timer 0 - 8 bits TCCR0B TCCR0B CS02 CS01 Deshabilitar canales 0 0 Divisor reloj por 1 0 0 Divisor reloj por 8 0 1 Divisor reloj por 32 Divisor reloj por 64 0 1 Divisor reloj por 128 Divisor reloj por 256 1 0 Divisor reloj por 1024 1 0 Mode TCCR0B CS00 0 1 0 1 0 1

Table C2: Opciones de pre-escalado para el Timer 0 Registros de comparaci on de salida. Los registros que almacenan el valor de comparaci on son OCR0A (8 bits) y OCR0B (8 bits) y la salida OC0A y OC0B (de 8 bits cada uno). 15

Mode

Deshabilitar el canal No invertir la salida Invertir la salida

Channel A TCCR0A TCCR0A COM0A1 COM0A0 0 0 1 0 1 1

Channel B TCCR0A TCCR0A COM0B1 COM0B0 0 0 1 0 1 1

Table C3: Modos de registros de comparaci on de salida en Timer 0

C2 Timer 1
Congurar el modo PWM. Mode Deshabilitar canales 16-bit Phase + Frecuency correct 8 bit Phase-correct 9 bit Phase-correct 10 bit Phase-correct 16 bit Phase-correct 8 bit Fast PWM 9 bit Fast PWM 10 bit Fast PWM 16 bit Fast PWM Timer 1 - 16 bits TCCR1B TCCR1B WGM13 WGM12 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 TCCR1A WGM11 0 0 0 1 1 1 0 1 1 1 TCCR1A WGM10 0 0 1 0 1 0 1 0 1 0 Valor TOP 65535 ICR1 255 511 1023 ICR1 255 511 1023 ICR1

Table C4: Opciones PWM en Timer 1 Pre-escalado Registros de comparaci on de salida. Los registros que almacenan el valor de comparaci on son OCR1A (16 bits) y OCR1B (16 bits) y la salida OC1A y OC1B (de 16 bits cada uno).

C3 Timer 2
Congurar el modo PWM. Pre-escalado. Registros de comparaci on de salida. Los registros que almacenan el valor de comparaci on son OCR2A (8 bits) y OCR2B (8 bits) y la salida OC2A y OC2B (de 8 bits cada uno).

16

Timer 1 - 16 bits TCCR1B TCCR1B CS12 CS11 Deshabilitar canales 0 0 Divisor reloj por 1 0 0 Divisor reloj por 8 0 1 Divisor reloj por 32 Divisor reloj por 64 0 1 Divisor reloj por 128 Divisor reloj por 256 1 0 Divisor reloj por 1024 1 0 Mode

TCCR1B CS10 0 1 0 1 0 1

Table C5: Opciones de pre-escalado para el Timer 1

Mode

Deshabilitar el canal No invertir la salida Invertir la salida

Channel A TCCR1A TCCR1A COM1A1 COM1A0 0 0 1 0 1 1

Channel B TCCR1A TCCR1A COM1B1 COM1B0 0 0 1 0 1 1

Table C6: Modos de registros de comparaci on de salida en Timer 1

Timer 2 - 8 bits TCCR2B WGM22 Deshabilitar canales 0 16-bit Phase + Frecuency correct 8 bit Phase-correct 0 9 bit Phase-correct 10 bit Phase-correct 16 bit Phase-correct 8 bit Fast PWM 0 9 bit Fast PWM 10 bit Fast PWM 16 bit Fast PWM Mode

TCCR2A WGM21 0 0

TCCR2A WGM20 0 1

Valor TOP 255 255

255

Table C7: Opciones PWM en Timer 2

17

Timer 2 - 8 bits Mode TCCR2B TCCR2B CS22 CS21 Deshabilitar canales 0 0 Divisor reloj por 1 0 0 Divisor reloj por 8 0 1 Divisor reloj por 32 0 1 Divisor reloj por 64 1 0 Divisor reloj por 128 1 0 Divisor reloj por 256 1 1 Divisor reloj por 1024 1 1

TCCR2B CS20 0 1 0 1 0 1 0 1

Table C8: Opciones de pre-escalado para el Timer 2

Mode

Deshabilitar el canal No invertir la salida Invertir la salida

Channel A TCCR2A TCCR2A COM2A1 COM2A0 0 0 1 0 1 1

Channel B TCCR2A TCCR2A COM2B1 COM2B0 0 0 1 0 1 1

Table C9: Modos de registros de comparaci on de salida en Timer 2

18