37 Commits
1.0.6 ... 1.1.0

Author SHA1 Message Date
Knutwurst
a7094a923d Bump version to 1.1.0 for next release 2020-07-26 20:28:33 +02:00
Knutwurst
32d498e26c Bugfix: File is selectable, but the print can not start when using the print button. 2020-07-26 20:22:00 +02:00
Knutwurst
88c93102fa Update README.md 2020-07-26 17:01:19 +02:00
Knutwurst
790c5191c8 Fix typo 2020-07-26 16:25:37 +02:00
Knutwurst
813166d705 Disable tft serial debug level by default 2020-07-26 16:19:30 +02:00
Knutwurst
36e2e5be91 Add feature switch for new DGUS TFT in master firmware 2020-07-26 16:16:10 +02:00
Knutwurst
d70a585be8 Add debug define 2020-07-26 13:19:59 +02:00
Knutwurst
3c2d6f7965 Fix long filenames 2020-07-25 12:27:34 +02:00
Knutwurst
cedcbc01a0 Restore USB optimizations 2020-07-25 12:27:04 +02:00
Knutwurst
2dafb2a90d Disable TFT debugging 2020-07-25 12:26:45 +02:00
Knutwurst
946abb5c6f New TFT defines (unused at the moment) 2020-07-25 00:29:48 +02:00
Knutwurst
710ab1b2d3 Fix for Special Menu and loger filenames 2020-07-24 23:47:55 +02:00
Knutwurst
4acb60ed54 Completely differen approach to handle the special menu by creating a fake filesystem. 2020-07-24 19:46:54 +02:00
Knutwurst
e8c0b4a9ef Fix compile error 2020-07-24 09:33:14 +02:00
Knutwurst
77f77a58e8 Remove code duplication 2020-07-24 09:12:21 +02:00
Knutwurst
168e2f8305 Merge commit '79c5924e28dcc43299b23e37e4c29c0d09596e98' into new-tft-support
* commit '79c5924e28dcc43299b23e37e4c29c0d09596e98':
  Update README.md
  Use PROGMEM for TFT string handling
  Update README.md
  Small hardware serial protocol bugfix, which causes crashes inside the tft firmware
  Update README.md to add the slowdown feature.
  Update Codebase to Marlin 2.0.5.4
  Update README.md
  Update README.md to add buymeacoffee link
  Update README.md with new pictures
  Remove unused mes menu item.
  Fix BLTouch menu entry
  Switch to prerelease
  Bump version to 1.0.7 for next release.
  Add BLTouch special menu item.
  Update README.md to add BLTouch feature.
  Add BLTouch Support (can be enabled with #define KNUTWURST_BLTOUCH)
  - Rework of Touchscreen serial protocol handling - Disable Endstop Beep - Bugfix when stopping sd print while heating leads to a endless printing loop - Bump version to 1.0.6 for next release

# Conflicts:
#	Marlin/Configuration.h
#	Marlin/src/lcd/anycubic_touchscreen.cpp
#	Marlin/src/lcd/anycubic_touchscreen.h
2020-07-24 09:00:52 +02:00
Knutwurst
6fff254817 Let's try something else... 2020-07-22 09:39:43 +02:00
Knutwurst
79c5924e28 Update README.md 2020-07-21 17:46:01 +02:00
Knutwurst
a3a47856c2 Use PROGMEM for TFT string handling 2020-07-21 08:25:45 +02:00
Knutwurst
1c3f1e9ada Add original anycubic stuff for tft serial handling including serial flush in case of error. 2020-07-20 21:10:44 +02:00
Oliver Köster
ed18a4a3ff Update README.md 2020-07-20 13:13:21 +02:00
Knutwurst
e0a9012556 Small hardware serial protocol bugfix, which causes crashes inside the tft firmware 2020-07-18 22:50:35 +02:00
Knutwurst
80602aa43f Update README.md to add the slowdown feature. 2020-07-18 10:20:18 +02:00
Knutwurst
620052b991 Update Codebase to Marlin 2.0.5.4 2020-07-17 09:54:52 +02:00
Oliver Köster
8232232235 Update README.md
Threw out that buymeacoffee crap
2020-07-16 09:58:54 +02:00
Knutwurst
159663797e Update README.md to add buymeacoffee link 2020-07-15 16:13:09 +02:00
Knutwurst
6118fe84d8 Update README.md with new pictures 2020-07-15 10:33:50 +02:00
Knutwurst
d174e84f4e Remove unused mes menu item. 2020-07-15 10:10:22 +02:00
Knutwurst
e9515c89f2 Fix BLTouch menu entry 2020-07-14 20:44:18 +02:00
Knutwurst
ca41c9a310 Switch to prerelease 2020-07-14 20:39:21 +02:00
Knutwurst
68338f49ec Bump version to 1.0.7 for next release. 2020-07-14 20:37:55 +02:00
Knutwurst
a7b4298ffd Add BLTouch special menu item. 2020-07-14 20:33:42 +02:00
Knutwurst
68cc5ef87d Update README.md to add BLTouch feature. 2020-07-14 20:12:45 +02:00
Knutwurst
97d6db15cf Add BLTouch Support (can be enabled with #define KNUTWURST_BLTOUCH) 2020-07-14 20:09:41 +02:00
Knutwurst
d88d98d691 New serial protocol handling and .gcode is only appended when it's needed. 2020-07-09 10:37:14 +02:00
Knutwurst
73c98e400b Rework touchscreen handling. 2020-07-08 18:28:07 +02:00
Knutwurst
73e750d697 First working implementation of the special menu for the Mega X touchscreen. 2020-07-07 12:30:43 +02:00
20 changed files with 661 additions and 239 deletions

View File

@@ -38,10 +38,20 @@
*/ */
#define CONFIGURATION_H_VERSION 020005 #define CONFIGURATION_H_VERSION 020005
#define KNUTWURST_MEGAS #define ANYCUBIC_TOUCHSCREEN
#define KNUTWURST_TMC #define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
//#define ANYCUBIC_TFT_DEBUG
//#define POWER_OUTAGE_TEST //#define POWER_OUTAGE_TEST
//#define KNUTWURST_MEGAS
//#define KNUTWURST_TMC
//#define KNUTWURST_DGUS2_TFT
//#define KNUTWURST_BLTOUCH
//#define KNUTWURST_DEBUG
//=========================================================================== //===========================================================================
//============================= Getting Started ============================= //============================= Getting Started =============================
//=========================================================================== //===========================================================================
@@ -76,6 +86,7 @@
// Author info of this build printed to the host during boot and M115 // Author info of this build printed to the host during boot and M115
#define STRING_CONFIG_H_AUTHOR "(knutwurst)" // Who made the changes. #define STRING_CONFIG_H_AUTHOR "(knutwurst)" // Who made the changes.
//#define CUSTOM_VERSION_FILE Version.h // Path from the root directory (no quotes)
/** /**
* *** VENDORS PLEASE READ *** * *** VENDORS PLEASE READ ***
@@ -909,7 +920,9 @@
* - normally-open switches to 5V and D32. * - normally-open switches to 5V and D32.
* *
*/ */
//#define Z_MIN_PROBE_PIN 32 // Pin 32 is the RAMPS default #if ENABLED(KNUTWURST_BLTOUCH)
#define Z_MIN_PROBE_PIN 2 // Pin 32 is the RAMPS default
#endif
/** /**
* Probe Type * Probe Type
@@ -923,7 +936,10 @@
* Use G29 repeatedly, adjusting the Z height at each point with movement commands * Use G29 repeatedly, adjusting the Z height at each point with movement commands
* or (with LCD_BED_LEVELING) the LCD controller. * or (with LCD_BED_LEVELING) the LCD controller.
*/ */
#if DISABLED(KNUTWURST_BLTOUCH)
#define PROBE_MANUALLY #define PROBE_MANUALLY
#endif
//#define MANUAL_PROBE_START_Z 0.2 //#define MANUAL_PROBE_START_Z 0.2
/** /**
@@ -947,7 +963,9 @@
/** /**
* The BLTouch probe uses a Hall effect sensor and emulates a servo. * The BLTouch probe uses a Hall effect sensor and emulates a servo.
*/ */
//#define BLTOUCH #if ENABLED(KNUTWURST_BLTOUCH)
#define BLTOUCH
#endif
/** /**
* Touch-MI Probe by hotends.fr * Touch-MI Probe by hotends.fr
@@ -1019,14 +1037,20 @@
* *
* Specify a Probe position as { X, Y, Z } * Specify a Probe position as { X, Y, Z }
*/ */
#if ENABLED(KNUTWURST_BLTOUCH)
#define NOZZLE_TO_PROBE_OFFSET { 29, -15, 0 }
#endif
#if DISABLED(KNUTWURST_BLTOUCH)
#define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 } #define NOZZLE_TO_PROBE_OFFSET { 10, 10, 0 }
#endif
// Most probes should stay away from the edges of the bed, but // Most probes should stay away from the edges of the bed, but
// with NOZZLE_AS_PROBE this can be negative for a wider probing area. // with NOZZLE_AS_PROBE this can be negative for a wider probing area.
#define MIN_PROBE_EDGE 10 #define MIN_PROBE_EDGE 10
// X and Y axis travel speed (mm/m) between probes // X and Y axis travel speed (mm/m) between probes
#define XY_PROBE_SPEED 8000 #define XY_PROBE_SPEED 3600
// Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2) // Feedrate (mm/m) for the first approach when double-probing (MULTIPLE_PROBING == 2)
#define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z #define Z_PROBE_SPEED_FAST HOMING_FEEDRATE_Z
@@ -1065,14 +1089,23 @@
#define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes #define Z_CLEARANCE_MULTI_PROBE 5 // Z Clearance between multiple probes
//#define Z_AFTER_PROBING 5 // Z position after probing is done //#define Z_AFTER_PROBING 5 // Z position after probing is done
#if ENABLED(KNUTWURST_BLTOUCH)
#define Z_PROBE_LOW_POINT -5 // Farthest distance below the trigger-point to go before stopping
#endif
#if DISABLED(KNUTWURST_BLTOUCH)
#define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping #define Z_PROBE_LOW_POINT -2 // Farthest distance below the trigger-point to go before stopping
#endif
// For M851 give a range for adjusting the Z probe offset // For M851 give a range for adjusting the Z probe offset
#define Z_PROBE_OFFSET_RANGE_MIN -20 #define Z_PROBE_OFFSET_RANGE_MIN -20
#define Z_PROBE_OFFSET_RANGE_MAX 20 #define Z_PROBE_OFFSET_RANGE_MAX 20
// Enable the M48 repeatability test to test probe accuracy // Enable the M48 repeatability test to test probe accuracy
//#define Z_MIN_PROBE_REPEATABILITY_TEST #if ENABLED(KNUTWURST_BLTOUCH)
#define Z_MIN_PROBE_REPEATABILITY_TEST
#endif
// Before deploy/stow pause for user confirmation // Before deploy/stow pause for user confirmation
//#define PAUSE_BEFORE_DEPLOY_STOW //#define PAUSE_BEFORE_DEPLOY_STOW
@@ -1286,11 +1319,21 @@
* leveling in steps so you can manually adjust the Z height at each grid-point. * leveling in steps so you can manually adjust the Z height at each grid-point.
* With an LCD controller the process is guided step-by-step. * With an LCD controller the process is guided step-by-step.
*/ */
#if ENABLED(KNUTWURST_BLTOUCH)
//#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR
#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL
//#define MESH_BED_LEVELING
#endif
#if DISABLED(KNUTWURST_BLTOUCH)
//#define AUTO_BED_LEVELING_3POINT //#define AUTO_BED_LEVELING_3POINT
//#define AUTO_BED_LEVELING_LINEAR //#define AUTO_BED_LEVELING_LINEAR
//#define AUTO_BED_LEVELING_BILINEAR //#define AUTO_BED_LEVELING_BILINEAR
//#define AUTO_BED_LEVELING_UBL //#define AUTO_BED_LEVELING_UBL
#define MESH_BED_LEVELING #define MESH_BED_LEVELING
#endif
/** /**
* Normally G28 leaves leveling disabled on completion. Enable * Normally G28 leaves leveling disabled on completion. Enable
@@ -1303,7 +1346,9 @@
* Turn on with the command 'M111 S32'. * Turn on with the command 'M111 S32'.
* NOTE: Requires a lot of PROGMEM! * NOTE: Requires a lot of PROGMEM!
*/ */
//#define DEBUG_LEVELING_FEATURE #if ENABLED(KNUTWURST_DEBUG)
#define DEBUG_LEVELING_FEATURE
#endif
#if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL) #if ANY(MESH_BED_LEVELING, AUTO_BED_LEVELING_BILINEAR, AUTO_BED_LEVELING_UBL)
// Gradually reduce leveling correction until a set height is reached, // Gradually reduce leveling correction until a set height is reached,
@@ -1335,7 +1380,7 @@
#if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR) #if EITHER(AUTO_BED_LEVELING_LINEAR, AUTO_BED_LEVELING_BILINEAR)
// Set the number of grid points per dimension. // Set the number of grid points per dimension.
#define GRID_MAX_POINTS_X 3 #define GRID_MAX_POINTS_X 5
#define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X #define GRID_MAX_POINTS_Y GRID_MAX_POINTS_X
// Probe along the Y axis, advancing X after each column // Probe along the Y axis, advancing X after each column
@@ -2350,9 +2395,3 @@
// Allow servo angle to be edited and saved to EEPROM // Allow servo angle to be edited and saved to EEPROM
//#define EDITABLE_SERVO_ANGLES //#define EDITABLE_SERVO_ANGLES
#define ANYCUBIC_TOUCHSCREEN
#define ANYCUBIC_FILAMENT_RUNOUT_SENSOR
//#define ANYCUBIC_TFT_DEBUG
//#define KNUTWURST_MEGAS_DEBUG
//#define KNUTWURST_TMC_DEBUG

View File

@@ -1471,7 +1471,9 @@
* *
* Warning: Does not respect endstops! * Warning: Does not respect endstops!
*/ */
//#define BABYSTEPPING #if ENABLED(KNUTWURST_BLTOUCH)
#define BABYSTEPPING
#endif
#if ENABLED(BABYSTEPPING) #if ENABLED(BABYSTEPPING)
//#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR //#define INTEGRATED_BABYSTEPPING // EXPERIMENTAL integration of babystepping into the Stepper ISR
//#define BABYSTEP_WITHOUT_HOMING //#define BABYSTEP_WITHOUT_HOMING
@@ -1520,6 +1522,7 @@
*/ */
#define LIN_ADVANCE #define LIN_ADVANCE
#if ENABLED(LIN_ADVANCE) #if ENABLED(LIN_ADVANCE)
//#define EXTRA_LIN_ADVANCE_K // Enable for second linear advance constants
#define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed #define LIN_ADVANCE_K 0 // Unit: mm compression per 1mm/s extruder speed
//#define LA_DEBUG // If enabled, this will generate debug information output over USB. //#define LA_DEBUG // If enabled, this will generate debug information output over USB.
#endif #endif
@@ -1556,12 +1559,23 @@
* probe points will follow. This prevents any change from causing * probe points will follow. This prevents any change from causing
* the probe to be unable to reach any points. * the probe to be unable to reach any points.
*/ */
#if ENABLED(KNUTWURST_BLTOUCH)
#if PROBE_SELECTED && !IS_KINEMATIC
#define MIN_PROBE_EDGE_LEFT 10
#define MIN_PROBE_EDGE_RIGHT 10
#define MIN_PROBE_EDGE_FRONT 10
#define MIN_PROBE_EDGE_BACK 10
#endif
#endif
#if DISABLED(KNUTWURST_BLTOUCH)
#if PROBE_SELECTED && !IS_KINEMATIC #if PROBE_SELECTED && !IS_KINEMATIC
//#define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_LEFT MIN_PROBE_EDGE
//#define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_RIGHT MIN_PROBE_EDGE
//#define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_FRONT MIN_PROBE_EDGE
//#define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE //#define MIN_PROBE_EDGE_BACK MIN_PROBE_EDGE
#endif #endif
#endif
#if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL) #if EITHER(MESH_BED_LEVELING, AUTO_BED_LEVELING_UBL)
// Override the mesh area if the automatic (max) area is too large // Override the mesh area if the automatic (max) area is too large

View File

@@ -28,7 +28,7 @@
/** /**
* Marlin release version identifier * Marlin release version identifier
*/ */
//#define SHORT_BUILD_VERSION "2.0.5.3" //#define SHORT_BUILD_VERSION "2.0.5.4"
/** /**
* Verbose version identifier which should contain a reference to the location * Verbose version identifier which should contain a reference to the location
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release * here we define this default string as the date where the latest release
* version was tagged. * version was tagged.
*/ */
//#define STRING_DISTRIBUTION_DATE "2020-01-31" //#define STRING_DISTRIBUTION_DATE "2020-07-09"
/** /**
* Defines a generic printer name to be output to the LCD after booting Marlin. * Defines a generic printer name to be output to the LCD after booting Marlin.

View File

@@ -347,14 +347,14 @@ struct XYZval {
FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; } FI XYZval<T> operator* (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x *= rs.x; ls.y *= rs.y; ls.z *= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; } FI XYZval<T> operator/ (const XYZEval<T> &rs) const { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; } FI XYZval<T> operator/ (const XYZEval<T> &rs) { XYZval<T> ls = *this; ls.x /= rs.x; ls.y /= rs.y; ls.z /= rs.z; return ls; }
FI XYZval<T> operator* (const float &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } FI XYZval<T> operator* (const float &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const float &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } FI XYZval<T> operator* (const float &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const int &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } FI XYZval<T> operator* (const int &v) const { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator* (const int &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= z; return ls; } FI XYZval<T> operator* (const int &v) { XYZval<T> ls = *this; ls.x *= v; ls.y *= v; ls.z *= v; return ls; }
FI XYZval<T> operator/ (const float &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } FI XYZval<T> operator/ (const float &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const float &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } FI XYZval<T> operator/ (const float &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const int &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } FI XYZval<T> operator/ (const int &v) const { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator/ (const int &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= z; return ls; } FI XYZval<T> operator/ (const int &v) { XYZval<T> ls = *this; ls.x /= v; ls.y /= v; ls.z /= v; return ls; }
FI XYZval<T> operator>>(const int &v) const { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; } FI XYZval<T> operator>>(const int &v) const { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; }
FI XYZval<T> operator>>(const int &v) { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; } FI XYZval<T> operator>>(const int &v) { XYZval<T> ls = *this; _RS(ls.x); _RS(ls.y); _RS(ls.z); return ls; }
FI XYZval<T> operator<<(const int &v) const { XYZval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); return ls; } FI XYZval<T> operator<<(const int &v) const { XYZval<T> ls = *this; _LS(ls.x); _LS(ls.y); _LS(ls.z); return ls; }

View File

@@ -25,23 +25,26 @@
* Release version. Leave the Marlin version or apply a custom scheme. * Release version. Leave the Marlin version or apply a custom scheme.
*/ */
#ifndef SHORT_BUILD_VERSION #ifndef SHORT_BUILD_VERSION
#define SHORT_BUILD_VERSION "2.0.5.3" #define SHORT_BUILD_VERSION "2.0.5.4"
#endif #endif
/** /**
* Verbose version identifier which should contain a reference to the location * Verbose version identifier containing a unique identifier, such as the
* from where the binary was downloaded or the source code was compiled. * vendor name, download location, GitHub account, etc.
*/ */
#ifndef DETAILED_BUILD_VERSION
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (knutwurst, Github)" #define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " (knutwurst, Github)"
#endif
/** /**
* Defines the version of the Marlin build. Not to be confused with * The STRING_DISTRIBUTION_DATE represents when the binary file was built,
* Marlin's own build number, e.g. 2.0.x. * here we define this default string as the date where the latest release
* version was tagged.
*/ */
#define CUSTOM_BUILD_VERSION "1.0.6" #define CUSTOM_BUILD_VERSION "1.1.0"
#ifndef STRING_DISTRIBUTION_DATE #ifndef STRING_DISTRIBUTION_DATE
#define STRING_DISTRIBUTION_DATE "2020-03-31" #define STRING_DISTRIBUTION_DATE "2020-07-09"
#endif #endif
/** /**
@@ -68,18 +71,21 @@
#define PROTOCOL_VERSION "1.0" #define PROTOCOL_VERSION "1.0"
#endif #endif
/** /**
* Defines a generic printer name to be output to the LCD after booting Marlin. * Define a generic printer name to be output to the LCD after booting Marlin.
*/ */
#ifndef MACHINE_NAME
#define MACHINE_NAME "Knutwurst's Anycubic i3 MEGA" #define MACHINE_NAME "Knutwurst's Anycubic i3 MEGA"
#endif
/** /**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source * Website where users can find Marlin source code for the binary installed on the
* Code which is installed on the device. In most cases —unless the manufacturer * device. Override this if you provide public source code download. (GPLv3 requires
* has a distinct Github fork— the Source Code URL should just be the main * providing the source code to your customers.)
* Marlin repository. */
*/ #ifndef SOURCE_CODE_URL
#define SOURCE_CODE_URL "https://github.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S" #define SOURCE_CODE_URL "https://github.com/knutwurst/Marlin-2-0-x-Anycubic-i3-MEGA-S"
#endif
/** /**
* Default generic printer UUID. * Default generic printer UUID.

View File

@@ -37,6 +37,8 @@
#include "HardwareSerial.h" #include "HardwareSerial.h"
millis_t previous_cmd_ms = 0;
// Define constants and variables for buffering incoming serial data. We're // Define constants and variables for buffering incoming serial data. We're
// using a ring buffer (I think), in which head is the index of the location // using a ring buffer (I think), in which head is the index of the location
// to which to write the next incoming character and tail is the index of the // to which to write the next incoming character and tail is the index of the
@@ -310,6 +312,33 @@ HardwareSerialClass::operator bool()
HardwareSerialClass HardwareSerial(&rx_buffer_ajg, &tx_buffer_ajg, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3); HardwareSerialClass HardwareSerial(&rx_buffer_ajg, &tx_buffer_ajg, &UBRR3H, &UBRR3L, &UCSR3A, &UCSR3B, &UCSR3C, &UDR3, RXEN3, TXEN3, RXCIE3, UDRIE3, U2X3);
#endif #endif
void Newok_to_send() {
previous_cmd_ms = millis();
/*
if (!send_ok[cmd_queue_index_r]) return;
// SERIAL_PROTOCOLPGM(MSG_OK);
#if ENABLED(ADVANCED_OK)
char* p = command_queue[cmd_queue_index_r];
if (*p == 'N') {
SERIAL_PROTOCOL(' ');
SERIAL_ECHO(*p++);
while (NUMERIC_SIGNED(*p))
SERIAL_ECHO(*p++);
}
SERIAL_PROTOCOLPGM(" P"); SERIAL_PROTOCOL(int(BLOCK_BUFFER_SIZE - planner.movesplanned() - 1));
SERIAL_PROTOCOLPGM(" B"); SERIAL_PROTOCOL(BUFSIZE - commands_in_queue);
#endif
SERIAL_EOL;
*/
}
void NEWFlushSerialRequestResend() {
//char command_queue[cmd_queue_index_r][100]="Resend:";
HardwareSerial.flush();
// SERIAL_PROTOCOLPGM(MSG_RESEND);
// SERIAL_PROTOCOLLN(gcode_LastN + 1);
Newok_to_send();
}
#endif #endif
#endif // whole file #endif // whole file

View File

@@ -141,4 +141,7 @@ FORCE_INLINE void HardwareSerialprintPGM(const char *str)
} }
} }
void NEWFlushSerialRequestResend();
void NEWClearToSend();
#endif #endif

