Browse Source

🚸 Laser with only PWM pin (#24345)

Ruedi Steinmann 1 year ago
parent
commit
a167e2e948
No account linked to committer's email address
2 changed files with 9 additions and 5 deletions
  1. 7
    3
      Marlin/src/feature/spindle_laser.cpp
  2. 2
    2
      Marlin/src/inc/SanityCheck.h

+ 7
- 3
Marlin/src/feature/spindle_laser.cpp View File

@@ -67,7 +67,7 @@ cutter_frequency_t SpindleLaser::frequency;                           // PWM fre
67 67
 void SpindleLaser::init() {
68 68
   #if ENABLED(SPINDLE_SERVO)
69 69
     servo[SPINDLE_SERVO_NR].move(SPINDLE_SERVO_MIN);
70
-  #else
70
+  #elif PIN_EXISTS(SPINDLE_LASER_ENA)
71 71
     OUT_WRITE(SPINDLE_LASER_ENA_PIN, !SPINDLE_LASER_ACTIVE_STATE);    // Init spindle to off
72 72
   #endif
73 73
   #if ENABLED(SPINDLE_CHANGE_DIR)
@@ -104,12 +104,16 @@ void SpindleLaser::init() {
104 104
   }
105 105
 
106 106
   void SpindleLaser::set_ocr(const uint8_t ocr) {
107
-    WRITE(SPINDLE_LASER_ENA_PIN,  SPINDLE_LASER_ACTIVE_STATE); // Cutter ON
107
+    #if PIN_EXISTS(SPINDLE_LASER_ENA)
108
+      WRITE(SPINDLE_LASER_ENA_PIN,  SPINDLE_LASER_ACTIVE_STATE); // Cutter ON
109
+    #endif
108 110
     _set_ocr(ocr);
109 111
   }
110 112
 
111 113
   void SpindleLaser::ocr_off() {
112
-    WRITE(SPINDLE_LASER_ENA_PIN, !SPINDLE_LASER_ACTIVE_STATE); // Cutter OFF
114
+    #if PIN_EXISTS(SPINDLE_LASER_ENA)
115
+      WRITE(SPINDLE_LASER_ENA_PIN, !SPINDLE_LASER_ACTIVE_STATE); // Cutter OFF
116
+    #endif
113 117
     _set_ocr(0);
114 118
   }
115 119
 #endif // SPINDLE_LASER_USE_PWM

+ 2
- 2
Marlin/src/inc/SanityCheck.h View File

@@ -3912,8 +3912,8 @@ static_assert(_PLUS_TEST(4), "HOMING_FEEDRATE_MM_M values must be positive.");
3912 3912
   #define _PIN_CONFLICT(P) (PIN_EXISTS(P) && P##_PIN == SPINDLE_LASER_PWM_PIN)
3913 3913
   #if BOTH(SPINDLE_FEATURE, LASER_FEATURE)
3914 3914
     #error "Enable only one of SPINDLE_FEATURE or LASER_FEATURE."
3915
-  #elif !PIN_EXISTS(SPINDLE_LASER_ENA) && DISABLED(SPINDLE_SERVO)
3916
-    #error "(SPINDLE|LASER)_FEATURE requires SPINDLE_LASER_ENA_PIN or SPINDLE_SERVO to control the power."
3915
+  #elif NONE(SPINDLE_SERVO, SPINDLE_LASER_USE_PWM) && !PIN_EXISTS(SPINDLE_LASER_ENA)
3916
+    #error "(SPINDLE|LASER)_FEATURE requires SPINDLE_LASER_ENA_PIN, SPINDLE_LASER_USE_PWM, or SPINDLE_SERVO to control the power."
3917 3917
   #elif ENABLED(SPINDLE_CHANGE_DIR) && !PIN_EXISTS(SPINDLE_DIR)
3918 3918
     #error "SPINDLE_DIR_PIN is required for SPINDLE_CHANGE_DIR."
3919 3919
   #elif ENABLED(SPINDLE_LASER_USE_PWM)

Loading…
Cancel
Save