VARIAR_FREC_PWM

11
Trabajando con el arduino mega y las salidas PWM me topé que necesitaba cambiar la frecuencia a la cual genera los pulsos, algo bien documentado para la placa chica pero no habia visto nada para la grande. Así que por fuerza me puse a investigar y esto encontré: El Mega 2560 tiene 15 salidas PWM por hardware A sólo 6 de ellas se les puede modificar el factor de división de frecuencia: Registro Pin en del micro Arduino TCCR0B 4 TCCR1B 12 TCCR2B 9 TCCR3B 2 TCCR4B 7 TCCR5B 45 Para el Timer/Counter 0,1,3,4 y 5 Config. Divisor Frecuencia PWM 0x00 - 0 0x01 1 31,333 Hz 0x02 8 3,916 Hz 0x03 64 489 Hz 0x04 256 122 Hz 0x05 1024 30 Hz Para el Timer/Counter 2 Config. Divisor Frecuencia PWM 0x00 - 0

description

de internet

Transcript of VARIAR_FREC_PWM

Trabajando con el arduino mega y las salidas PWM me top que necesitaba cambiar la frecuencia a la cual genera los pulsos, algo bien documentado para la placa chica pero no habia visto nada para la grande. As que por fuerza me puse a investigar y esto encontr:

El Mega 2560 tiene 15 salidas PWM por hardware

A slo 6 de ellas se les puede modificar el factor de divisin de frecuencia:

Registro Pin endel micro ArduinoTCCR0B 4TCCR1B 12TCCR2B 9TCCR3B 2TCCR4B 7TCCR5B 45

Para el Timer/Counter 0,1,3,4 y 5Config. Divisor Frecuencia PWM0x00 - 00x01 1 31,333 Hz0x02 8 3,916 Hz0x03 64 489 Hz0x04 256 122 Hz0x05 1024 30 Hz

Para el Timer/Counter 2Config. Divisor Frecuencia PWM0x00 - 00x01 1 31,333 Hz0x02 8 3,916 Hz0x03 32 979 Hz0x04 64 489 Hz0x05 128 244 Hz0x06 256 122 Hz0x07 1024 30 Hz

Por omisin, la frecuencia del PWM est configurada a 489 Hz y ya es de nosotros el moverla a voluntad usando los registros. El cdigo a inclur es algo as:Code: [Select]

//Para bajar la frecuencia del PWM pin 45 del Mega 2560 a 30 HzTCCR5B = TCCR5B & 0b000 | 0x05;//Para bajar la frecuencia del PWM pin 9 del Mega 2560 a 30 HzTCCR2B = TCCR2B & 0b000 | 0x07;

Adjusting PWM FrequenciesFor further knowledge on Arduino PWM frequencies refer to the ATMega Complete Datasheet and this Arduino.cc page "Secrets of Arduino PWM" http://arduino.cc/en/Tutorial/SecretsOfArduinoPWM Regarding Arduino MegaThis article is not fully compatible to Arduino Mega (or ATmega2560 microprocessor) For Arduino Mega: (tested on Arduino Mega 2560)timer 0 (controls pin 13, 4)timer 1 (controls pin 12, 11)timer 2 (controls pin 10, 9)timer 3 (controls pin 5, 3, 2)timer 4 (controls pin 8, 7, 6)

TCCRnB, where 'n' is the number for the timer.TCCR2B for timer 2, TCCR3B for timer 3.Eg: TCCR2B = TCCR2B & 0b11111000 | 0x01;//sets Arduino Mega's pin 10 and 9 to frequency 31250.//code typically inserted in setup()

Thanks to valerio_sperati(http://arduino.cc/forum/index.php/topic,72092.0.html) How to adjust Arduino PWM frequenciesby macegr in this forum post http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1235060559/12 Pins 5 and 6: controlled by Timer 0 in fast PWM mode (cycle length = 256)Setting Divisor Frequency0x01 1 625000x02 8 7812.50x03 64 976.5625