2

I have two Arduinos, a nano and a mega. I want to output 16 bit PWM, but can seem to only get it working on the nano. I'm adapting the code from this website: http://www.ofrecordings.com/2014/03/16/how-to-set-up-16-bit-pwm-with-an-arduino-uno-atmega328/

void setup() {
 // Set PB1/2 as outputs.
 DDRB |= (1 << DDB1) | (1 << DDB2);
 TCCR1A =
 (1 << COM1A1) | (1 << COM1B1) |
 // Fast PWM mode.
 (1 << WGM11);
 TCCR1B =
 // Fast PWM mode.
 (1 << WGM12) | (1 << WGM13) |
 // No clock prescaling (fastest possible
 // freq).
 (1 << CS10);
 OCR1A = 0;
 // Set the counter value that corresponds to
 // full duty cycle. For 15-bit PWM use
 // 0x7fff, etc. A lower value for ICR1 will
 // allow a faster PWM frequency.
 ICR1 = 0xffff;
}
void loop() {
 // Use OCR1A and OCR1B to control the PWM
 // duty cycle. Duty cycle = OCR1A / ICR1.
 // OCR1A controls PWM on pin 9 (PORTB1).
 // OCR1B controls PWM on pin 10 (PORTB2).
 OCR1A = 0x0000;
 delay(500);
 OCR1A = 0x8000;
 delay(500);
 OCR1A = 0xffff;
 delay(500);
}

That code works on the nano, but not on the mega. I expect that it output PWM on pins 11 and 12, but no luck. Care to explain how I can get it working? It's an entirely different microprocessor, and I'm not sure which parts of the code to change.

jfpoilpret
9,1627 gold badges38 silver badges54 bronze badges
asked Nov 5, 2014 at 2:33
0

2 Answers 2

2

Change first line:

 // Set PB1/2 as outputs.
 DDRB |= (1 << DDB1) | (1 << DDB2);`

to the

 // Set PB5/6 as outputs. [**Digital pin 11,12 on Arduino Mega!**]
 DDRB |= (1 << DDB5) | (1 << DDB6);

Now your PWM should work, but on digital pins 11 & 12 [Arduino Mega].

answered Dec 8, 2014 at 8:22
0

According to this chart: http://arduino.cc/en/Hacking/PinMapping2560

The mega does not support PWM on those digital pins. It looks like 14 of the 54 pins do, use the chart to find which pins to use.

answered Nov 5, 2014 at 2:51

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.