diff --git a/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp b/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
index 55ca669a876f41166ca05280eddb8d6cc4a73098..282b70de71317dda9ee4a563d3e02011d797bc5d 100644
--- a/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
+++ b/Marlin/src/HAL/HAL_AVR/fast_pwm.cpp
@@ -59,8 +59,8 @@ Timer get_pwm_timer(const pin_t pin) {
       #ifdef TCCR2
         case TIMER2: {
           Timer timer = {
-            /*TCCRnQ*/  { &TCCR2, nullptr, nullptr},
-            /*OCRnQ*/   { (uint16_t*)&OCR2, nullptr, nullptr},
+            /*TCCRnQ*/  { &TCCR2, nullptr, nullptr },
+            /*OCRnQ*/   { (uint16_t*)&OCR2, nullptr, nullptr },
             /*ICRn*/      nullptr,
             /*n, q*/      2, 0
           };
@@ -70,8 +70,8 @@ Timer get_pwm_timer(const pin_t pin) {
           case TIMER2A:   break; // protect TIMER2A
           case TIMER2B: {
             Timer timer = {
-              /*TCCRnQ*/  { &TCCR2A,  &TCCR2B,  nullptr},
-              /*OCRnQ*/   { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
+              /*TCCRnQ*/  { &TCCR2A,  &TCCR2B,  nullptr },
+              /*OCRnQ*/   { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
               /*ICRn*/      nullptr,
               /*n, q*/      2, 1
             };
@@ -81,8 +81,8 @@ Timer get_pwm_timer(const pin_t pin) {
           case TIMER2B:   ++q;
           case TIMER2A: {
             Timer timer = {
-              /*TCCRnQ*/  { &TCCR2A,  &TCCR2B,  nullptr},
-              /*OCRnQ*/   { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr},
+              /*TCCRnQ*/  { &TCCR2A,  &TCCR2B,  nullptr },
+              /*OCRnQ*/   { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
               /*ICRn*/      nullptr,
                             2, q
             };
@@ -91,13 +91,24 @@ Timer get_pwm_timer(const pin_t pin) {
         #endif
       #endif
     #endif
-    #ifdef TCCR3A
+    #ifdef OCR3C
       case TIMER3C:   ++q;
       case TIMER3B:   ++q;
       case TIMER3A: {
         Timer timer = {
-          /*TCCRnQ*/  { &TCCR3A,  &TCCR3B,  &TCCR3C},
-          /*OCRnQ*/   { &OCR3A,   &OCR3B,   &OCR3C},
+          /*TCCRnQ*/  { &TCCR3A,  &TCCR3B,  &TCCR3C },
+          /*OCRnQ*/   { &OCR3A,   &OCR3B,   &OCR3C },
+          /*ICRn*/      &ICR3,
+          /*n, q*/      3, q
+        };
+        return timer;
+      }
+    #elif defined(OCR3B)
+      case TIMER3B:   ++q;
+      case TIMER3A: {
+        Timer timer = {
+          /*TCCRnQ*/  { &TCCR3A,  &TCCR3B,  nullptr },
+          /*OCRnQ*/   { &OCR3A,   &OCR3B,  nullptr },
           /*ICRn*/      &ICR3,
           /*n, q*/      3, q
         };
@@ -109,8 +120,8 @@ Timer get_pwm_timer(const pin_t pin) {
       case TIMER4B:   ++q;
       case TIMER4A: {
         Timer timer = {
-          /*TCCRnQ*/  { &TCCR4A,  &TCCR4B,  &TCCR4C},
-          /*OCRnQ*/   { &OCR4A,   &OCR4B,   &OCR4C},
+          /*TCCRnQ*/  { &TCCR4A,  &TCCR4B,  &TCCR4C },
+          /*OCRnQ*/   { &OCR4A,   &OCR4B,   &OCR4C },
           /*ICRn*/      &ICR4,
           /*n, q*/      4, q
         };
@@ -122,7 +133,7 @@ Timer get_pwm_timer(const pin_t pin) {
       case TIMER5B:   ++q;
       case TIMER5A: {
         Timer timer = {
-          /*TCCRnQ*/  { &TCCR5A,  &TCCR5B,  &TCCR5C},
+          /*TCCRnQ*/  { &TCCR5A,  &TCCR5B,  &TCCR5C },
           /*OCRnQ*/   { &OCR5A,   &OCR5B,   &OCR5C },
           /*ICRn*/      &ICR5,
           /*n, q*/      5, q
@@ -132,8 +143,8 @@ Timer get_pwm_timer(const pin_t pin) {
     #endif
   }
   Timer timer = {
-      /*TCCRnQ*/  { nullptr, nullptr, nullptr},
-      /*OCRnQ*/   { nullptr, nullptr, nullptr},
+      /*TCCRnQ*/  { nullptr, nullptr, nullptr },
+      /*OCRnQ*/   { nullptr, nullptr, nullptr },
       /*ICRn*/      nullptr,
                     0, 0
   };