Browse Source

[2.0.x] Optional heater signal inversion (#10260)

Karl Andersson 6 years ago
parent
commit
7cbbc2af7a
2 changed files with 36 additions and 11 deletions
  1. 30
    5
      Marlin/src/inc/Conditionals_post.h
  2. 6
    6
      Marlin/src/module/temperature.cpp

+ 30
- 5
Marlin/src/inc/Conditionals_post.h View File

@@ -832,17 +832,42 @@
832 832
 #endif
833 833
 
834 834
 /**
835
+ * Heater signal inversion defaults
836
+ */
837
+
838
+#if HAS_HEATER_0 && !defined(HEATER_0_INVERTING)
839
+  #define HEATER_0_INVERTING false
840
+#endif
841
+
842
+#if HAS_HEATER_1 && !defined(HEATER_1_INVERTING)
843
+  #define HEATER_1_INVERTING false
844
+#endif
845
+
846
+#if HAS_HEATER_2 && !defined(HEATER_2_INVERTING)
847
+  #define HEATER_2_INVERTING false
848
+#endif
849
+
850
+#if HAS_HEATER_3 && !defined(HEATER_3_INVERTING)
851
+  #define HEATER_3_INVERTING false
852
+#endif
853
+
854
+#if HAS_HEATER_4 && !defined(HEATER_4_INVERTING)
855
+  #define HEATER_4_INVERTING false
856
+#endif
857
+
858
+/**
835 859
  * Helper Macros for heaters and extruder fan
836 860
  */
837
-#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, v)
861
+
862
+#define WRITE_HEATER_0P(v) WRITE(HEATER_0_PIN, (v) ^ HEATER_0_INVERTING)
838 863
 #if HOTENDS > 1 || ENABLED(HEATERS_PARALLEL)
839
-  #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, v)
864
+  #define WRITE_HEATER_1(v) WRITE(HEATER_1_PIN, (v) ^ HEATER_1_INVERTING)
840 865
   #if HOTENDS > 2
841
-    #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, v)
866
+    #define WRITE_HEATER_2(v) WRITE(HEATER_2_PIN, (v) ^ HEATER_2_INVERTING)
842 867
     #if HOTENDS > 3
843
-      #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, v)
868
+      #define WRITE_HEATER_3(v) WRITE(HEATER_3_PIN, (v) ^ HEATER_3_INVERTING)
844 869
       #if HOTENDS > 4
845
-        #define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, v)
870
+        #define WRITE_HEATER_4(v) WRITE(HEATER_4_PIN, (v) ^ HEATER_4_INVERTING)
846 871
       #endif // HOTENDS > 4
847 872
     #endif // HOTENDS > 3
848 873
   #endif // HOTENDS > 2

+ 6
- 6
Marlin/src/module/temperature.cpp View File

@@ -1085,22 +1085,22 @@ void Temperature::init() {
1085 1085
   #endif
1086 1086
 
1087 1087
   #if HAS_HEATER_0
1088
-    SET_OUTPUT(HEATER_0_PIN);
1088
+    OUT_WRITE(HEATER_0_PIN, HEATER_0_INVERTING);
1089 1089
   #endif
1090 1090
   #if HAS_HEATER_1
1091
-    SET_OUTPUT(HEATER_1_PIN);
1091
+    OUT_WRITE(HEATER_1_PIN, HEATER_1_INVERTING);
1092 1092
   #endif
1093 1093
   #if HAS_HEATER_2
1094
-    SET_OUTPUT(HEATER_2_PIN);
1094
+    OUT_WRITE(HEATER_2_PIN, HEATER_2_INVERTING);
1095 1095
   #endif
1096 1096
   #if HAS_HEATER_3
1097
-    SET_OUTPUT(HEATER_3_PIN);
1097
+    OUT_WRITE(HEATER_3_PIN, HEATER_3_INVERTING);
1098 1098
   #endif
1099 1099
   #if HAS_HEATER_4
1100
-    SET_OUTPUT(HEATER_3_PIN);
1100
+    OUT_WRITE(HEATER_3_PIN, HEATER_4_INVERTING);
1101 1101
   #endif
1102 1102
   #if HAS_HEATER_BED
1103
-    SET_OUTPUT(HEATER_BED_PIN);
1103
+    OUT_WRITE(HEATER_BED_PIN, HEATER_BED_INVERTING);
1104 1104
   #endif
1105 1105
 
1106 1106
   #if HAS_FAN0

Loading…
Cancel
Save