From 4df9509eadc88b062181e3626ab72380df2dd288 Mon Sep 17 00:00:00 2001
From: pinchies <pinchies@gmail.com>
Date: Mon, 11 Mar 2019 12:51:21 +1100
Subject: [PATCH] Add support for printers with inverted fan pins (#13362)

Add support for printers with inverted fan pins by adding `#define FAN_INVERTING 1` to `Configuration_adv.h` and modifying the fan write macros.
---
 Marlin/src/inc/Conditionals_post.h | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index f644b3a7d0..ef5ed50c68 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -1169,6 +1169,10 @@
 /**
  * Up to 3 PWM fans
  */
+#ifndef FAN_INVERTING
+  #define FAN_INVERTING false
+#endif
+
 #if HAS_FAN2
   #define FAN_COUNT 3
 #elif HAS_FAN1
@@ -1180,14 +1184,14 @@
 #endif
 
 #if HAS_FAN0
-  #define WRITE_FAN(v) WRITE(FAN_PIN, v)
+  #define WRITE_FAN(v) WRITE(FAN_PIN, (v) ^ FAN_INVERTING)
   #define WRITE_FAN0(v) WRITE_FAN(v)
 #endif
 #if HAS_FAN1
-  #define WRITE_FAN1(v) WRITE(FAN1_PIN, v)
+  #define WRITE_FAN1(v) WRITE(FAN1_PIN, (v) ^ FAN_INVERTING)
 #endif
 #if HAS_FAN2
-  #define WRITE_FAN2(v) WRITE(FAN2_PIN, v)
+  #define WRITE_FAN2(v) WRITE(FAN2_PIN, (v) ^ FAN_INVERTING)
 #endif
 #define WRITE_FAN_N(n, v) WRITE_FAN##n(v)
 
-- 
GitLab