# Slowest possible PWM frequency for digital pins 3, 5, 6, 11 on Arduino Uno

**URL:** <https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944>\
**Category:** General Guidance\
**Created:** [June 5, 2025, 2:12pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944 "2025-06-05T14:12:16Z")\
**Posts on this page:** 13\
**Page:** 1

<div class="post-metadata">

**Author:** ![bsyzek0](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bsyzek0/32/1220930_2.png) [@bsyzek0](https://forum.arduino.cc/u/bsyzek0)\
**Post date:** [June 5, 2025, 2:12pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/1 "2025-06-05T14:12:16Z")

</div>

Hello. I'm attempting to control several servos using digital pins 3, 5, 6, & 11 on an Arduino Uno. However, the servos require a PWM frequency of 50hz, and the lowest PWM frequency I seem to be able to generate using those pins is ~60hz due to timer0 and timer2 only having 8bit registers. Is there any way to generate a 50hz PWM signal on these pins, or is ~60hz the lowest they can go?

---

<div class="post-metadata">

**Author:** ![UKHeliBob](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ukhelibob/32/215663_2.png) [@UKHeliBob](https://forum.arduino.cc/u/UKHeliBob)\
**Post date:** [June 5, 2025, 2:13pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/2 "2025-06-05T14:13:47Z")

</div>

Welcome to the forum

Why not use the Servo library ?

---

<div class="post-metadata">

**Author:** ![bsyzek0](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bsyzek0/32/1220930_2.png) [@bsyzek0](https://forum.arduino.cc/u/bsyzek0)\
**Post date:** [June 5, 2025, 2:17pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/3 "2025-06-05T14:17:26Z")

</div>

I'm doing the programming in Rust, so unfortunately can't use that library. Can the servo library achieve 50hz? If so, maybe I can do some reverse engineering there.

---

<div class="post-metadata">

**Author:** ![UKHeliBob](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/ukhelibob/32/215663_2.png) [@UKHeliBob](https://forum.arduino.cc/u/UKHeliBob)\
**Post date:** [June 5, 2025, 2:21pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/4 "2025-06-05T14:21:29Z")

</div>

> [@bsyzek0](#):
>
> I'm doing the programming in Rust

Are there any other important facts that you forgot to mention ?

The Servo library is used to control servos  
Servos use PWM at 50Hz

Can you guess what frequency the Servo library uses ?

---

<div class="post-metadata">

**Author:** ![bsyzek0](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bsyzek0/32/1220930_2.png) [@bsyzek0](https://forum.arduino.cc/u/bsyzek0)\
**Post date:** [June 5, 2025, 2:35pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/5 "2025-06-05T14:35:03Z")

</div>

Thanks. I'll have to dig into the servo library then and see how they do it under the hood.

---

<div class="post-metadata">

**Author:** ![camsysca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/camsysca/32/1015228_2.png) [@camsysca](https://forum.arduino.cc/u/camsysca)\
**Post date:** [June 5, 2025, 2:37pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/6 "2025-06-05T14:37:52Z")

</div>

They use the 16 bit timer, #1 iirc.

---

<div class="post-metadata">

**Author:** ![bsyzek0](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bsyzek0/32/1220930_2.png) [@bsyzek0](https://forum.arduino.cc/u/bsyzek0)\
**Post date:** [June 5, 2025, 2:39pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/7 "2025-06-05T14:39:55Z")

</div>

Can you make pins 3, 5, 6 & 11 use timer1? My understanding was that they used timer0 (pins 5 & 6) and timer2 (pins 3 & 11).

---

<div class="post-metadata">

**Author:** ![camsysca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/camsysca/32/1015228_2.png) [@camsysca](https://forum.arduino.cc/u/camsysca)\
**Post date:** [June 5, 2025, 2:43pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/8 "2025-06-05T14:43:27Z")

</div>

You need to look at the servo.h code. They are bitbanging any output pin you choose in the ISR; servo.h has no pin restrictions

---

<div class="post-metadata">

**Author:** ![bsyzek0](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/bsyzek0/32/1220930_2.png) [@bsyzek0](https://forum.arduino.cc/u/bsyzek0)\
**Post date:** [June 5, 2025, 2:53pm UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/9 "2025-06-05T14:53:15Z")

</div>

Ok thanks. Yup, time to roll up my sleeves and see how the servo library does it.

---

<div class="post-metadata">

**Author:** ![westfw](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/westfw/32/213443_2.png) [@westfw](https://forum.arduino.cc/u/westfw)\
**Post date:** [June 6, 2025, 7:56am UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/10 "2025-06-06T07:56:10Z")

</div>

> [@UKHeliBob](#):
>
> Servos use PWM at 50Hz

Not exactly. Servos use about a 0.5 to 2.5ms pulse within a 50ms window, so using PWM that could extend a pulse from 0 to 50ms is a poor solution; giving you too much "range" and not enough "precision."  
A preferred solution is to operate your servos sequentially, setting a timer interrupt for the desired pulse width, interrupting and stepping to the next servo, and then waiting the rest of the 50ms when you've pulsed them all. (I believe that this is what the servo library does, in its current incarnation.)

 ![Servo-timing](https://europe1.discourse-cdn.com/arduino/original/4X/b/d/2/bd2922dd5f38c11f0447f906c50b1ce27f25863a.png)

---

<div class="post-metadata">

**Author:** ![GolamMostafa](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/golammostafa/32/239011_2.png) [@GolamMostafa](https://forum.arduino.cc/u/GolamMostafa)\
**Post date:** [June 6, 2025, 10:05am UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/11 "2025-06-06T10:05:24Z")

</div>

> [@bsyzek0](#):
>
> Can you make pins 3, 5, 6 & 11 use timer1? My understanding was that they used timer0 (pins 5 & 6) and timer2 (pins 3 & 11).

 ![pwm328x](https://europe1.discourse-cdn.com/arduino/original/4X/3/c/2/3c20b6590b3d811b72695051b41f3e60e90f6e93.png)  
Figure-1:

Fig-1 shows which timer delivers PWM signal on which DPin during the execution of `analogWrite(DPin, arg8);` instruction.

Servo.h Library can deliver 50 Hz PWM signal on any valid DPin.

If registers are manipulated to generate PWM signals of varying frequencies, then the timers deliver PWM signals on the respective DPins of Fig-1.

---

<div class="post-metadata">

**Author:** ![camsysca](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/camsysca/32/1015228_2.png) [@camsysca](https://forum.arduino.cc/u/camsysca)\
**Post date:** [June 6, 2025, 10:55am UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/12 "2025-06-06T10:55:46Z")

</div>

@westfw 20 ms, not 50. Repeated.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [December 3, 2025, 10:56am UTC](https://forum.arduino.cc/t/slowest-possible-pwm-frequency-for-digital-pins-3-5-6-11-on-arduino-uno/1386944/13 "2025-12-03T10:56:25Z")

</div>

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