Move M907-M910 to cpp
This commit is contained in:
parent
2e89685154
commit
6e0503eab2
9 changed files with 101 additions and 58 deletions
|
@ -58,6 +58,10 @@
|
||||||
#include "module/tool_change.h"
|
#include "module/tool_change.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DIGIPOT_I2C)
|
||||||
|
#include "feature/digipot/digipot.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#if ENABLED(BEZIER_CURVE_SUPPORT)
|
#if ENABLED(BEZIER_CURVE_SUPPORT)
|
||||||
#include "module/planner_bezier.h"
|
#include "module/planner_bezier.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -206,11 +210,6 @@ millis_t max_inactive_time = 0,
|
||||||
* ***************************************************************************
|
* ***************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if ENABLED(DIGIPOT_I2C)
|
|
||||||
extern void digipot_i2c_set_current(uint8_t channel, float current);
|
|
||||||
extern void digipot_i2c_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void setup_killpin() {
|
void setup_killpin() {
|
||||||
#if HAS_KILL
|
#if HAS_KILL
|
||||||
SET_INPUT_PULLUP(KILL_PIN);
|
SET_INPUT_PULLUP(KILL_PIN);
|
||||||
|
@ -359,16 +358,6 @@ void quickstop_stepper() {
|
||||||
SYNC_PLAN_POSITION_KINEMATIC();
|
SYNC_PLAN_POSITION_KINEMATIC();
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "gcode/feature/digipot/M907.h"
|
|
||||||
|
|
||||||
#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
|
||||||
#include "gcode/feature/digipot/M908.h"
|
|
||||||
#if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF
|
|
||||||
#include "gcode/feature/digipot/M909.h"
|
|
||||||
#include "gcode/feature/digipot/M910.h"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAS_MICROSTEPS
|
#if HAS_MICROSTEPS
|
||||||
#include "gcode/control/M350.h"
|
#include "gcode/control/M350.h"
|
||||||
#include "gcode/control/M351.h"
|
#include "gcode/control/M351.h"
|
||||||
|
|
|
@ -20,8 +20,10 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gcode_M909() {
|
#ifndef __DIGIPOT_H__
|
||||||
|
#define __DIGIPOT_H__
|
||||||
|
|
||||||
dac_print_values();
|
void digipot_i2c_set_current(const uint8_t channel, const float current);
|
||||||
|
void digipot_i2c_init();
|
||||||
|
|
||||||
}
|
#endif // __DIGIPOT_H__
|
|
@ -20,11 +20,11 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if ENABLED(DIGIPOT_I2C) && ENABLED(DIGIPOT_MCP4018)
|
#if ENABLED(DIGIPOT_I2C) && ENABLED(DIGIPOT_MCP4018)
|
||||||
|
|
||||||
#include "../core/enum.h"
|
#include "../../core/enum.h"
|
||||||
#include "Stream.h"
|
#include "Stream.h"
|
||||||
#include "utility/twi.h"
|
#include "utility/twi.h"
|
||||||
#include <SlowSoftI2CMaster.h> //https://github.com/stawel/SlowSoftI2CMaster
|
#include <SlowSoftI2CMaster.h> //https://github.com/stawel/SlowSoftI2CMaster
|
||||||
|
@ -88,7 +88,7 @@ static void i2c_send(const uint8_t channel, const byte v) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is for the MCP4018 I2C based digipot
|
// This is for the MCP4018 I2C based digipot
|
||||||
void digipot_i2c_set_current(uint8_t channel, float current) {
|
void digipot_i2c_set_current(const uint8_t channel, const float current) {
|
||||||
i2c_send(channel, current_to_wiper(min(max(current, 0.0f), float(DIGIPOT_A4988_MAX_CURRENT))));
|
i2c_send(channel, current_to_wiper(min(max(current, 0.0f), float(DIGIPOT_A4988_MAX_CURRENT))));
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,13 +20,13 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "../inc/MarlinConfig.h"
|
#include "../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
#if ENABLED(DIGIPOT_I2C) && DISABLED(DIGIPOT_MCP4018)
|
#if ENABLED(DIGIPOT_I2C) && DISABLED(DIGIPOT_MCP4018)
|
||||||
|
|
||||||
#include "Stream.h"
|
#include "Stream.h"
|
||||||
#include "utility/twi.h"
|
#include "utility/twi.h"
|
||||||
#include "Wire.h"
|
#include <Wire.h>
|
||||||
|
|
||||||
// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro
|
// Settings for the I2C based DIGIPOT (MCP4451) on Azteeg X3 Pro
|
||||||
#if MB(5DPRINT)
|
#if MB(5DPRINT)
|
||||||
|
@ -49,15 +49,10 @@ static void i2c_send(const byte addr, const byte a, const byte b) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is for the MCP4451 I2C based digipot
|
// This is for the MCP4451 I2C based digipot
|
||||||
void digipot_i2c_set_current(uint8_t channel, float current) {
|
void digipot_i2c_set_current(const uint8_t channel, const float current) {
|
||||||
current = min((float) max(current, 0.0f), DIGIPOT_I2C_MAX_CURRENT);
|
|
||||||
// these addresses are specific to Azteeg X3 Pro, can be set to others,
|
// these addresses are specific to Azteeg X3 Pro, can be set to others,
|
||||||
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
|
// In this case first digipot is at address A0=0, A1= 0, second one is at A0=0, A1= 1
|
||||||
byte addr = 0x2C; // channel 0-3
|
const byte addr = channel < 4 ? 0x2C : 0x2E; // channel 0-3 vs 4-7
|
||||||
if (channel >= 4) {
|
|
||||||
addr = 0x2E; // channel 4-7
|
|
||||||
channel -= 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initial setup
|
// Initial setup
|
||||||
i2c_send(addr, 0x40, 0xFF);
|
i2c_send(addr, 0x40, 0xFF);
|
||||||
|
@ -65,7 +60,7 @@ void digipot_i2c_set_current(uint8_t channel, float current) {
|
||||||
|
|
||||||
// Set actual wiper value
|
// Set actual wiper value
|
||||||
byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 };
|
byte addresses[4] = { 0x00, 0x10, 0x60, 0x70 };
|
||||||
i2c_send(addr, addresses[channel], current_to_wiper(current));
|
i2c_send(addr, addresses[channel & 0x3], current_to_wiper(min((float) max(current, 0.0f), DIGIPOT_I2C_MAX_CURRENT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void digipot_i2c_init() {
|
void digipot_i2c_init() {
|
|
@ -20,10 +20,24 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "../../gcode.h"
|
||||||
|
|
||||||
|
#if HAS_DIGIPOTSS || HAS_MOTOR_CURRENT_PWM
|
||||||
|
#include "../../../module/stepper.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DIGIPOT_I2C)
|
||||||
|
#include "../../../feature/digipot/digipot.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
#include "../../../feature/dac/stepper_dac.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M907: Set digital trimpot motor current using axis codes X, Y, Z, E, B, S
|
* M907: Set digital trimpot motor current using axis codes X, Y, Z, E, B, S
|
||||||
*/
|
*/
|
||||||
void gcode_M907() {
|
void GcodeSuite::M907() {
|
||||||
#if HAS_DIGIPOTSS
|
#if HAS_DIGIPOTSS
|
||||||
|
|
||||||
LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.digipot_current(i, parser.value_int());
|
LOOP_XYZE(i) if (parser.seen(axis_codes[i])) stepper.digipot_current(i, parser.value_int());
|
|
@ -20,20 +20,36 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "../../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
|
#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
|
||||||
|
#include "../../gcode.h"
|
||||||
|
|
||||||
|
#if HAS_DIGIPOTSS
|
||||||
|
#include "../../../module/stepper.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
#include "../../../feature/dac/stepper_dac.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* M908: Control digital trimpot directly (M908 P<pin> S<current>)
|
* M908: Control digital trimpot directly (M908 P<pin> S<current>)
|
||||||
*/
|
*/
|
||||||
void gcode_M908() {
|
void GcodeSuite::M908() {
|
||||||
#if HAS_DIGIPOTSS
|
#if HAS_DIGIPOTSS
|
||||||
stepper.digitalPotWrite(
|
stepper.digitalPotWrite(
|
||||||
parser.intval('P'),
|
parser.intval('P'),
|
||||||
parser.intval('S')
|
parser.intval('S')
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
#ifdef DAC_STEPPER_CURRENT
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
dac_current_raw(
|
dac_current_raw(
|
||||||
parser.byteval('P', -1),
|
parser.byteval('P', -1),
|
||||||
parser.ushortval('S', 0)
|
parser.ushortval('S', 0)
|
||||||
);
|
);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT
|
36
Marlin/src/gcode/feature/digipot/M909.cpp
Normal file
36
Marlin/src/gcode/feature/digipot/M909.cpp
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
/**
|
||||||
|
* Marlin 3D Printer Firmware
|
||||||
|
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
|
||||||
|
*
|
||||||
|
* Based on Sprinter and grbl.
|
||||||
|
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "../../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
|
||||||
|
#include "../../gcode.h"
|
||||||
|
#include "../../../feature/dac/stepper_dac.h"
|
||||||
|
|
||||||
|
void GcodeSuite::M909() {
|
||||||
|
|
||||||
|
dac_print_values();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // DAC_STEPPER_CURRENT
|
|
@ -20,8 +20,17 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void gcode_M910() {
|
#include "../../../inc/MarlinConfig.h"
|
||||||
|
|
||||||
|
#if ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
|
||||||
|
#include "../../gcode.h"
|
||||||
|
#include "../../../feature/dac/stepper_dac.h"
|
||||||
|
|
||||||
|
void GcodeSuite::M910() {
|
||||||
|
|
||||||
dac_commit_eeprom();
|
dac_commit_eeprom();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif // DAC_STEPPER_CURRENT
|
|
@ -122,10 +122,6 @@ extern void gcode_M165();
|
||||||
extern void gcode_M350();
|
extern void gcode_M350();
|
||||||
extern void gcode_M351();
|
extern void gcode_M351();
|
||||||
extern void gcode_M355();
|
extern void gcode_M355();
|
||||||
extern void gcode_M907();
|
|
||||||
extern void gcode_M908();
|
|
||||||
extern void gcode_M909();
|
|
||||||
extern void gcode_M910();
|
|
||||||
extern void gcode_M999();
|
extern void gcode_M999();
|
||||||
extern void gcode_T(uint8_t tmp_extruder);
|
extern void gcode_T(uint8_t tmp_extruder);
|
||||||
|
|
||||||
|
@ -655,29 +651,15 @@ void GcodeSuite::process_next_command() {
|
||||||
case 900: M900(); break; // M900: Set advance K factor.
|
case 900: M900(); break; // M900: Set advance K factor.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
case 907: // M907: Set digital trimpot motor current using axis codes.
|
case 907: M907(); break; // M907: Set digital trimpot motor current using axis codes.
|
||||||
gcode_M907();
|
|
||||||
break;
|
|
||||||
|
|
||||||
#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
#if HAS_DIGIPOTSS || ENABLED(DAC_STEPPER_CURRENT)
|
||||||
|
case 908: M908(); break; // M908: Control digital trimpot directly.
|
||||||
case 908: // M908: Control digital trimpot directly.
|
|
||||||
gcode_M908();
|
|
||||||
break;
|
|
||||||
|
|
||||||
#if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF
|
#if ENABLED(DAC_STEPPER_CURRENT) // As with Printrbot RevF
|
||||||
|
case 909: M909(); break; // M909: Print digipot/DAC current value
|
||||||
case 909: // M909: Print digipot/DAC current value
|
case 910: M910(); break; // M910: Commit digipot/DAC value to external EEPROM
|
||||||
gcode_M909();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 910: // M910: Commit digipot/DAC value to external EEPROM
|
|
||||||
gcode_M910();
|
|
||||||
break;
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#endif // HAS_DIGIPOTSS || DAC_STEPPER_CURRENT
|
|
||||||
|
|
||||||
#if ENABLED(HAVE_TMC2130)
|
#if ENABLED(HAVE_TMC2130)
|
||||||
case 906: M906(); break; // M906: Set motor current in milliamps using axis codes X, Y, Z, E
|
case 906: M906(); break; // M906: Set motor current in milliamps using axis codes X, Y, Z, E
|
||||||
|
|
Reference in a new issue