|
@ -391,7 +391,7 @@ bool MarlinUI::get_blink() { |
|
|
|
|
|
|
|
|
void _reprapworld_keypad_move(const AxisEnum axis, const int16_t dir) { |
|
|
void _reprapworld_keypad_move(const AxisEnum axis, const int16_t dir) { |
|
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; |
|
|
move_menu_scale = REPRAPWORLD_KEYPAD_MOVE_STEP; |
|
|
encoderPosition = dir; |
|
|
ui.encoderPosition = dir; |
|
|
switch (axis) { |
|
|
switch (axis) { |
|
|
case X_AXIS: lcd_move_x(); break; |
|
|
case X_AXIS: lcd_move_x(); break; |
|
|
case Y_AXIS: lcd_move_y(); break; |
|
|
case Y_AXIS: lcd_move_y(); break; |
|
@ -1149,27 +1149,6 @@ void MarlinUI::update() { |
|
|
|
|
|
|
|
|
#if HAS_ENCODER_ACTION |
|
|
#if HAS_ENCODER_ACTION |
|
|
|
|
|
|
|
|
#if DISABLED(ADC_KEYPAD) && (ENABLED(REPRAPWORLD_KEYPAD) || !HAS_DIGITAL_BUTTONS) |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* Setup Rotary Encoder Bit Values (for two pin encoders to indicate movement) |
|
|
|
|
|
* These values are independent of which pins are used for EN_A and EN_B indications |
|
|
|
|
|
* The rotary encoder part is also independent to the chipset used for the LCD |
|
|
|
|
|
*/ |
|
|
|
|
|
#define GET_SHIFT_BUTTON_STATES(DST) \ |
|
|
|
|
|
uint8_t new_##DST = 0; \ |
|
|
|
|
|
WRITE(SHIFT_LD, LOW); \ |
|
|
|
|
|
WRITE(SHIFT_LD, HIGH); \ |
|
|
|
|
|
for (int8_t i = 0; i < 8; i++) { \ |
|
|
|
|
|
new_##DST >>= 1; \ |
|
|
|
|
|
if (READ(SHIFT_OUT)) SBI(new_##DST, 7); \ |
|
|
|
|
|
WRITE(SHIFT_CLK, HIGH); \ |
|
|
|
|
|
WRITE(SHIFT_CLK, LOW); \ |
|
|
|
|
|
} \ |
|
|
|
|
|
DST = ~new_##DST; //invert it, because a pressed switch produces a logical 0
|
|
|
|
|
|
|
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
/**
|
|
|
* Read encoder buttons from the hardware registers |
|
|
* Read encoder buttons from the hardware registers |
|
|
* Warning: This function is called from interrupt context! |
|
|
* Warning: This function is called from interrupt context! |
|
@ -1266,16 +1245,26 @@ void MarlinUI::update() { |
|
|
} |
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
#if HAS_SHIFT_ENCODER |
|
|
#if HAS_SHIFT_ENCODER |
|
|
|
|
|
/**
|
|
|
GET_SHIFT_BUTTON_STATES(( |
|
|
* Set up Rotary Encoder bit values (for two pin encoders to indicate movement). |
|
|
#if ENABLED(REPRAPWORLD_KEYPAD) |
|
|
* These values are independent of which pins are used for EN_A / EN_B indications. |
|
|
keypad_buttons |
|
|
* The rotary encoder part is also independent of the LCD chipset. |
|
|
#else |
|
|
*/ |
|
|
buttons |
|
|
uint8_t val = 0; |
|
|
#endif |
|
|
WRITE(SHIFT_LD, LOW); |
|
|
)); |
|
|
WRITE(SHIFT_LD, HIGH); |
|
|
|
|
|
LOOP_L_N(i, 8) { |
|
|
|
|
|
val >>= 1; |
|
|
|
|
|
if (READ(SHIFT_OUT)) SBI(val, 7); |
|
|
|
|
|
WRITE(SHIFT_CLK, HIGH); |
|
|
|
|
|
WRITE(SHIFT_CLK, LOW); |
|
|
|
|
|
} |
|
|
|
|
|
#if ENABLED(REPRAPWORLD_KEYPAD) |
|
|
|
|
|
keypad_buttons = ~val; |
|
|
|
|
|
#else |
|
|
|
|
|
buttons = ~val; |
|
|
|
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
} // next_button_update_ms
|
|
|
} // next_button_update_ms
|
|
|