Analog joystick jogging control (#14648)

This commit is contained in:
Jamie
2019-09-08 00:55:34 -05:00
committed by Scott Lahteine
parent 068c303742
commit dbee0e9c54
118 changed files with 1986 additions and 446 deletions

View File

@ -44,6 +44,10 @@
#include "../feature/bltouch.h"
#endif
#if ENABLED(JOYSTICK)
#include "../feature/joystick.h"
#endif
Endstops endstops;
// private:
@ -474,6 +478,11 @@ void _O2 Endstops::M119() {
#if ENABLED(BLTOUCH)
bltouch._reset_SW_mode();
#endif
#if ENABLED(JOYSTICK_DEBUG)
joystick.report();
#endif
} // Endstops::M119
// The following routines are called from an ISR context. It could be the temperature ISR, the

View File

@ -64,6 +64,10 @@
#include "../feature/leds/printer_event_leds.h"
#endif
#if ENABLED(JOYSTICK)
#include "../feature/joystick.h"
#endif
#if ENABLED(SINGLENOZZLE)
#include "tool_change.h"
#endif
@ -1685,6 +1689,18 @@ void Temperature::init() {
#if HAS_TEMP_ADC_5
HAL_ANALOG_SELECT(TEMP_5_PIN);
#endif
#if HAS_JOY_ADC_X
HAL_ANALOG_SELECT(JOY_X_PIN);
#endif
#if HAS_JOY_ADC_Y
HAL_ANALOG_SELECT(JOY_Y_PIN);
#endif
#if HAS_JOY_ADC_Z
HAL_ANALOG_SELECT(JOY_Z_PIN);
#endif
#if HAS_JOY_ADC_EN
SET_INPUT_PULLUP(JOY_EN_PIN);
#endif
#if HAS_HEATED_BED
HAL_ANALOG_SELECT(TEMP_BED_PIN);
#endif
@ -2195,6 +2211,16 @@ void Temperature::set_current_temp_raw() {
temp_chamber.update();
#endif
#if HAS_JOY_ADC_X
joystick.x.update();
#endif
#if HAS_JOY_ADC_Y
joystick.y.update();
#endif
#if HAS_JOY_ADC_Z
joystick.z.update();
#endif
temp_meas_ready = true;
}
@ -2225,6 +2251,16 @@ void Temperature::readings_ready() {
temp_chamber.reset();
#endif
#if HAS_JOY_ADC_X
joystick.x.reset();
#endif
#if HAS_JOY_ADC_Y
joystick.y.reset();
#endif
#if HAS_JOY_ADC_Z
joystick.z.reset();
#endif
static constexpr int8_t temp_dir[] = {
#if ENABLED(HEATER_0_USES_MAX6675)
0
@ -2721,6 +2757,21 @@ void Temperature::isr() {
break;
#endif
#if HAS_JOY_ADC_X
case PrepareJoy_X: HAL_START_ADC(JOY_X_PIN); break;
case MeasureJoy_X: ACCUMULATE_ADC(joystick.x); break;
#endif
#if HAS_JOY_ADC_Y
case PrepareJoy_Y: HAL_START_ADC(JOY_Y_PIN); break;
case MeasureJoy_Y: ACCUMULATE_ADC(joystick.y); break;
#endif
#if HAS_JOY_ADC_Z
case PrepareJoy_Z: HAL_START_ADC(JOY_Z_PIN); break;
case MeasureJoy_Z: ACCUMULATE_ADC(joystick.z); break;
#endif
#if HAS_ADC_BUTTONS
case Prepare_ADC_KEY: HAL_START_ADC(ADC_KEYPAD_PIN); break;
case Measure_ADC_KEY:

View File

@ -92,44 +92,43 @@ typedef struct { float Kp, Ki, Kd, Kc; } PIDC_t;
enum ADCSensorState : char {
StartSampling,
#if HAS_TEMP_ADC_0
PrepareTemp_0,
MeasureTemp_0,
PrepareTemp_0, MeasureTemp_0,
#endif
#if HAS_HEATED_BED
PrepareTemp_BED,
MeasureTemp_BED,
PrepareTemp_BED, MeasureTemp_BED,
#endif
#if HAS_TEMP_CHAMBER
PrepareTemp_CHAMBER,
MeasureTemp_CHAMBER,
PrepareTemp_CHAMBER, MeasureTemp_CHAMBER,
#endif
#if HAS_TEMP_ADC_1
PrepareTemp_1,
MeasureTemp_1,
PrepareTemp_1, MeasureTemp_1,
#endif
#if HAS_TEMP_ADC_2
PrepareTemp_2,
MeasureTemp_2,
PrepareTemp_2, MeasureTemp_2,
#endif
#if HAS_TEMP_ADC_3
PrepareTemp_3,
MeasureTemp_3,
PrepareTemp_3, MeasureTemp_3,
#endif
#if HAS_TEMP_ADC_4
PrepareTemp_4,
MeasureTemp_4,
PrepareTemp_4, MeasureTemp_4,
#endif
#if HAS_TEMP_ADC_5
PrepareTemp_5,
MeasureTemp_5,
PrepareTemp_5, MeasureTemp_5,
#endif
#if HAS_JOY_ADC_X
PrepareJoy_X, MeasureJoy_X,
#endif
#if HAS_JOY_ADC_Y
PrepareJoy_Y, MeasureJoy_Y,
#endif
#if HAS_JOY_ADC_Z
PrepareJoy_Z, MeasureJoy_Z,
#endif
#if ENABLED(FILAMENT_WIDTH_SENSOR)
Prepare_FILWIDTH,
Measure_FILWIDTH,
Prepare_FILWIDTH, Measure_FILWIDTH,
#endif
#if HAS_ADC_BUTTONS
Prepare_ADC_KEY,
Measure_ADC_KEY,
Prepare_ADC_KEY, Measure_ADC_KEY,
#endif
SensorsReady, // Temperatures ready. Delay the next round of readings to let ADC pins settle.
StartupDelay // Startup, delay initial temp reading a tiny bit so the hardware can settle