Is there a way I achieve PWM that would have more precision than only 256?
Thanks ![]()
Is there a way I achieve PWM that would have more precision than only 256?
Thanks ![]()
use an external DAC?
Timer 1 on the Uno is a 16-bit timer so you can do it if you fiddle with the timer ports manually. You would want to choose one of the PWM modes (phase-correct or fast) and set up the ports appropriately.
There is a trade-off between resolution and frequency.
Thanks guys. Food for thought.
An example on this page:
Example code:
#include <TimerHelpers.h>
...
 // Timer 1 - vertical sync pulses
 pinMode (vSyncPin, OUTPUT);
 Timer1::setMode (15, Timer1::PRESCALE_1024, Timer1::CLEAR_B_ON_COMPARE);
 OCR1A = 259;  // 16666 / 64 uS = 260 (less one)
 OCR1B = 0;   // 64 / 64 uS = 1 (less one)
In this particular case the frequency was 60 Hz and the duty cycle 1 / 260. However by making OCR1A larger you could get a smaller duty cycle and thus a higher resolution (but a lower frequency). You can change the frequency to an extent by altering the prescaler.