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

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

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().

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