|
@@ -43,7 +43,7 @@ cutter_power_t SpindleLaser::menuPower, // Power s
|
43
|
43
|
#if ENABLED(MARLIN_DEV_MODE)
|
44
|
44
|
cutter_frequency_t SpindleLaser::frequency; // PWM frequency setting; range: 2K - 50K
|
45
|
45
|
#endif
|
46
|
|
-#define SPINDLE_LASER_PWM_OFF ((SPINDLE_LASER_PWM_INVERT) ? 255 : 0)
|
|
46
|
+#define SPINDLE_LASER_PWM_OFF TERN(SPINDLE_LASER_PWM_INVERT, 255, 0)
|
47
|
47
|
|
48
|
48
|
//
|
49
|
49
|
// Init the cutter to a safe OFF state
|
|
@@ -71,16 +71,23 @@ void SpindleLaser::init() {
|
71
|
71
|
/**
|
72
|
72
|
* Set the cutter PWM directly to the given ocr value
|
73
|
73
|
*/
|
74
|
|
- void SpindleLaser::set_ocr(const uint8_t ocr) {
|
75
|
|
- WRITE(SPINDLE_LASER_ENA_PIN, SPINDLE_LASER_ACTIVE_STATE); // Turn spindle on
|
76
|
|
- analogWrite(pin_t(SPINDLE_LASER_PWM_PIN), ocr ^ SPINDLE_LASER_PWM_OFF);
|
|
74
|
+ void SpindleLaser::_set_ocr(const uint8_t ocr) {
|
77
|
75
|
#if NEEDS_HARDWARE_PWM && SPINDLE_LASER_FREQUENCY
|
|
76
|
+ set_pwm_frequency(pin_t(SPINDLE_LASER_PWM_PIN), TERN(MARLIN_DEV_MODE, frequency, SPINDLE_LASER_FREQUENCY));
|
78
|
77
|
set_pwm_duty(pin_t(SPINDLE_LASER_PWM_PIN), ocr ^ SPINDLE_LASER_PWM_OFF);
|
|
78
|
+ #else
|
|
79
|
+ analogWrite(pin_t(SPINDLE_LASER_PWM_PIN), ocr ^ SPINDLE_LASER_PWM_OFF);
|
79
|
80
|
#endif
|
80
|
81
|
}
|
|
82
|
+
|
|
83
|
+ void SpindleLaser::set_ocr(const uint8_t ocr) {
|
|
84
|
+ WRITE(SPINDLE_LASER_ENA_PIN, SPINDLE_LASER_ACTIVE_STATE); // Cutter ON
|
|
85
|
+ _set_ocr(ocr);
|
|
86
|
+ }
|
|
87
|
+
|
81
|
88
|
void SpindleLaser::ocr_off() {
|
82
|
|
- WRITE(SPINDLE_LASER_ENA_PIN, !SPINDLE_LASER_ACTIVE_STATE); // Turn spindle off
|
83
|
|
- analogWrite(pin_t(SPINDLE_LASER_PWM_PIN), SPINDLE_LASER_PWM_OFF); // Only write low byte
|
|
89
|
+ WRITE(SPINDLE_LASER_ENA_PIN, !SPINDLE_LASER_ACTIVE_STATE); // Cutter OFF
|
|
90
|
+ _set_ocr(0);
|
84
|
91
|
}
|
85
|
92
|
#endif
|
86
|
93
|
|
|
@@ -97,7 +104,7 @@ void SpindleLaser::apply_power(const uint8_t opwr) {
|
97
|
104
|
ocr_off();
|
98
|
105
|
isReady = false;
|
99
|
106
|
}
|
100
|
|
- else if (enabled() || ENABLED(CUTTER_POWER_RELATIVE)) {
|
|
107
|
+ else if (ENABLED(CUTTER_POWER_RELATIVE) || enabled()) {
|
101
|
108
|
set_ocr(power);
|
102
|
109
|
isReady = true;
|
103
|
110
|
}
|