Can I change the resolution of the PWM signal to 16-bit on Arduino Uno?

Hi everyone,

I’m working on a project using the Arduino Uno and I want to increase the resolution of the PWM signal from the default 8 bits (0-255) to 16 bits (0-65535). Is there a way to achieve this on the Uno?

I know the default PWM resolution is 8-bit, but I’m wondering if there is a method to modify the timers or any other technique to get a 16-bit resolution PWM output.

Has anyone worked on this before, or can someone guide me on how to implement it?

Thanks in advance!

Use timer1?

arduino timers

timers and counters

2 Likes

Also Chapter 16 of the ATmega328 Datasheet. It is the authoritative source.

2 Likes

The only Timer1 on Uno has a 16bit counter, so you can achieve a 16bit resolution only on two PWM pins. The other PWM outputs can has a 8bit resolution as maximum.

If you can tolerate lower frequency, you can get almost any resolution you like with micros().

1 Like

Why do you think you need this resolution, and at what frequency.
Hint: Divide the 16Mhz clock of the Uno by 65536.
Leo..

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.