View File

@@ -54,11 +54,9 @@ int Temp_Buf_Bed_Temperature = 0;
unsigned char ResumingFlag = 0; unsigned char ResumingFlag = 0;
#endif #endif
#define MAX_PRINTABLE_FILENAME_LEN 21
void setup_OutageTestPin() void setup_OutageTestPin()
{ {
#if defined(POWER_OUTAGE_TEST) #ifdef POWER_OUTAGE_TEST
pinMode(OUTAGETEST_PIN, INPUT); pinMode(OUTAGETEST_PIN, INPUT);
pinMode(OUTAGECON_PIN, OUTPUT); pinMode(OUTAGECON_PIN, OUTPUT);
WRITE(OUTAGECON_PIN, LOW); WRITE(OUTAGECON_PIN, LOW);
@@ -112,6 +110,7 @@ AnycubicTouchscreenClass::AnycubicTouchscreenClass()
void AnycubicTouchscreenClass::Setup() void AnycubicTouchscreenClass::Setup()
{ {
HardwareSerial.begin(115200); HardwareSerial.begin(115200);
HARDWARE_SERIAL_ENTER();
HARDWARE_SERIAL_PROTOCOLPGM("J17"); // J17 Main board reset HARDWARE_SERIAL_PROTOCOLPGM("J17"); // J17 Main board reset
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
delay(10); delay(10);
@@ -122,10 +121,9 @@ void AnycubicTouchscreenClass::Setup()
pinMode(SD_DETECT_PIN, INPUT); pinMode(SD_DETECT_PIN, INPUT);
WRITE(SD_DETECT_PIN, HIGH); WRITE(SD_DETECT_PIN, HIGH);
#endif #endif
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
pinMode(19, INPUT); pinMode(19, INPUT);
WRITE(19, HIGH); WRITE(19, HIGH);
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
if ((READ(19) == true) && FilamentSensorEnabled) if ((READ(19) == true) && FilamentSensorEnabled)
{ {
HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK HARDWARE_SERIAL_PROTOCOLPGM("J15"); //J15 FILAMENT LACK
@@ -136,9 +134,11 @@ void AnycubicTouchscreenClass::Setup()
} }
#endif #endif
currentTouchscreenSelection[0] = 0; currentTouchscreenSelection[0] = '\0';
currentFileOrDirectory[0] = '\0';
SpecialMenu = false; SpecialMenu = false;
FilamentSensorEnabled = true; FilamentSensorEnabled = true;
MyFileNrCnt = 0;
#ifdef STARTUP_CHIME #ifdef STARTUP_CHIME
buzzer.tone(100, 554); buzzer.tone(100, 554);
@@ -438,90 +438,122 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
SERIAL_ECHOPAIR(" DEBUG: Special Menu Selection: ", currentTouchscreenSelection); SERIAL_ECHOPAIR(" DEBUG: Special Menu Selection: ", currentTouchscreenSelection);
SERIAL_EOL(); SERIAL_EOL();
#endif #endif
if (strcasestr(currentTouchscreenSelection, "<Special Menu>") != NULL) if ((strcasestr(currentTouchscreenSelection, SM_SPECIAL_MENU_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_SPECIAL_MENU_S) != NULL))
{ {
SpecialMenu = true; SpecialMenu = true;
} }
else if (strcasestr(currentTouchscreenSelection, "<PID Tune Hotend>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_PID_HOTEND_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_PID_HOTEND_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: PID Tune Hotend"); SERIAL_ECHOLNPGM("Special Menu: PID Tune Hotend");
queue.inject_P(PSTR("M106 S204\nM303 E0 S210 C15 U1")); queue.inject_P(PSTR("M106 S204\nM303 E0 S210 C15 U1"));
} }
else if (strcasestr(currentTouchscreenSelection, "<PID Tune Ultrabase>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_PID_BED_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_PID_BED_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: PID Tune Ultrabase"); SERIAL_ECHOLNPGM("Special Menu: PID Tune Ultrabase");
queue.inject_P(PSTR("M303 E-1 S60 C6 U1")); queue.inject_P(PSTR("M303 E-1 S60 C6 U1"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Save EEPROM>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_SAVE_EEPROM_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_SAVE_EEPROM_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Save EEPROM"); SERIAL_ECHOLNPGM("Special Menu: Save EEPROM");
queue.inject_P(PSTR("M500")); queue.inject_P(PSTR("M500"));
buzzer.tone(105, 1108); buzzer.tone(105, 1108);
buzzer.tone(210, 1661); buzzer.tone(210, 1661);
} }
else if (strcasestr(currentTouchscreenSelection, "<Load FW Defaults>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_LOAD_DEFAULTS_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_LOAD_DEFAULTS_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults"); SERIAL_ECHOLNPGM("Special Menu: Load FW Defaults");
queue.inject_P(PSTR("M502")); queue.inject_P(PSTR("M502"));
buzzer.tone(105, 1661); buzzer.tone(105, 1661);
buzzer.tone(210, 1108); buzzer.tone(210, 1108);
} }
else if (strcasestr(currentTouchscreenSelection, "<Preheat Ultrabase>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_PREHEAT_BED_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_PREHEAT_BED_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Preheat Ultrabase"); SERIAL_ECHOLNPGM("Special Menu: Preheat Ultrabase");
queue.inject_P(PSTR("M140 S60")); queue.inject_P(PSTR("M140 S60"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Start Mesh Leveling>") != NULL)
#if DISABLED(KNUTWURST_BLTOUCH)
else if ((strcasestr(currentTouchscreenSelection, SM_MESH_START_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_MESH_START_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling"); SERIAL_ECHOLNPGM("Special Menu: Start Mesh Leveling");
queue.inject_P(PSTR("G29 S1")); queue.inject_P(PSTR("G29 S1"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Next Mesh Point>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_MESH_NEXT_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_MESH_NEXT_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point"); SERIAL_ECHOLNPGM("Special Menu: Next Mesh Point");
queue.inject_P(PSTR("G29 S2")); queue.inject_P(PSTR("G29 S2"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Up 0.1>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_UP_01_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_UP_01_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1"); SERIAL_ECHOLNPGM("Special Menu: Z Up 0.1");
queue.inject_P(PSTR("G91\nG1 Z+0.1\nG90")); queue.inject_P(PSTR("G91\nG1 Z+0.1\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Down 0.1>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_DN_01_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_DN_01_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1"); SERIAL_ECHOLNPGM("Special Menu: Z Down 0.1");
queue.inject_P(PSTR("G91\nG1 Z-0.1\nG90")); queue.inject_P(PSTR("G91\nG1 Z-0.1\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Up 0.02>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_UP_002_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_UP_002_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02"); SERIAL_ECHOLNPGM("Special Menu: Z Up 0.02");
queue.inject_P(PSTR("G91\nG1 Z+0.02\nG90")); queue.inject_P(PSTR("G91\nG1 Z+0.02\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Down 0.02>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_DN_002_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_DN_002_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02"); SERIAL_ECHOLNPGM("Special Menu: Z Down 0.02");
queue.inject_P(PSTR("G91\nG1 Z-0.02\nG90")); queue.inject_P(PSTR("G91\nG1 Z-0.02\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Up 0.01>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_UP_001_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_UP_001_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Up 0.01"); SERIAL_ECHOLNPGM("Special Menu: Z Up 0.01");
queue.inject_P(PSTR("G91\nG1 Z+0.01\nG90")); queue.enqueue_now_P(PSTR("G91\nG1 Z+0.03\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.02\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Z Down 0.01>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_Z_DN_001_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_Z_DN_001_L) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Z Down 0.01"); SERIAL_ECHOLNPGM("Special Menu: Z Down 0.01");
queue.inject_P(PSTR("G91\nG1 Z-0.01\nG90")); queue.enqueue_now_P(PSTR("G91\nG1 Z+0.02\nG90"));
queue.enqueue_now_P(PSTR("G91\nG1 Z-0.03\nG90"));
} }
else if (strcasestr(currentTouchscreenSelection, "<Fil. Change Pause>") != NULL) #endif
#if ENABLED(KNUTWURST_BLTOUCH)
else if ((strcasestr(currentTouchscreenSelection, SM_BLTOUCH_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_BLTOUCH_S) != NULL))
{
SERIAL_ECHOLNPGM("Special Menu: BLTouch Leveling");
queue.inject_P(PSTR("G28\nG29"));
}
#endif
else if ((strcasestr(currentTouchscreenSelection, SM_PAUSE_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_PAUSE_L) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Fil. Change Pause"); SERIAL_ECHOLNPGM("Special Menu: Fil. Change Pause");
FilamentChangePause(); FilamentChangePause();
} }
else if (strcasestr(currentTouchscreenSelection, "<Fil. Change Resume>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_RESUME_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_RESUME_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Fil. Change Resume"); SERIAL_ECHOLNPGM("Special Menu: Fil. Change Resume");
FilamentChangeResume(); FilamentChangeResume();
} }
else if (strcasestr(currentTouchscreenSelection, "<Disable Fil. Sensor>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_DIS_FILSENS_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_DIS_FILSENS_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Disable Filament Sensor"); SERIAL_ECHOLNPGM("Special Menu: Disable Filament Sensor");
FilamentSensorEnabled = false; FilamentSensorEnabled = false;
@@ -529,94 +561,122 @@ void AnycubicTouchscreenClass::HandleSpecialMenu()
buzzer.tone(105, 1108); buzzer.tone(105, 1108);
buzzer.tone(105, 1108); buzzer.tone(105, 1108);
} }
else if (strcasestr(currentTouchscreenSelection, "<Enable Fil. Sensor>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_EN_FILSENS_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_EN_FILSENS_S) != NULL))
{ {
SERIAL_ECHOLNPGM("Special Menu: Enable Filament Sensor"); SERIAL_ECHOLNPGM("Special Menu: Enable Filament Sensor");
FilamentSensorEnabled = true; FilamentSensorEnabled = true;
buzzer.tone(105, 1108); buzzer.tone(105, 1108);
buzzer.tone(105, 1108); buzzer.tone(105, 1108);
} }
else if (strcasestr(currentTouchscreenSelection, "<Exit>") != NULL) else if ((strcasestr(currentTouchscreenSelection, SM_EXIT_L) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_EXIT_S) != NULL))
{ {
SpecialMenu = false; SpecialMenu = false;
} }
} }
void AnycubicTouchscreenClass::AnycubicTouchscreen()
void AnycubicTouchscreenClass::PrintList()
{ {
if (SpecialMenu) if (SpecialMenu)
{ {
switch (filenumber) switch (filenumber)
{ {
case 0: // Page 1 case 0: // Page 1
HARDWARE_SERIAL_PROTOCOLLN("<Exit>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_S);
HARDWARE_SERIAL_PROTOCOLLN("<Exit>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_L);
HARDWARE_SERIAL_PROTOCOLLN("<Preheat Ultrabase>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PREHEAT_BED_S);
HARDWARE_SERIAL_PROTOCOLLN("<Preheat Ultrabase>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PREHEAT_BED_L);
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Pause>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PAUSE_S);
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Pause>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PAUSE_L);
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Resume>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_RESUME_S);
HARDWARE_SERIAL_PROTOCOLLN("<Fil. Change Resume>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_RESUME_L);
break; break;
#if DISABLED(KNUTWURST_BLTOUCH)
case 4: // Page 2 case 4: // Page 2
HARDWARE_SERIAL_PROTOCOLLN("<Start Mesh Leveling>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_MESH_START_S);
HARDWARE_SERIAL_PROTOCOLLN("<Start Mesh Leveling>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_MESH_START_L);
HARDWARE_SERIAL_PROTOCOLLN("<Next Mesh Point>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_MESH_NEXT_S);
HARDWARE_SERIAL_PROTOCOLLN("<Next Mesh Point>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_MESH_NEXT_L);
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.1>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_01_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.1>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_01_L);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.1>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_01_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.1>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_01_L);
break; break;
case 8: // Page 3 case 8: // Page 3
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.02>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_002_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.02>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_002_L);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.02>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_002_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.02>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_002_L);
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.01>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_001_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Up 0.01>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_UP_001_L);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.01>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_001_S);
HARDWARE_SERIAL_PROTOCOLLN("<Z Down 0.01>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_Z_DN_001_L);
break; break;
case 12: // Page 4 case 12: // Page 4
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Hotend>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_HOTEND_S);
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Hotend>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_HOTEND_L);
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Ultrabase>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_BED_S);
HARDWARE_SERIAL_PROTOCOLLN("<PID Tune Ultrabase>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_BED_L);
HARDWARE_SERIAL_PROTOCOLLN("<Save EEPROM>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SAVE_EEPROM_S);
HARDWARE_SERIAL_PROTOCOLLN("<Save EEPROM>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SAVE_EEPROM_L);
HARDWARE_SERIAL_PROTOCOLLN("<Load FW Defaults>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_LOAD_DEFAULTS_S);
HARDWARE_SERIAL_PROTOCOLLN("<Load FW Defaults>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_LOAD_DEFAULTS_L);
break; break;
case 16: // Page 5 case 16: // Page 5
HARDWARE_SERIAL_PROTOCOLLN("<Disable Fil. Sensor>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIS_FILSENS_S);
HARDWARE_SERIAL_PROTOCOLLN("<Disable Fil. Sensor>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIS_FILSENS_L);
HARDWARE_SERIAL_PROTOCOLLN("<Enable Fil. Sensor>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EN_FILSENS_S);
HARDWARE_SERIAL_PROTOCOLLN("<Enable Fil. Sensor>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EN_FILSENS_L);
HARDWARE_SERIAL_PROTOCOLLN("<Exit>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_S);
HARDWARE_SERIAL_PROTOCOLLN("<Exit>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_L);
break; break;
#endif
#if ENABLED(KNUTWURST_BLTOUCH)
case 4: // Page 2
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_BLTOUCH_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_BLTOUCH_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_HOTEND_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_HOTEND_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_BED_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_PID_BED_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIS_FILSENS_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIS_FILSENS_L);
break;
case 8: // Page 3
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EN_FILSENS_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EN_FILSENS_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SAVE_EEPROM_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SAVE_EEPROM_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_LOAD_DEFAULTS_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_LOAD_DEFAULTS_L);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_S);
HARDWARE_SERIAL_PROTOCOLLNPGM(SM_EXIT_L);
break;
#endif
default: default:
break; break;
} }
} }
#ifdef SDSUPPORT #ifdef SDSUPPORT
else if (card.isMounted()) else if (card.isMounted())
{ {
uint16_t count = filenumber; uint16_t count = filenumber;
uint16_t max_files; uint16_t max_files;
uint16_t dir_files = card.countFilesInWorkDir(); uint16_t MyFileNrCnt = card.countFilesInWorkDir();
// What is this shit? What if there are exactely 3 files+folders? // What is this shit? What if there are exactely 3 files+folders?
// TODO: find something better than this crap. // TODO: find something better than this crap.
if ((dir_files - filenumber) < 4) if ((MyFileNrCnt - filenumber) < 4)
{ {
max_files = dir_files; max_files = MyFileNrCnt;
} }
else else
{ {
@@ -625,21 +685,32 @@ void AnycubicTouchscreenClass::AnycubicTouchscreen()
for (count = filenumber; count <= max_files; count++) for (count = filenumber; count <= max_files; count++)
{ {
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPGM("filenumber: ");
SERIAL_ECHOLN(filenumber);
SERIAL_ECHOPGM("max_files: ");
SERIAL_ECHOLN(max_files);
SERIAL_ECHOPGM("count: ");
SERIAL_ECHOLN(count);
#endif
if (count == 0) // Special Entry if (count == 0) // Special Entry
{ {
if (strcmp(card.getWorkDirName(), "/") == 0) if (strcmp(card.getWorkDirName(), "/") == 0)
{ {
HARDWARE_SERIAL_PROTOCOLLN("<Special Menu>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SPECIAL_MENU_S);
HARDWARE_SERIAL_PROTOCOLLN("<Special Menu>"); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_SPECIAL_MENU_L);
SERIAL_ECHO(count); SERIAL_ECHO(count);
SERIAL_ECHOLNPGM("<Special_Menu>"); SERIAL_ECHO(": ");
SERIAL_ECHOLNPGM(SM_SPECIAL_MENU_L);
} }
else else
{ {
HARDWARE_SERIAL_PROTOCOLLN("/.."); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIR_UP_S);
HARDWARE_SERIAL_PROTOCOLLN("/.."); HARDWARE_SERIAL_PROTOCOLLNPGM(SM_DIR_UP_L);
SERIAL_ECHO(count); SERIAL_ECHO(count);
SERIAL_ECHOLNPGM("/.."); SERIAL_ECHO(": ");
SERIAL_ECHOLNPGM(SM_DIR_UP_L);
} }
} }
else else
@@ -655,34 +726,55 @@ void AnycubicTouchscreenClass::AnycubicTouchscreen()
if(fileNameLen > MAX_PRINTABLE_FILENAME_LEN) if(fileNameLen > MAX_PRINTABLE_FILENAME_LEN)
fileNameLen = MAX_PRINTABLE_FILENAME_LEN; fileNameLen = MAX_PRINTABLE_FILENAME_LEN;
char buffer[fileNameLen]; char outputString[fileNameLen];
for (unsigned char i = 0; i < fileNameLen; i++) for (unsigned char i = 0; i <= fileNameLen; i++)
{ {
buffer[i] = card.longFilename[i]; if(i >= fileNameLen)
if (!isPrintable(buffer[i]))
{ {
buffer[i] = '_'; outputString[i] = ' ';
}
else
{
outputString[i] = card.longFilename[i];
if (!isPrintable(outputString[i]))
{
outputString[i] = '_';
}
} }
} }
buffer[fileNameLen] = '\0';
outputString[fileNameLen] = '\0';
if (card.flag.filenameIsDir) if (card.flag.filenameIsDir)
{ {
#if ENABLED(KNUTWURST_DGUS2_TFT)
HARDWARE_SERIAL_PROTOCOLPGM("/"); HARDWARE_SERIAL_PROTOCOLPGM("/");
HARDWARE_SERIAL_PROTOCOLLN(card.filename); HARDWARE_SERIAL_PROTOCOL(card.filename);
HARDWARE_SERIAL_PROTOCOLLNPGM(".GCO");
HARDWARE_SERIAL_PROTOCOLPGM("/"); HARDWARE_SERIAL_PROTOCOLPGM("/");
HARDWARE_SERIAL_PROTOCOLLN(buffer); HARDWARE_SERIAL_PROTOCOL(outputString);
HARDWARE_SERIAL_PROTOCOLLNPGM(".gcode");
SERIAL_ECHO(count); SERIAL_ECHO(count);
SERIAL_ECHOPGM("/"); SERIAL_ECHOPGM(": /");
SERIAL_ECHOLN(buffer); SERIAL_ECHOLN(outputString);
#else
HARDWARE_SERIAL_PROTOCOL("/");
HARDWARE_SERIAL_PROTOCOLLN(card.filename);
HARDWARE_SERIAL_PROTOCOL("/");
HARDWARE_SERIAL_PROTOCOLLN(outputString);
SERIAL_ECHO(count);
SERIAL_ECHOPGM(": /");
SERIAL_ECHOLN(outputString);
#endif
} }
else else
{ {
HARDWARE_SERIAL_PROTOCOLLN(card.filename); HARDWARE_SERIAL_PROTOCOLLN(card.filename);
HARDWARE_SERIAL_PROTOCOLLN(buffer); HARDWARE_SERIAL_PROTOCOLLN(outputString);
SERIAL_ECHO(count); SERIAL_ECHO(count);
SERIAL_ECHOLN(buffer); SERIAL_ECHOPGM(": ");
SERIAL_ECHOLN(outputString);
} }
} }
} }
@@ -936,36 +1028,88 @@ void AnycubicTouchscreenClass::FilamentRunout()
} }
} }
static boolean TFTcomment_mode = false;
void AnycubicTouchscreenClass::GetCommandFromTFT() void AnycubicTouchscreenClass::GetCommandFromTFT()
{ {
char *starpos = NULL; char *starpos = NULL;
while (HardwareSerial.available() > 0 && TFTbuflen < TFTBUFSIZE) while( HardwareSerial.available() > 0 && TFTbuflen < TFTBUFSIZE)
{ {
serial3_char = HardwareSerial.read(); serial3_char = HardwareSerial.read();
if (serial3_char == '\n' || if(serial3_char == '\n' || serial3_char == '\r' || (serial3_char == ':' && TFTcomment_mode == false) || serial3_count >= (TFT_MAX_CMD_SIZE - 1) )
serial3_char == '\r' ||
serial3_char == ':' ||
serial3_count >= (TFT_MAX_CMD_SIZE - 1))
{ {
if (!serial3_count) if(!serial3_count) { //if empty line
{ //if empty line TFTcomment_mode = false; //for new command
return; return;
} }
TFTcmdbuffer[TFTbufindw][serial3_count] = 0; //terminate string
if(!TFTcomment_mode)
{
TFTcomment_mode = false; //for new command
//TFTfromsd[TFTbufindw] = false;
if(strchr(TFTcmdbuffer[TFTbufindw], 'N') != NULL)
{
/*
TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], 'N');
gcode_N = (strtol(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], NULL, 10));
if(gcode_N != gcode_LastN+1 && (strstr_P(TFTcmdbuffer[TFTbufindw], PSTR("M110")) == NULL) )
{
HARDWARE_SERIAL_ERROR_START;
NEWFlushSerialRequestResend();
serial3_count = 0;
return;
}
*/
if(strchr(TFTcmdbuffer[TFTbufindw], '*') != NULL)
{
byte checksum = 0;
byte count = 0;
while(TFTcmdbuffer[TFTbufindw][count] != '*') checksum = checksum^TFTcmdbuffer[TFTbufindw][count++];
TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], '*');
if( (int)(strtod(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], NULL)) != checksum)
{
HARDWARE_SERIAL_ERROR_START;
NEWFlushSerialRequestResend();
TFTcmdbuffer[TFTbufindw][serial3_count] = 0; //terminate string HARDWARE_SERIAL_ERROR_START;
NEWFlushSerialRequestResend();
if ((strchr(TFTcmdbuffer[TFTbufindw], 'A') != NULL)) serial3_count = 0;
return;
}
//if no errors, continue parsing
}
else
{
HARDWARE_SERIAL_ERROR_START;
NEWFlushSerialRequestResend();
serial3_count = 0;
return;
}
//gcode_LastN = gcode_N;
//if no errors, continue parsing
}
else // if we don't receive 'N' but still see '*'
{
if((strchr(TFTcmdbuffer[TFTbufindw], '*') != NULL))
{
HARDWARE_SERIAL_ERROR_START;
serial3_count = 0;
return;
}
}
if((strchr(TFTcmdbuffer[TFTbufindw], 'A') != NULL))
{ {
int16_t a_command;
TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], 'A'); TFTstrchr_pointer = strchr(TFTcmdbuffer[TFTbufindw], 'A');
a_command = ((int)((strtod(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], NULL)))); switch((int)((strtod(&TFTcmdbuffer[TFTbufindw][TFTstrchr_pointer - TFTcmdbuffer[TFTbufindw] + 1], NULL))))
#ifdef ANYCUBIC_TFT_DEBUG
if ((a_command > 7) && (a_command != 20)) // No debugging of status polls, please!
SERIAL_ECHOLNPAIR("TFT Serial Command: ", TFTcmdbuffer[TFTbufindw]);
#endif
switch (a_command)
{ {
case 0: //A0 GET HOTEND TEMP case 0: //A0 GET HOTEND TEMP
@@ -1072,10 +1216,10 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
{ {
if (CodeSeen('S')) if (CodeSeen('S'))
filenumber = CodeValue(); filenumber = CodeValue();
HARDWARE_SERIAL_PROTOCOLPGM("FN "); // Filelist start HARDWARE_SERIAL_PROTOCOLPGM("FN "); // Filelist start
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
AnycubicTouchscreen(); PrintList();
HARDWARE_SERIAL_PROTOCOLPGM("END"); // Filelist stop HARDWARE_SERIAL_PROTOCOLPGM("END"); // Filelist stop
HARDWARE_SERIAL_ENTER(); HARDWARE_SERIAL_ENTER();
} }
@@ -1142,9 +1286,15 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
if ((TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE)) if ((TFTstate != ANYCUBIC_TFT_STATE_SDOUTAGE))
{ {
starpos = (strchr(TFTstrchr_pointer + 4, '*')); starpos = (strchr(TFTstrchr_pointer + 4, '*'));
if (TFTstrchr_pointer[4] == '/') if (TFTstrchr_pointer[4] == '/')
{ {
strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 5); strcpy(currentTouchscreenSelection, TFTstrchr_pointer + 5);
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection);
SERIAL_EOL();
#endif
} }
else if (TFTstrchr_pointer[4] == '<') else if (TFTstrchr_pointer[4] == '<')
{ {
@@ -1154,6 +1304,10 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
{ {
currentTouchscreenSelection[0] = 0; currentTouchscreenSelection[0] = 0;
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Normal file open path");
#endif
if (starpos != NULL) if (starpos != NULL)
*(starpos - 1) = '\0'; *(starpos - 1) = '\0';
card.openFileRead(TFTstrchr_pointer + 4); card.openFileRead(TFTstrchr_pointer + 4);
@@ -1413,25 +1567,47 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
break; break;
case 26: // A26 refresh SD case 26: // A26 refresh SD
#ifdef SDSUPPORT #ifdef SDSUPPORT
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOPAIR(" TFT Serial Debug: currentTouchscreenSelection: ",currentTouchscreenSelection);
SERIAL_EOL();
#endif
if (currentTouchscreenSelection[0] == 0) if (currentTouchscreenSelection[0] == 0)
{ {
card.mount(); card.mount();
} }
else else
{ {
if ((currentTouchscreenSelection[0] == '.') && (currentTouchscreenSelection[1] == '.')) if ((strcasestr(currentTouchscreenSelection, SM_DIR_UP_S) != NULL)
|| (strcasestr(currentTouchscreenSelection, SM_DIR_UP_L) != NULL))
{ {
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Directory UP (cd ..)");
#endif
card.cdup(); card.cdup();
} }
else else
{ {
if (currentTouchscreenSelection[0] == '<') if (currentTouchscreenSelection[0] == '<')
{ {
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Enter Special Menu");
#endif
HandleSpecialMenu(); HandleSpecialMenu();
} }
else else
{ {
#ifdef ANYCUBIC_TFT_DEBUG
SERIAL_ECHOLNPGM("TFT Serial Debug: Not a menu. Must be a directory!");
#endif
#if ENABLED(KNUTWURST_DGUS2_TFT)
strcpy(currentFileOrDirectory, currentTouchscreenSelection);
int currentFileLen = strlen(currentFileOrDirectory);
currentFileOrDirectory[currentFileLen - 4] = '\0';
card.cd(currentFileOrDirectory);
#else
card.cd(currentTouchscreenSelection); card.cd(currentTouchscreenSelection);
#endif
} }
} }
} }
@@ -1470,19 +1646,22 @@ void AnycubicTouchscreenClass::GetCommandFromTFT()
break; break;
default: default:
break; break;
} }
} }
TFTbufindw = (TFTbufindw + 1) % TFTBUFSIZE; TFTbufindw = (TFTbufindw + 1)%TFTBUFSIZE;
TFTbuflen += 1; TFTbuflen += 1;
serial3_count = 0; }
} serial3_count = 0; //clear buffer
else }
{ else
TFTcmdbuffer[TFTbufindw][serial3_count++] = serial3_char; {
} if(serial3_char == ';') TFTcomment_mode = true;
} if(!TFTcomment_mode) TFTcmdbuffer[TFTbufindw][serial3_count++] = serial3_char;
}
}
} }
void AnycubicTouchscreenClass::CommandScan() void AnycubicTouchscreenClass::CommandScan()
{ {
CheckHeaterError(); CheckHeaterError();

View File

@@ -33,7 +33,8 @@ char *ftostr32(const float &);
#define TFTBUFSIZE 4 #define TFTBUFSIZE 4
#define TFT_MAX_CMD_SIZE 96 #define TFT_MAX_CMD_SIZE 96
#define MSG_MY_VERSION "Knutwurst-1.0.5" #define MSG_MY_VERSION CUSTOM_BUILD_VERSION
#define MAX_PRINTABLE_FILENAME_LEN 30
#define ANYCUBIC_TFT_STATE_IDLE 0 #define ANYCUBIC_TFT_STATE_IDLE 0
#define ANYCUBIC_TFT_STATE_SDPRINT 1 #define ANYCUBIC_TFT_STATE_SDPRINT 1
@@ -43,6 +44,97 @@ char *ftostr32(const float &);
#define ANYCUBIC_TFT_STATE_SDSTOP_REQ 5 #define ANYCUBIC_TFT_STATE_SDSTOP_REQ 5
#define ANYCUBIC_TFT_STATE_SDOUTAGE 99 #define ANYCUBIC_TFT_STATE_SDOUTAGE 99
#if DISABLED(KNUTWURST_DGUS2_TFT)
#define SM_DIR_UP_L "/.."
#define SM_DIR_UP_S ".."
#define SM_SPECIAL_MENU_L "<Special Menu>"
#define SM_SPECIAL_MENU_S "<SPECI~1.GCO"
#define SM_PID_HOTEND_L "<PID Tune Hotend>"
#define SM_PID_HOTEND_S "<PIDTU~1.GCO"
#define SM_PID_BED_L "<PID Tune Ultrabase>"
#define SM_PID_BED_S "<PIDTU~2.GCO"
#define SM_SAVE_EEPROM_L "<Save EEPROM>"
#define SM_SAVE_EEPROM_S "<SAVEE~1.GCO"
#define SM_LOAD_DEFAULTS_L "<Load FW Defaults>"
#define SM_LOAD_DEFAULTS_S "<LOADF~1.GCO"
#define SM_PREHEAT_BED_L "<Preheat Ultrabase>"
#define SM_PREHEAT_BED_S "<PREHE~1.GCO"
#define SM_MESH_START_L "<Start Mesh Leveling>"
#define SM_MESH_START_S "<START~1.GCO"
#define SM_MESH_NEXT_L "<Next Mesh Point>"
#define SM_MESH_NEXT_S "<NEXTM~1.GCO"
#define SM_Z_UP_01_L "<Z Up 0.1>"
#define SM_Z_UP_01_S "<ZUP01~1.GCO"
#define SM_Z_DN_01_L "<Z Down 0.1>"
#define SM_Z_DN_01_S "<ZDOWN~1.GCO"
#define SM_Z_UP_002_L "<Z Up 0.02>"
#define SM_Z_UP_002_S "<ZUP00~1.GCO"
#define SM_Z_DN_002_L "<Z Down 0.02>"
#define SM_Z_DN_002_S "<ZDOWN~2.GCO"
#define SM_Z_UP_001_L "<Z Up 0.01>"
#define SM_Z_UP_001_S "<ZUP00~2.GCO"
#define SM_Z_DN_001_L "<Z Down 0.01>"
#define SM_Z_DN_001_S "<ZDOWN~3.GCO"
#define SM_BLTOUCH_L "<BLTouch Leveling>"
#define SM_BLTOUCH_S "<BLTOU~1.GCO"
#define SM_PAUSE_L "<Fil. Change Pause>"
#define SM_PAUSE_S "<FILCH~2.GCO"
#define SM_RESUME_L "<Fil. Change Resume>"
#define SM_RESUME_S "<FILCH~1.GCO"
#define SM_DIS_FILSENS_L "<Disable Fil. Sensor>"
#define SM_DIS_FILSENS_S "<DISAB~1.GCO"
#define SM_EN_FILSENS_L "<Enable Fil. Sensor>"
#define SM_EN_FILSENS_S "<ENABL~1.GCO"
#define SM_EXIT_L "<Exit>"
#define SM_EXIT_S "<EXIT_~1.GCO"
#endif
#if ENABLED(KNUTWURST_DGUS2_TFT)
#define SM_DIR_UP_L "<<<<<<.gcode"
#define SM_DIR_UP_S "DIR_UP~1.GCO"
#define SM_SPECIAL_MENU_L "<Special Menu>.gcode"
#define SM_SPECIAL_MENU_S "<SPECI~1.GCO"
#define SM_PID_HOTEND_L "<PID Tune Hotend>.gcode"
#define SM_PID_HOTEND_S "<PIDTU~1.GCO"
#define SM_PID_BED_L "<PID Tune Ultrabase>.gcode"
#define SM_PID_BED_S "<PIDTU~2.GCO"
#define SM_SAVE_EEPROM_L "<Save EEPROM>.gcode"
#define SM_SAVE_EEPROM_S "<SAVEE~1.GCO"
#define SM_LOAD_DEFAULTS_L "<Load FW Defaults>.gcode"
#define SM_LOAD_DEFAULTS_S "<LOADF~1.GCO"
#define SM_PREHEAT_BED_L "<Preheat Ultrabase>.gcode"
#define SM_PREHEAT_BED_S "<PREHE~1.GCO"
#define SM_MESH_START_L "<Start Mesh Leveling>.gcode"
#define SM_MESH_START_S "<START~1.GCO"
#define SM_MESH_NEXT_L "<Next Mesh Point>.gcode"
#define SM_MESH_NEXT_S "<NEXTM~1.GCO"
#define SM_Z_UP_01_L "<Z Up 0.1>.gcode"
#define SM_Z_UP_01_S "<ZUP01~1.GCO"
#define SM_Z_DN_01_L "<Z Down 0.1>.gcode"
#define SM_Z_DN_01_S "<ZDOWN~1.GCO"
#define SM_Z_UP_002_L "<Z Up 0.02>.gcode"
#define SM_Z_UP_002_S "<ZUP00~1.GCO"
#define SM_Z_DN_002_L "<Z Down 0.02>.gcode"
#define SM_Z_DN_002_S "<ZDOWN~2.GCO"
#define SM_Z_UP_001_L "<Z Up 0.01>.gcode"
#define SM_Z_UP_001_S "<ZUP00~2.GCO"
#define SM_Z_DN_001_L "<Z Down 0.01>.gcode"
#define SM_Z_DN_001_S "<ZDOWN~3.GCO"
#define SM_BLTOUCH_L "<BLTouch Leveling>.gcode"
#define SM_BLTOUCH_S "<BLTOU~1.GCO"
#define SM_PAUSE_L "<Fil. Change Pause>.gcode"
#define SM_PAUSE_S "<FILCH~2.GCO"
#define SM_RESUME_L "<Fil. Change Resume>.gcode"
#define SM_RESUME_S "<FILCH~1.GCO"
#define SM_DIS_FILSENS_L "<Disable Fil. Sensor>.gcode"
#define SM_DIS_FILSENS_S "<DISAB~1.GCO"
#define SM_EN_FILSENS_L "<Enable Fil. Sensor>.gcode"
#define SM_EN_FILSENS_S "<ENABL~1.GCO"
#define SM_EXIT_L "<Exit>.gcode"
#define SM_EXIT_S "<EXIT_~1.GCO"
#endif
class AnycubicTouchscreenClass class AnycubicTouchscreenClass
{ {
public: public:
@@ -101,7 +193,7 @@ private:
float CodeValue(); float CodeValue();
bool CodeSeen(char); bool CodeSeen(char);
void AnycubicTouchscreen(); void PrintList();
void StartPrint(); void StartPrint();
void PausePrint(); void PausePrint();
void StopPrint(); void StopPrint();
@@ -115,9 +207,12 @@ private:
void ReheatNozzle(); void ReheatNozzle();
void ParkAfterStop(); void ParkAfterStop();
char currentTouchscreenSelection[30]; char currentTouchscreenSelection[64];
char currentFileOrDirectory[64];
uint16_t MyFileNrCnt = 0;
uint8_t SpecialMenu = false; uint8_t SpecialMenu = false;
uint8_t FilamentSensorEnabled = true; uint8_t FilamentSensorEnabled = true;
#if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR) #if ENABLED(ANYCUBIC_FILAMENT_RUNOUT_SENSOR)
char FilamentTestStatus = false; char FilamentTestStatus = false;

View File

@@ -835,7 +835,7 @@ void Temperature::min_temp_error(const heater_ind_t heater) {
#if HOTENDS #if HOTENDS
#if ENABLED(PID_DEBUG) #if ENABLED(PID_DEBUG)
extern bool PID_Debug_Flag; extern bool pid_debug_flag;
#endif #endif
float Temperature::get_pid_output_hotend(const uint8_t E_NAME) { float Temperature::get_pid_output_hotend(const uint8_t E_NAME) {
@@ -918,7 +918,7 @@ void Temperature::min_temp_error(const heater_ind_t heater) {
#endif // PID_OPENLOOP #endif // PID_OPENLOOP
#if ENABLED(PID_DEBUG) #if ENABLED(PID_DEBUG)
if (ee == active_extruder && PID_Debug_Flag) { if (ee == active_extruder && pid_debug_flag) {
SERIAL_ECHO_START(); SERIAL_ECHO_START();
SERIAL_ECHOPAIR(STR_PID_DEBUG, ee, STR_PID_DEBUG_INPUT, temp_hotend[ee].celsius, STR_PID_DEBUG_OUTPUT, pid_output); SERIAL_ECHOPAIR(STR_PID_DEBUG, ee, STR_PID_DEBUG_INPUT, temp_hotend[ee].celsius, STR_PID_DEBUG_OUTPUT, pid_output);
#if DISABLED(PID_OPENLOOP) #if DISABLED(PID_OPENLOOP)

View File

@@ -1,12 +1,15 @@
# Knutwurst's i3 MEGA S Firmware (based on Marlin 2.0.5.3) # Knutwurst's i3 MEGA (S/X) Firmware (based on Marlin 2.0.5.4)
<span style="color: red;">(BITTE GENAU DURCHLESEN! / PLEASE READ CAREFULLY!)</span> <span style="color: red;">(BITTE GENAU DURCHLESEN! / PLEASE READ CAREFULLY!)</span>
### Wenn dir gefällt, was ich mache, kannst du mir hier einen Kaffee spendieren*: [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/oliverkoester)
<sub>*Es muss jetzt keine großzügige Spende sein. Ein paar Cent reichen um mir zu zeigen, wer überhaupt Interesse daran hat und wem die Weiterentwicklung wichtig ist. So bleibt die Motivation da und ich weiß einfach, dass ich nicht für die Tonne programmiere ;)<sub>
## Readme - German (english below) ## Readme - German (english below)
Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin Firmware: Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin Firmware:
* Mesh-Bed Kalibrierung * Mesh-Bed Kalibrierung / Autokalibrierung mit BLTouch (WiP)
* S-Kurven Beschleunigung * S-Kurven Beschleunigung
* "Juction Deviation" statt des klassischen "Jerk" * "Juction Deviation" statt des klassischen "Jerk"
* "Linear Pressure Control v1.5" aktiviert (kann mit M900 konfiguriert werden) * "Linear Pressure Control v1.5" aktiviert (kann mit M900 konfiguriert werden)
@@ -14,12 +17,15 @@ Diese Firmwarekonfiguration aktiviert viele neue erweitere Funktionen der Marlin
* Bilinear Bed Leveling (BBL) * Bilinear Bed Leveling (BBL)
* Manuelles Editieren der Messpunkte * Manuelles Editieren der Messpunkte
* Volle Anycubic Touchscreen Unterstützung * Volle Anycubic Touchscreen Unterstützung
* Spannung vom Bauteillüfter von 8V auf 12V * Unterstützung des neuen Anycubic Touchscreens (DGUS II)
* Bauteilkühler läuft nun auf 100% statt maximal 70%
* Pause & Filamentwechselfunktion * Pause & Filamentwechselfunktion
* Automatische EEPROM Initialisierung * Automatische EEPROM Initialisierung
* Filament Runout Sensor kann im Menü deaktiviert werden * Filament Runout Sensor kann im Menü deaktiviert werden
* Wiederaufnahme des Drucks nach Stromausfall (WiP) * Wiederaufnahme des Drucks nach Stromausfall (WiP)
* Druckbettgröße erweitert auf 220 x 225 x 210 mm * Druckbettgröße erweitert auf 220 x 225 x 210 mm
* Automatischer 'Slowdown', falls Daten nicht schnell genug fließen
Besser im Vergleich zu anderen Firmwares (Bugfixes): Besser im Vergleich zu anderen Firmwares (Bugfixes):
* Aufgeräumtes Special-Menü * Aufgeräumtes Special-Menü
@@ -44,6 +50,14 @@ Bekannte Bugs:
Weil ich bisher keine gesehen habe, die nicht die blöden Bugs enthält, wie z.B. dass sie abstürzt, wenn man Dateien mit Sonderzeichen auf der SD Karte hat. Weil ich bisher keine gesehen habe, die nicht die blöden Bugs enthält, wie z.B. dass sie abstürzt, wenn man Dateien mit Sonderzeichen auf der SD Karte hat.
>Ist es richtig, dass du mehr Wert auf den Druck von SD-Karte legst und andere eher auf USB?
ich lege nicht "mehr Wert auf SD", sondern habe einfach die zahlreichen Bugs dahingehend gefixed. Die kleinen Anpassungen mit dem USB Puffer etc sind sowieso drin. Die sind aber in meinen Augen so uninteressant, dass ich es nicht erwähne, denn das wirklich komplizierte ist es, das proprietäre Display und den Cardreader korrekt anzusteuern. Alles andere ist Pillepalle.
>Was ist dieser "Slowdown"?
Der automatische Slowdown wird aktiv, falls der Drucker nicht schnell genug Daten bekommt. Dann fährt er automatisch mit der Geschwindigkeit auf 50% runter, satt unbehelligt weiterzumachen und dann zu ruckeln und Blobs zu verursachen.
>Wieso ist mein Drucker plötzlich lauter als vorher? >Wieso ist mein Drucker plötzlich lauter als vorher?
Dein Bauteillüfter läuft jetzt mit voller Drehzahl, was er vorher nicht tat. Stelle im Slicer (z.B. Cura) die Geschwindigkeit einfach auf 70% und schon hast du die alte Lautstärke wieder. Diese Modifikation ist notwendig, falls man den Lüfter tauschen möchte und viele Lüfter mit den originalen 8V nicht oder nur unzureichend laufen. Dein Bauteillüfter läuft jetzt mit voller Drehzahl, was er vorher nicht tat. Stelle im Slicer (z.B. Cura) die Geschwindigkeit einfach auf 70% und schon hast du die alte Lautstärke wieder. Diese Modifikation ist notwendig, falls man den Lüfter tauschen möchte und viele Lüfter mit den originalen 8V nicht oder nur unzureichend laufen.
@@ -88,13 +102,25 @@ Bei diesem Mapping ist man eben darauf angewiesen, dass die Funktionen, die man
--- ---
### Bilder ### Bilder - Special Menu
![Manual Mesh Bed Leveling](images/Mesh_Level.jpg) ![SpecialMenu](images/SpecialMenu.jpg)
![Ultra Fine mesh tuning](images/Fine_Tuning.jpg) ### Bilder - Manual Mesh Beld Leveling
![Enable or Disable Filament Runout Sensor](images/Filament_Sensor_on_off.jpg) ![Seite 1](images/MN_Page1.jpg)
![Seite 2](images/MN_Page2.jpg)
![Seite 3](images/MN_Page3.jpg)
![Seite 4](images/MN_Page4.jpg)
### Bilder - BLTouch Beld Leveling
![Seite 1](images/BL_Page1.jpg)
![Seite 2](images/BL_Page2.jpg)
--- ---
@@ -110,16 +136,20 @@ Du kannst die fertigen Binärdateien hier herunterladen: https://github.com/knut
-> `i3_Mega_S_TMC.hex` benutzt du, wenn du sowohl die "S" Version mit Titan-Extruder und TMC Motortreiber verwendest. -> `i3_Mega_S_TMC.hex` benutzt du, wenn du sowohl die "S" Version mit Titan-Extruder und TMC Motortreiber verwendest.
-> `i3_Mega_S_DGUS.hex` wird verwendet, wenn du den neuere "S" Version mit Titan-Extruder und außerdem auch das neue Display in blau/gelb besitzt.
-> `i3_Mega_S_DGUS_TMC.hex` benutzt du, wenn du sowohl die "S" Version mit Titan-Extruder, neuem TFT in blau/gelb und TMC Motortreiber verwendest.
--- ---
### If you like what I do you can buy me a coffee: [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/oliverkoester)
<sub>*It doesn't have to be a generous donation. A few cents are enough to show me who is interested in further development. So the motivation stays and I just know that I am not programming for the bin ;)<sub>
## Readme - English ## Readme - English
This firmware configuration activates many new features of the Marlin firmware: This firmware configuration activates many new features of the Marlin firmware:
* Mesh bed calibration * Mesh bed calibration / Auto calibration with BLTouch (WiP)
* S-curve acceleration * S-curve acceleration
* "Juction Deviation" instead of the classic "Jerk" * "Juction Deviation" instead of the classic "Jerk"
* "Linear Pressure Control v1.5" enabled (can be configured with M900) * "Linear Pressure Control v1.5" enabled (can be configured with M900)
@@ -127,11 +157,14 @@ This firmware configuration activates many new features of the Marlin firmware:
* Bilinear Bed Leveling (BBL) * Bilinear Bed Leveling (BBL)
* Manual editing of the measuring points * Manual editing of the measuring points
* Full Anycubic touchscreen support * Full Anycubic touchscreen support
* Support for the new Anycubic Touchscreen (DGUS II)
* Part cooling fan now runs at 100% instead of 70%
* Pause & filament change function * Pause & filament change function
* Automatic EEPROM initialization * Automatic EEPROM initialization
* Filament Runout Sensor can be deactivated in the menu * Filament Runout Sensor can be deactivated in the menu
* Power outage support * Power outage support
* Print bed size enlarged to 220 x 225 x 210 mm * Print bed size enlarged to 220 x 225 x 210 mm
* Automatic slowdown in if the data is not received fast enough
What's better in coparison to other firmwares (bug fixes): What's better in coparison to other firmwares (bug fixes):
* Tidy special menu * Tidy special menu
@@ -156,6 +189,14 @@ Known bugs:
Because I've never seen one that doesn't contain the stupid bugs like the crashes when you have files with special characters on the SD card. Because I've never seen one that doesn't contain the stupid bugs like the crashes when you have files with special characters on the SD card.
> Is it correct that you put more emphasis on printing from SD card and others more on USB?
I don't put "more emphasis on SD", but just fixed the numerous bugs. The small adjustments with the USB buffer etc are included anyway. But they are so uninteresting in my eyes that I don't mention it, because the really complicated thing is to control the proprietary display and the card reader correctly. Everything else is easy-peasy.
> What is this "slowdown"?
The automatic slowdown is activated if the printer does not receive data quickly enough (e.g. via USB). Then it automatically goes down to 50%. This prevents stuttering and eliminated blobs.
>Why is my printer so much louder than before? >Why is my printer so much louder than before?
Your component fan is now running at full speed, which it did no before. Simply set the speed to 70% in the slicer (e.g. Cura) and you will have the old speed again. This modification is necessary if you want to replace the fan. Many aftermarket fans do not run properly or at all with the original 8V. Your component fan is now running at full speed, which it did no before. Simply set the speed to 70% in the slicer (e.g. Cura) and you will have the old speed again. This modification is necessary if you want to replace the fan. Many aftermarket fans do not run properly or at all with the original 8V.
@@ -200,13 +241,26 @@ With this mapping, you have to rely on the fact that the functions you want to u
--- ---
### Pictures ### Pictures - Special Menu
![Manual Mesh Bed Leveling](images/Mesh_Level.jpg) ![SpecialMenu](images/SpecialMenu.jpg)
![Ultra Fine mesh tuning](images/Fine_Tuning.jpg) ### Pictures - Manual Mesh Beld Leveling
![Page 1](images/MN_Page1.jpg)
![Page 2](images/MN_Page2.jpg)
![Page 3](images/MN_Page3.jpg)
![Page 4](images/MN_Page4.jpg)
### Pictures - BLTouch Beld Leveling
![Page 1](images/BL_Page1.jpg)
![Page 2](images/BL_Page2.jpg)
![Enable or Disable Filament Runout Sensor](images/Filament_Sensor_on_off.jpg)
--- ---
@@ -221,5 +275,8 @@ You can download the precompiled binary files from here: https://github.com/knut
-> `i3_Mega_S.hex` is used if you use the newer "S" version with titan extruder. -> `i3_Mega_S.hex` is used if you use the newer "S" version with titan extruder.
-> `i3_Mega_S_TMC.hex` you use if you use both the "S" version with titan extruder and TMC motor driver. -> `i3_Mega_S_TMC.hex` you use if you use both the "S" version with titan extruder and TMC motor driver.
-> `i3_Mega_S_DGUS.hex` is used if you use the newer "S" version with titan extruder and also the newer DGUS TFT with blue/yellow colors.
-> `i3_Mega_S_DGUS_TMC.hex` you use if you use the newest "S" version with titan extruder and TMC motor driver and also the new blue/yellow TFT.

BIN
images/BL_Page1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

BIN
images/BL_Page2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
images/MN_Page1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
images/MN_Page2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
images/MN_Page3.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
images/MN_Page4.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
images/MenuHome.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
images/SpecialMenu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@@ -25,16 +25,16 @@ default_src_filter = +<src/*> -<src/config> -<src/HAL> +<src/HAL/shared>
extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py extra_scripts = pre:buildroot/share/PlatformIO/scripts/common-cxxflags.py
build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-all-constants build_flags = -fmax-errors=5 -g -D__MARLIN_FIRMWARE__ -fmerge-all-constants
lib_deps = lib_deps =
LiquidCrystal LiquidCrystal@1.5.0
TMCStepper@>=0.6.2,<1.0.0 TMCStepper@~0.7.1
Adafruit NeoPixel Adafruit NeoPixel@1.5.0
U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip U8glib-HAL@0.4.1
Adafruit_MAX31865=https://github.com/adafruit/Adafruit_MAX31865/archive/master.zip Adafruit MAX31865 library@~1.1.0
LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip LiquidTWI2@1.2.7
Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/0.8.0.zip Arduino-L6470@0.8.0
SlowSoftI2CMaster
SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
SailfishRGB_LED=https://github.com/mikeshub/SailfishRGB_LED/archive/master.zip SailfishRGB_LED=https://github.com/mikeshub/SailfishRGB_LED/archive/master.zip
SlowSoftI2CMaster=https://github.com/mikeshub/SlowSoftI2CMaster/archive/master.zip
# Globally defined properties # Globally defined properties
# inherited by all environments # inherited by all environments
@@ -221,10 +221,10 @@ lib_compat_mode = strict
extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py
src_filter = ${common.default_src_filter} +<src/HAL/LPC1768> src_filter = ${common.default_src_filter} +<src/HAL/LPC1768>
lib_deps = Servo lib_deps = Servo
LiquidCrystal LiquidCrystal@1.0.0
U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip U8glib-HAL@0.4.1
TMCStepper@>=0.6.1,<1.0.0 TMCStepper@~0.7.1
Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip
SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
[env:LPC1769] [env:LPC1769]
@@ -239,17 +239,17 @@ lib_compat_mode = strict
extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py extra_scripts = Marlin/src/HAL/LPC1768/upload_extra_script.py
src_filter = ${common.default_src_filter} +<src/HAL/LPC1768> src_filter = ${common.default_src_filter} +<src/HAL/LPC1768>
lib_deps = Servo lib_deps = Servo
LiquidCrystal LiquidCrystal@1.0.0
U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip U8glib-HAL@0.4.1
TMCStepper@>=0.6.1,<1.0.0 TMCStepper@~0.7.1
Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/release.zip Adafruit NeoPixel=https://github.com/p3p/Adafruit_NeoPixel/archive/1.5.0.zip
SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
# #
# STM32F103RC # STM32F103RC
# #
[env:STM32F103RC] [env:STM32F103RC]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -265,7 +265,7 @@ monitor_speed = 115200
# STM32F103RC_fysetc # STM32F103RC_fysetc
# #
[env:STM32F103RC_fysetc] [env:STM32F103RC_fysetc]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
#board_build.core = maple #board_build.core = maple
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
@@ -291,7 +291,7 @@ upload_protocol = serial
# #
[env:STM32F103RC_btt] [env:STM32F103RC_btt]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -306,7 +306,7 @@ lib_ignore = Adafruit NeoPixel, SPI
monitor_speed = 115200 monitor_speed = 115200
[env:STM32F103RC_btt_USB] [env:STM32F103RC_btt_USB]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -321,7 +321,7 @@ lib_ignore = Adafruit NeoPixel, SPI
monitor_speed = 115200 monitor_speed = 115200
[env:STM32F103RC_btt_512K] [env:STM32F103RC_btt_512K]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
board_upload.maximum_size=524288 board_upload.maximum_size=524288
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
@@ -337,7 +337,7 @@ lib_ignore = Adafruit NeoPixel, SPI
monitor_speed = 115200 monitor_speed = 115200
[env:STM32F103RC_btt_512K_USB] [env:STM32F103RC_btt_512K_USB]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
board_upload.maximum_size=524288 board_upload.maximum_size=524288
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
@@ -356,7 +356,7 @@ monitor_speed = 115200
# STM32F103RE # STM32F103RE
# #
[env:STM32F103RE] [env:STM32F103RE]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RE board = genericSTM32F103RE
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -373,7 +373,7 @@ monitor_speed = 115200
# STM32F103RE_btt_USB ......... RET6 (USB mass storage) # STM32F103RE_btt_USB ......... RET6 (USB mass storage)
# #
[env:STM32F103RE_btt] [env:STM32F103RE_btt]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RE board = genericSTM32F103RE
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -389,7 +389,7 @@ upload_protocol = stlink
monitor_speed = 115200 monitor_speed = 115200
[env:STM32F103RE_btt_USB] [env:STM32F103RE_btt_USB]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RE board = genericSTM32F103RE
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -408,7 +408,7 @@ monitor_speed = 115200
# STM32F4 with STM32GENERIC # STM32F4 with STM32GENERIC
# #
[env:STM32F4] [env:STM32F4]
platform = ststm32 platform = ststm32@<6.2.0
board = disco_f407vg board = disco_f407vg
build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F4 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F4 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED
lib_ignore = Adafruit NeoPixel, TMCStepper lib_ignore = Adafruit NeoPixel, TMCStepper
@@ -418,7 +418,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32_F4_F7> -<src/HAL/ST
# STM32F7 with STM32GENERIC # STM32F7 with STM32GENERIC
# #
[env:STM32F7] [env:STM32F7]
platform = ststm32 platform = ststm32@<6.2.0
board = remram_v1 board = remram_v1
build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F7 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED build_flags = ${common.build_flags} -DUSE_STM32GENERIC -DSTM32GENERIC -DSTM32F7 -DMENU_USB_SERIAL -DMENU_SERIAL=SerialUSB -DHAL_IWDG_MODULE_ENABLED
lib_ignore = Adafruit NeoPixel, TMCStepper lib_ignore = Adafruit NeoPixel, TMCStepper
@@ -428,7 +428,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32_F4_F7> -<src/HAL/ST
# ARMED (STM32) # ARMED (STM32)
# #
[env:ARMED] [env:ARMED]
platform = ststm32 platform = ststm32@<6.2.0
board = armed_v1 board = armed_v1
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
-DUSBCON -DUSBD_VID=0x0483 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="ARMED_V1"' -DUSBD_USE_CDC -DUSBCON -DUSBD_VID=0x0483 '-DUSB_MANUFACTURER="Unknown"' '-DUSB_PRODUCT="ARMED_V1"' -DUSBD_USE_CDC
@@ -441,7 +441,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32>
# Geeetech GTM32 (STM32F103VET6) # Geeetech GTM32 (STM32F103VET6)
# #
[env:STM32F103VE_GTM32] [env:STM32F103VE_GTM32]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103VE board = genericSTM32F103VE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++14 -MMD -ffunction-sections -fdata-sections -nostdlib ${common.build_flags} -DDEBUG_LEVEL=DEBUG_NONE -std=gnu++14 -MMD -ffunction-sections -fdata-sections -nostdlib
@@ -456,7 +456,7 @@ upload_protocol = serial
# Longer 3D board in Alfawise U20 (STM32F103VET6) # Longer 3D board in Alfawise U20 (STM32F103VET6)
# #
[env:STM32F103VE_longer] [env:STM32F103VE_longer]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103VE board = genericSTM32F103VE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -USERIAL_USB ${common.build_flags} -std=gnu++14 -USERIAL_USB
@@ -470,7 +470,7 @@ lib_ignore = Adafruit NeoPixel, LiquidTWI2, SPI
# MKS Robin Mini (STM32F103VET6) # MKS Robin Mini (STM32F103VET6)
# #
[env:mks_robin_mini] [env:mks_robin_mini]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103VE board = genericSTM32F103VE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 ${common.build_flags} -std=gnu++14
@@ -483,7 +483,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# MKS Robin Nano (STM32F103VET6) # MKS Robin Nano (STM32F103VET6)
# #
[env:mks_robin_nano] [env:mks_robin_nano]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103VE board = genericSTM32F103VE
platform_packages = tool-stm32duino platform_packages = tool-stm32duino
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -499,7 +499,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# MKS Robin (STM32F103ZET6) # MKS Robin (STM32F103ZET6)
# #
[env:mks_robin] [env:mks_robin]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103ZE board = genericSTM32F103ZE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_XL_DENSITY ${common.build_flags} -std=gnu++14 -DHAVE_SW_SERIAL -DSS_TIMER=4 -DSTM32_XL_DENSITY
@@ -514,7 +514,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# MKS Robin Pro (STM32F103ZET6) # MKS Robin Pro (STM32F103ZET6)
# #
[env:mks_robin_pro] [env:mks_robin_pro]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103ZE board = genericSTM32F103ZE
extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_pro.py extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_pro.py
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -528,7 +528,7 @@ lib_ignore = Adafruit NeoPixel, SPI, TMCStepper
# MKS Robin Lite/Lite2 (STM32F103RCT6) # MKS Robin Lite/Lite2 (STM32F103RCT6)
# #
[env:mks_robin_lite] [env:mks_robin_lite]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -std=gnu++14 ${common.build_flags} -std=gnu++14
@@ -541,7 +541,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# MKS ROBIN LITE3 (STM32F103RCT6) # MKS ROBIN LITE3 (STM32F103RCT6)
# #
[env:mks_robin_lite3] [env:mks_robin_lite3]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103RC board = genericSTM32F103RC
extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_lite3.py extra_scripts = buildroot/share/PlatformIO/scripts/mks_robin_lite3.py
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
@@ -555,7 +555,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# JGAurora A5S A1 (STM32F103ZET6) # JGAurora A5S A1 (STM32F103ZET6)
# #
[env:jgaurora_a5s_a1] [env:jgaurora_a5s_a1]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103ZE board = genericSTM32F103ZE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY
@@ -568,7 +568,7 @@ lib_ignore = Adafruit NeoPixel, SPI
# Malyan M200 (STM32F103CB) # Malyan M200 (STM32F103CB)
# #
[env:STM32F103CB_malyan] [env:STM32F103CB_malyan]
platform = ststm32 platform = ststm32@<6.2.0
board = malyanM200 board = malyanM200
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py -DMCU_STM32F103CB -D __STM32F1__=1 -std=c++1y -D MOTHERBOARD="BOARD_MALYAN_M200" -DSERIAL_USB -ffunction-sections -fdata-sections -Wl,--gc-sections
-DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__ -DDEBUG_LEVEL=0 -D__MARLIN_FIRMWARE__
@@ -579,7 +579,7 @@ lib_ignore = Adafruit NeoPixel, LiquidCrystal, LiquidTWI2, TMCStepper, U8glib-H
# Chitu boards like Tronxy X5s (STM32F103ZET6) # Chitu boards like Tronxy X5s (STM32F103ZET6)
# #
[env:chitu_f103] [env:chitu_f103]
platform = ststm32 platform = ststm32@<6.2.0
board = genericSTM32F103ZE board = genericSTM32F103ZE
build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py build_flags = !python Marlin/src/HAL/STM32F1/build_flags.py
${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY ${common.build_flags} -DSTM32F1xx -std=gnu++14 -DSTM32_XL_DENSITY
@@ -593,7 +593,7 @@ lib_ignore = Adafruit NeoPixel
# 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html # 'STEVAL-3DP001V1' STM32F401VE board - https://www.st.com/en/evaluation-tools/steval-3dp001v1.html
# #
[env:STM32F401VE_STEVAL] [env:STM32F401VE_STEVAL]
platform = ststm32 platform = ststm32@<6.2.0
board = STEVAL_STM32F401VE board = STEVAL_STM32F401VE
platform_packages = framework-arduinoststm32@>=3.107,<4 platform_packages = framework-arduinoststm32@>=3.107,<4
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
@@ -611,7 +611,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32>
# FLYF407ZG # FLYF407ZG
# #
[env:FLYF407ZG] [env:FLYF407ZG]
platform = ststm32 platform = ststm32@<6.2.0
board = FLYF407ZG board = FLYF407ZG
platform_packages = framework-arduinoststm32@>=3.107,<4 platform_packages = framework-arduinoststm32@>=3.107,<4
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
@@ -628,7 +628,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32>
# FYSETC S6 (STM32F446VET6 ARM Cortex-M4) # FYSETC S6 (STM32F446VET6 ARM Cortex-M4)
# #
[env:FYSETC_S6] [env:FYSETC_S6]
platform = ststm32 platform = ststm32@<6.2.0
board = fysetc_s6 board = fysetc_s6
platform_packages = platform_packages =
tool-stm32duino tool-stm32duino
@@ -651,7 +651,7 @@ upload_protocol = serial
# Shield - https://github.com/jmz52/Hardware # Shield - https://github.com/jmz52/Hardware
# #
[env:STM32F407VE_black] [env:STM32F407VE_black]
platform = ststm32 platform = ststm32@<6.2.0
board = blackSTM32F407VET6 board = blackSTM32F407VET6
platform_packages = framework-arduinoststm32@>=3.107,<4 platform_packages = framework-arduinoststm32@>=3.107,<4
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
@@ -667,7 +667,7 @@ src_filter = ${common.default_src_filter} +<src/HAL/STM32>
# BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4) # BigTreeTech SKR Pro (STM32F407ZGT6 ARM Cortex-M4)
# #
[env:BIGTREE_SKR_PRO] [env:BIGTREE_SKR_PRO]
platform = ststm32 platform = ststm32@<6.2.0
board = BigTree_SKR_Pro board = BigTree_SKR_Pro
platform_packages = framework-arduinoststm32@>=3.107,<4 platform_packages = framework-arduinoststm32@>=3.107,<4
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
@@ -687,7 +687,7 @@ debug_init_break =
# Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4) # Bigtreetech GTR V1.0 (STM32F407IGT6 ARM Cortex-M4)
# #
[env:BIGTREE_GTR_V1_0] [env:BIGTREE_GTR_V1_0]
platform = ststm32@>=5.7.0 platform = ststm32@>=5.7.0,<6.2.0
framework = arduino framework = arduino
platform_packages = framework-arduinoststm32@>=3.107,<4 platform_packages = framework-arduinoststm32@>=3.107,<4
board = BigTree_SKR_Pro board = BigTree_SKR_Pro
@@ -697,12 +697,12 @@ build_flags = ${common.build_flags}
-DTARGET_STM32F4 -DSTM32F407IX -DVECT_TAB_OFFSET=0x8000 -DTARGET_STM32F4 -DSTM32F407IX -DVECT_TAB_OFFSET=0x8000
-IMarlin/src/HAL/STM32 -IMarlin/src/HAL/STM32
lib_deps = lib_deps =
U8glib-HAL=https://github.com/MarlinFirmware/U8glib-HAL/archive/bugfix.zip U8glib-HAL@0.4.1
LiquidCrystal LiquidCrystal@1.5.0
TMCStepper@>=0.5.2,<1.0.0 TMCStepper@~0.7.1
Adafruit NeoPixel Adafruit NeoPixel@1.5.0
LiquidTWI2=https://github.com/lincomatic/LiquidTWI2/archive/master.zip LiquidTWI2@1.2.7
Arduino-L6470=https://github.com/ameyer/Arduino-L6470/archive/0.7.0.zip Arduino-L6470@0.8.0
lib_ignore = SoftwareSerial, SoftwareSerialM lib_ignore = SoftwareSerial, SoftwareSerialM
src_filter = ${common.default_src_filter} +<src/HAL/STM32> src_filter = ${common.default_src_filter} +<src/HAL/STM32>
monitor_speed = 250000 monitor_speed = 250000
@@ -799,7 +799,7 @@ debug_tool = jlink
# RUMBA32 # RUMBA32
# #
[env:rumba32_f446ve] [env:rumba32_f446ve]
platform = ststm32 platform = ststm32@<6.2.0
board = rumba32_f446ve board = rumba32_f446ve
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
-DSTM32F4xx -DSTM32F4xx
@@ -825,7 +825,7 @@ upload_protocol = dfu
# MKS RUMBA32 (adds TMC2208/2209 UART interface and AUX-1) # MKS RUMBA32 (adds TMC2208/2209 UART interface and AUX-1)
# #
[env:rumba32_mks] [env:rumba32_mks]
platform = ststm32 platform = ststm32@<6.2.0
board = rumba32_f446ve board = rumba32_f446ve
build_flags = ${common.build_flags} build_flags = ${common.build_flags}
-DSTM32F4xx -DARDUINO_RUMBA32_F446VE -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"RUMBA32_F446VE\"" -DSTM32F4xx -DARDUINO_RUMBA32_F446VE -DARDUINO_ARCH_STM32 "-DBOARD_NAME=\"RUMBA32_F446VE\""