Compare commits

...

118 Commits

Author SHA1 Message Date
InsanityAutomation e8167a1629 Update Configuration.h 2024-02-26 14:26:27 -05:00
InsanityAutomation 4b943a0b04 tweaks 2024-01-30 10:27:36 -05:00
InsanityAutomation d2dd3b2461 Fix icons 2024-01-29 14:57:11 -05:00
InsanityAutomation 3fba42bb22 Fix landscape / portrait 2024-01-28 18:18:06 -05:00
InsanityAutomation e3bf7c4b30 UpdateBinaries 2024-01-28 13:57:17 -05:00
InsanityAutomation ce07585a2d Remove Stale Binaries 2024-01-27 21:08:09 -05:00
InsanityAutomation 890be588df Update platformio.ini 2024-01-27 18:30:07 -05:00
InsanityAutomation 856dcc7fe8 Update Version.h 2024-01-27 11:48:29 -05:00
InsanityAutomation b9d20cb3b3 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2024-01-27 11:45:36 -05:00
InsanityAutomation 1daa885dbc More g30 2023-09-28 09:16:58 -04:00
InsanityAutomation b436a19f23 Update Creality_DWIN.cpp 2023-09-24 22:14:08 -04:00
InsanityAutomation 97179ddad3 tweaks to probe tramming 2023-09-24 21:51:22 -04:00
InsanityAutomation 57815d2d65 Enable tramming with probe 2023-09-17 17:12:09 -04:00
InsanityAutomation 67aa28f0c1 Allow bed tramming with probe to automatically calculate points by probe limits 2023-09-17 17:11:39 -04:00
InsanityAutomation b5d7f3ef12 Runout sensor fixes 2023-08-27 13:17:01 -04:00
InsanityAutomation e0ff391eba Build fixes for stm32 2023-08-26 14:31:18 -04:00
InsanityAutomation 8d44b6c427 Merge branch 'Tenlog_DWIN' into CrealityDwin2.0_Bleeding 2023-08-24 11:11:07 -04:00
InsanityAutomation 97e0ed7393 fix touch ui for stm32 2023-05-31 23:32:39 -04:00
InsanityAutomation 7862493991 Build tweaks 2023-05-31 19:14:39 -04:00
InsanityAutomation 63e91dc0af Purge old / tenlog imported 2023-05-30 11:16:24 -04:00
InsanityAutomation e713d5ee2b Version bump and notes 2023-05-29 15:17:44 -04:00
InsanityAutomation 52f1474281 More dwin serial throttling 2023-05-29 13:28:31 -04:00
InsanityAutomation 911093a28c Restore Ver file, remove broken sanity check 2023-05-19 18:17:57 -04:00
InsanityAutomation b05b35ece9 Restore files killed by branch merge 2023-05-14 13:17:03 -04:00
InsanityAutomation 0fa6605b49 Merge branch 'Tenlog_DWIN' into CrealityDwin2.0_Bleeding 2023-05-13 14:21:47 -04:00
InsanityAutomation b007343710 purge stale binaries 2023-05-13 14:19:41 -04:00
InsanityAutomation 0766fcd082 Update CombinedLandscapeDwin_TM3D_V8.7z 2023-03-08 17:44:55 -05:00
InsanityAutomation f2060b5c34 Add V8 screen files 2023-03-08 17:38:15 -05:00
InsanityAutomation 056db1c3ae update binaries, couple small fixes 2023-03-02 20:43:57 -05:00
InsanityAutomation 57e4fe6381 Add debug message, reduce ram usage to avoid comm corruption from stack 2023-03-01 22:25:01 -05:00
InsanityAutomation 6531db383c Update Configuration.h 2023-02-28 18:31:31 -05:00
InsanityAutomation 278c49e9de Merge branch 'CrealityDwin2.0_Bleeding' of https://github.com/InsanityAutomation/Marlin into CrealityDwin2.0_Bleeding 2023-02-19 19:17:49 -05:00
InsanityAutomation 0ed4727767 Merge pull request #295 from bob-anthony/DGUS_DISPLAY_FIXES
Fix compiling errors for DGUS displays
2023-02-19 18:30:31 -05:00
Tom Brazier fcbc6a929c MIN_ISR_LOOP_CYCLES already includes ISR_[XY]_STEPPER_CYCLES and more, it should not be counted 2023-02-19 18:01:46 -05:00
Tom Brazier 3c9b927291 Don't include MIN_ISR_LOOP_CYCLES in calculation for ISR_SHAPING_LOOP_CYCLES if input shaping is disabled 2023-02-19 18:01:44 -05:00
Tom Brazier aa3cd470da Also implement 2 cycle saving in MultiU24X32toH16() 2023-02-19 17:58:41 -05:00
Tom Brazier 004fd179d1 Fixed rounding of fractional part of multiplication results (a bug inherited from Sprinter). Cleaned up comments and function naming. Minor optimisation of MultiU8X16toH16(). 2023-02-19 17:58:39 -05:00
InsanityAutomation eab01ba183 circle around as upstream never merged 2023-02-19 17:54:52 -05:00
InsanityAutomation 42bd6e74a7 Slightly more robust pause resume and faster serial event handling 2023-02-19 17:54:51 -05:00
Bob Anthony 3a1f3a4ba3 Remove junk files 2023-02-18 04:01:15 -06:00
Bob Anthony 9697434981 Fix compiling errors for the dgus display
Handler code section needed for any leveling not just probe.

Fix for renamed variables upstream.

Added default to switch statement to resolve compile warning.
2023-02-18 03:45:50 -06:00
Bob Anthony 6dec98e54c Merge pull request #4 from InsanityAutomation/CrealityDwin2.0_Bleeding
Merge bleeding branch changes
2023-02-18 03:12:38 -06:00
Bob Anthony 39201418ce Merge remote-tracking branch 'origin/CR-X-Config-with-Purge-Bucket' into CrealityDwin_2.0 2023-02-18 02:37:36 -06:00
InsanityAutomation a1c5735d6f Update README.md 2023-02-17 17:24:44 -05:00
InsanityAutomation b02badf25e Remove obsolete bins from devel repo 2023-02-17 17:06:25 -05:00
InsanityAutomation 3b7871005a Update Creality_DWIN.cpp 2023-02-10 16:26:46 -05:00
InsanityAutomation 0bd0b3df80 tweak readme, remove conflicting sanity check 2023-02-05 14:17:38 -05:00
InsanityAutomation 549619995f Update stm32f1-maple.ini 2023-02-05 13:55:27 -05:00
InsanityAutomation 6edc02b276 add 433 binaries 2022-06-07 22:24:29 -04:00
InsanityAutomation 1a060a291a add 422 binaries 2022-06-07 22:24:11 -04:00
InsanityAutomation 82c0594e38 Add 422 board Envs 2022-06-07 09:39:43 -04:00
InsanityAutomation 90e5130954 Update dwin.cpp 2022-06-02 10:33:57 -04:00
InsanityAutomation 6c828d5f61 Fix typo, replace bins 2022-05-17 22:32:01 -04:00
InsanityAutomation 237ad14388 Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2022-05-16 17:45:12 -04:00
InsanityAutomation 698dc6af06 Update touchscreen files 2022-05-16 17:22:39 -04:00
InsanityAutomation 7003f23735 Updated binaries 2022-05-16 10:36:54 -04:00
InsanityAutomation 01e2a659d7 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-05-14 20:18:15 -04:00
InsanityAutomation 6465255da2 Remove stale bins 2022-05-14 20:13:51 -04:00
InsanityAutomation 33e1bc6fab Update Creality_DWIN.cpp 2022-05-01 14:53:49 -04:00
InsanityAutomation ad337ec4cc More pause tweaks 2022-05-01 14:53:49 -04:00
InsanityAutomation eb954faa49 Pause improvements 2022-05-01 14:53:48 -04:00
InsanityAutomation 7bf0505ce6 Update Creality_DWIN.cpp 2022-05-01 14:53:48 -04:00
InsanityAutomation a92eb021ff advanced pause improvements 2022-05-01 14:53:48 -04:00
InsanityAutomation d1f86d2440 binary update 2022-04-27 21:07:29 -04:00
InsanityAutomation e73727acf6 Update Configuration.h 2022-04-27 18:39:14 -04:00
InsanityAutomation cee8d4b7f4 Set default runout mode to lerge and sprite to dd retraction 2022-04-27 18:39:14 -04:00
InsanityAutomation 51883dacbd Remove runout bins as all now have runout 2022-04-26 22:58:16 -04:00
InsanityAutomation 5eff2069ee Update dgus_creality_lcd.cpp 2022-04-26 22:57:56 -04:00
InsanityAutomation 7ee1a1f682 update binaries 2022-04-26 22:57:49 -04:00
InsanityAutomation e29d7f1da3 Add binary relocate function to avoid random pio purging 2022-04-26 14:18:43 -04:00
InsanityAutomation 0793144ad6 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-04-23 10:52:46 -04:00
InsanityAutomation e8cb39a454 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-04-22 10:25:24 -04:00
InsanityAutomation 43e90110c6 Update for extui recent changes 2022-04-15 15:44:15 -04:00
InsanityAutomation 8fd2a063d5 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-04-15 15:34:55 -04:00
InsanityAutomation 3166c366dd NextGen touchscreen fixes 2022-03-27 13:27:31 -04:00
InsanityAutomation df2c9361cf Fix non probe z offset adjustment 2022-03-25 14:05:35 -04:00
InsanityAutomation 912939af2a Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-03-25 11:31:36 -04:00
InsanityAutomation 6fec3cf034 Update Configuration.h 2022-03-06 15:55:55 -05:00
InsanityAutomation 0f47b30c7a allows z offset to work for babystep total on machines without probe 2022-03-06 15:46:28 -05:00
InsanityAutomation 8987d3d64f Update screen files 2022-03-02 13:20:07 -05:00
InsanityAutomation a1d09c7997 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-03-02 13:11:24 -05:00
InsanityAutomation 71d530e594 Create firmware_Ender7_BLT_DW7.4.5.bin.zip 2022-02-26 18:43:58 -05:00
InsanityAutomation 6db534c997 Add CR5Pro 2022-02-26 16:02:18 -05:00
InsanityAutomation 0821c72d39 Add CR5Pro 2022-02-26 16:00:44 -05:00
BDScripting 5c59a3d7c7 CR-X Configuration for purge bucket 2022-02-26 09:51:19 -06:00
InsanityAutomation a9e7df859c Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2022-02-25 10:31:00 -05:00
InsanityAutomation 2d651fc785 Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2022-02-23 11:23:12 -05:00
InsanityAutomation b1496f9a8c Max Binaries 2022-02-20 18:39:33 -05:00
InsanityAutomation 35f4f5a311 Update platformio.ini 2022-02-20 17:58:11 -05:00
InsanityAutomation eb5498fdb7 Additional configs 2022-02-20 17:50:23 -05:00
InsanityAutomation 88ef960047 Add binaries 2022-02-20 17:31:35 -05:00
InsanityAutomation 62fe2b6f07 Remove stale binaries 2022-02-19 21:11:04 -05:00
InsanityAutomation acc0d53333 Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-02-19 19:21:51 -05:00
InsanityAutomation 2ba44dc3cb Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-02-18 15:15:34 -05:00
InsanityAutomation f6d9faaa15 Update platformio.ini 2022-02-07 14:05:59 -05:00
InsanityAutomation eb3ed7266b Update platformio.ini 2022-02-06 17:39:54 -05:00
InsanityAutomation e0066ef96c Platform updates 2022-02-06 13:47:36 -05:00
InsanityAutomation 0ad5b685ab Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2022-02-06 12:34:47 -05:00
InsanityAutomation 9e7e7a0f3a Update Configuration.h 2022-01-12 08:47:27 -05:00
InsanityAutomation b848e5b4b2 move to maple again 2022-01-08 16:17:30 -05:00
InsanityAutomation 471bd44380 Add CR10Smart, CR6 fix 2022-01-08 16:16:40 -05:00
InsanityAutomation 7f5f9724de Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-11-26 13:31:02 -05:00
InsanityAutomation c80165565c Update README.md 2021-11-26 13:29:53 -05:00
InsanityAutomation 306207704a Update to 7.4.4 2021-11-22 10:30:29 -05:00
InsanityAutomation b95f7dc09b Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2021-11-21 15:45:12 -05:00
InsanityAutomation b589cac5ff Merge branch 'CrealityDwin2.0_Bleeding' into CrealityDwin_2.0 2021-10-23 08:58:41 -04:00
InsanityAutomation 6825c34e04 Update README.md 2021-09-28 09:26:54 -04:00
InsanityAutomation ae13b3b8d7 Fix E3V2 M600 resume 2021-09-28 09:25:13 -04:00
InsanityAutomation b998b0f46e Add binaries, readme 2021-09-28 09:24:59 -04:00
InsanityAutomation 8be3293d79 Update platformio.ini 2021-09-27 12:59:12 -04:00
InsanityAutomation 73f9f95645 Update platformio.ini 2021-09-15 22:41:44 -04:00
InsanityAutomation 2201136141 Catchup debug messages 2021-09-15 22:41:39 -04:00
InsanityAutomation f17f5ad29d Merge branch 'CrealityDwin2.0_Bleeding' into F1rstLayer_Touchscreens 2021-09-15 08:08:45 -04:00
InsanityAutomation a1daf240bc Update Version.h 2021-08-25 09:45:44 -04:00
InsanityAutomation a23a265312 Update Configuration.h 2021-08-22 23:43:45 -04:00
InsanityAutomation ddf7a2aa00 Resolve probe-less compile errors 2021-08-22 22:10:00 -04:00
InsanityAutomation 9dd779edb2 Add F1rstLayer Envs 2021-08-22 21:28:31 -04:00
InsanityAutomation 3801d831d4 Minor tweaks 2021-07-16 12:23:55 -04:00
271 changed files with 6765 additions and 1012 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1806 -359
View File
File diff suppressed because it is too large Load Diff
+387 -246
View File
File diff suppressed because it is too large Load Diff
+142 -36
View File
@@ -28,55 +28,103 @@
/**
* Marlin release version identifier
*/
#define SHORT_BUILD_VERSION "2.1.2_Beta3"
#define SHORT_BUILD_VERSION "DW7.4.9"
/**
* Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled.
*/
#if(ENABLED(DriverA4988))
#define VerChar1 "A"
#elif(ENABLED(Driver2209))
#define VerChar1 "T"
#if(ENABLED(MachineMini))
#define VerChar1 "M"
#elif(ENABLED(MachineEnder2))
#define VerChar1 "E2"
#elif(ENABLED(MachineEnder2Pro))
#define VerChar1 "E2P"
#elif(ENABLED(MachineEnder3))
#define VerChar1 "E3"
#elif ENABLED(MachineEnder3V2)
#define VerChar1 "E3V2"
#elif ENABLED(MachineEnder3S1)
#define VerChar1 "E3S1"
#elif ENABLED(MachineEnder3Max)
#define VerChar1 "E3M"
#elif(ENABLED(MachineEnder4))
#define VerChar1 "E4"
#elif(ENABLED(MachineEnder5))
#define VerChar1 "E5"
#elif(ENABLED(MachineEnder6))
#define VerChar1 "E6"
#elif(ENABLED(MachineEnder7))
#define VerChar1 "E7"
#elif(ENABLED(MachineSermoonD1))
#define VerChar1 "D1"
#elif(ENABLED(MachineEnder5Plus))
#define VerChar1 "E5P"
#elif(ENABLED(MachineCR20))
#define VerChar1 "2"
#elif(ENABLED(MachineCR10Orig))
#define VerChar1 "O"
#elif(ENABLED(MachineCR10Std))
#define VerChar1 "S"
#elif(ENABLED(MachineCRX))
#define VerChar1 "X"
#elif(ENABLED(MachineCR6))
#define VerChar1 "CR6"
#elif(ENABLED(MachineCR5))
#define VerChar1 "CR5"
#elif(ENABLED(MachineCR6Max))
#define VerChar1 "CR6M"
#elif(ENABLED(MachineS4))
#define VerChar1 "4"
#elif(ENABLED(MachineS5) || ENABLED(MachineCR10Max))
#define VerChar1 "5"
#elif ENABLED(MachineCR2020)
#define VerChar1 "20"
#elif(ENABLED(MachineCR30))
#define VerChar1 "CR30"
#endif
#if(ENABLED(BL_Touch))
#define VerChar2 "B"
#if(ENABLED(HotendStock))
#define VerChar2 "S"
#elif(ENABLED(HotendE3D))
#define VerChar2 "E"
#elif ENABLED(HotendMosquito)
#define VerChar2 "M"
#endif
#if(ENABLED(HotendAllMetal))
#define VerChar3 "M"
#else
#define VerChar2 "E"
#endif
#if(ENABLED(LOWRES_DWIN))
#define VerChar3 "L"
#else
#define VerChar3 "H"
#define VerChar3 "S"
#endif
#if(ENABLED(ACBed))
#define VerChar4 "A"
#if(ENABLED(BedAC))
#define VerChar4 "A"
#elif(ENABLED(BedDC))
#define VerChar4 "D"
#else
#define VerChar4 "D"
#define VerChar4 "N"
#endif
#if(ENABLED(OpticalY))
#define VerChar5 "O"
#if(ENABLED(ABL_EZABL))
#define VerChar5 "A"
#elif(ENABLED(ABL_BLTOUCH))
#define VerChar5 "B"
#else
#define VerChar5 "M"
#define VerChar5 "N"
#endif
#if(ENABLED(TitanExtruder))
#define VerChar6 "T"
#elif ANY(BMGExtruderV2, BMGExtruderV3)
#define VerChar6 "B"
#elif ENABLED(BondtechLGX)
#define VerChar6 "L"
#if(ENABLED(ABL_UBL))
#define VerChar6 "U"
#elif(ENABLED(ABL_BI))
#define VerChar6 "B"
#else
#define VerChar6 "S"
#define VerChar6 "N"
#endif
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION "_" VerChar1 VerChar2 VerChar3 VerChar4 VerChar5 VerChar6
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " FL " VerChar1 VerChar2 VerChar3 VerChar4 VerChar5 VerChar6
/**
* The STRING_DISTRIBUTION_DATE represents when the binary file was built,
@@ -88,12 +136,70 @@
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
#if(ENABLED(MachineTLD3P))
#define CUSTOM_MACHINE_NAME "LNL D3Pro"
#elif(ENABLED(MachineTLD5))
#define CUSTOM_MACHINE_NAME "LNL D5Pro"
#elif(ENABLED(MachineTLD6))
#define CUSTOM_MACHINE_NAME "LNL D6Pro"
#if ENABLED(MACHINE_PRO)
#define MACHINEPRO " Pro"
#else
#define MACHINEPRO ""
#endif
#if(ENABLED(MachineMini))
#define CUSTOM_MACHINE_NAME "Mini SuPeR"
#elif(ENABLED(MachineCR10Smart))
#define CUSTOM_MACHINE_NAME "CR10Smart"
#elif(ENABLED(MachineCR10SmartPro))
#define CUSTOM_MACHINE_NAME "CR10SmartPro"
#elif(ENABLED(MachineEnder2))
#define CUSTOM_MACHINE_NAME "Ender2"
#elif(ENABLED(MachineEnder2Pro))
#define CUSTOM_MACHINE_NAME "Ender2 Pro"
#elif(ENABLED(MachineEnder3))
#define CUSTOM_MACHINE_NAME "Ender3" MACHINEPRO
#elif(ENABLED(MachineEnder3Max))
#define CUSTOM_MACHINE_NAME "E3Max"
#elif(ENABLED(MachineEnder6))
#define CUSTOM_MACHINE_NAME "Ender6"
#elif(ENABLED(MachineEnder7))
#define CUSTOM_MACHINE_NAME "Ender7"
#elif(ENABLED(MachineEnder3V2))
#define CUSTOM_MACHINE_NAME "Ender3V2"
#elif(ENABLED(MachineEnder3S1))
#define CUSTOM_MACHINE_NAME "Ender3S1"
#elif(ENABLED(MachineEnder4))
#define CUSTOM_MACHINE_NAME "Ender4"
#elif(ENABLED(MachineEnder5))
#define CUSTOM_MACHINE_NAME "Ender5" MACHINEPRO
#elif(ENABLED(MachineEnder5Plus))
#define CUSTOM_MACHINE_NAME "E5 Plus"
#elif(ENABLED(MachineCR20))
#define CUSTOM_MACHINE_NAME "CR-20"
#elif(ENABLED(MachineCR10Orig))
#define CUSTOM_MACHINE_NAME "CR-10"
#elif(ENABLED(MachineCRX))
#define CUSTOM_MACHINE_NAME "CR-X"
#elif ENABLED(MachineCR10SProV2)
#define CUSTOM_MACHINE_NAME "10SProV2"
#elif(ENABLED(MachineCR10SPro))
#define CUSTOM_MACHINE_NAME "10S Pro"
#elif(ENABLED(MachineCR10Max))
#define CUSTOM_MACHINE_NAME "CR10Max"
#elif(ENABLED(MachineCR10SV3))
#define CUSTOM_MACHINE_NAME "CR10V3"
#elif(ENABLED(MachineCR10SV2))
#define CUSTOM_MACHINE_NAME "CR10V2"
#elif(ENABLED(MachineCR10Std))
#define CUSTOM_MACHINE_NAME "CR10300"
#elif(ENABLED(MachineS4))
#define CUSTOM_MACHINE_NAME "CR10400"
#elif(ENABLED(MachineS5))
#define CUSTOM_MACHINE_NAME "CR10500"
#elif ENABLED(MachineCR2020)
#define CUSTOM_MACHINE_NAME "CR2020"
#elif ENABLED(MachineSermoonD1)
#define CUSTOM_MACHINE_NAME "SermoonD1"
#elif ENABLED(MachineCR5)
#define CUSTOM_MACHINE_NAME "CR5 Pro"
#elif ENABLED(MachineCR30)
#define CUSTOM_MACHINE_NAME "CR30 Printmill"
#endif
/**
@@ -102,7 +208,7 @@
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/Tenlog_DWIN"
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/CrealityDwin_2.0"
/**
* Default generic printer UUID.
@@ -113,7 +219,7 @@
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
#define WEBSITE_URL "http://www.lnl3d.com "
#define WEBSITE_URL "https://www.amazon.com/s?k=F1RST+LAYER"
/**
* Set the vendor info the serial USB interface, if changable
+2 -2
View File
@@ -139,8 +139,8 @@ typedef Servo hal_servo_t;
#error "LCD_SERIAL_PORT must be from 0 to 3."
#endif
#define LCD_SERIAL lcdSerial
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(DWINOS_4)
#define LCD_SERIAL_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free()
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
#define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.get_tx_buffer_free()
#endif
#endif
+1 -1
View File
@@ -629,7 +629,7 @@ MSerialT1 customizedSerial1(MSerialT1::HasEmergencyParser);
template class MarlinSerial< LCDSerialCfg<LCD_SERIAL_PORT> >;
MSerialLCD lcdSerial(MSerialLCD::HasEmergencyParser);
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(DWINOS_4)
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
template<typename Cfg>
typename MarlinSerial<Cfg>::ring_buffer_pos_t MarlinSerial<Cfg>::get_tx_buffer_free() {
const ring_buffer_pos_t t = tx_buffer.tail, // next byte to send.
+1 -1
View File
@@ -209,7 +209,7 @@
static ring_buffer_pos_t available();
static void write(const uint8_t c);
static void flushTX();
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(DWINOS_4)
#if HAS_DGUS_LCD || ENABLED(DGUS_LCD_UI_CREALITY_TOUCH) || ENABLED(EXTENSIBLE_UI)
static ring_buffer_pos_t get_tx_buffer_free();
#endif
+1
View File
@@ -40,6 +40,7 @@ struct MarlinSerial : public HardwareSerial {
inline void begin(unsigned long baud) { begin(baud, SERIAL_8N1); }
void _rx_complete_irq(serial_t *obj);
FORCE_INLINE static uint8_t buffer_overruns() { return 0; }
protected:
usart_rx_callback_t _rx_callback;
+29 -21
View File
@@ -46,8 +46,9 @@ RunoutMode FilamentMonitorBase::mode[NUM_RUNOUT_SENSORS]; // Initialized by sett
#endif
float RunoutResponseDelayed::runout_distance_mm[NUM_RUNOUT_SENSORS]; // Initialized by settings.load
volatile float RunoutResponseDelayed::runout_mm_countdown[NUM_RUNOUT_SENSORS];
countdown_t RunoutResponseDelayed::mm_countdown;
uint8_t FilamentSensorCore::motion_detected;
int8_t RunoutResponseDelayed::runout_count[NUM_RUNOUT_SENSORS]; // = 0
//
// Filament Runout event handler
@@ -82,7 +83,7 @@ void event_filament_runout(const uint8_t extruder) {
#endif
TERN_(EXTENSIBLE_UI, ExtUI::onFilamentRunout(ExtUI::getTool(extruder)));
TERN_(DWIN_LCD_PROUI, DWIN_FilamentRunout(extruder));
TERN_(DWIN_LCD_PROUI, dwinFilamentRunout(extruder));
#if ANY(HOST_PROMPT_SUPPORT, HOST_ACTION_COMMANDS, MULTI_FILAMENT_SENSOR)
const char tool = '0' + TERN0(MULTI_FILAMENT_SENSOR, extruder);
@@ -96,12 +97,16 @@ void event_filament_runout(const uint8_t extruder) {
const bool run_runout_script = !runout.host_handling;
#if ENABLED(HOST_ACTION_COMMANDS)
if (run_runout_script
&& ( strstr(FILAMENT_RUNOUT_SCRIPT, "M600")
const bool park_or_pause = (false
#ifdef FILAMENT_RUNOUT_SCRIPT
|| strstr(FILAMENT_RUNOUT_SCRIPT, "M600")
|| strstr(FILAMENT_RUNOUT_SCRIPT, "M125")
|| TERN0(ADVANCED_PAUSE_FEATURE, strstr(FILAMENT_RUNOUT_SCRIPT, "M25"))
)
) {
#endif
);
if (run_runout_script && park_or_pause) {
hostui.paused(false);
}
else {
@@ -118,24 +123,27 @@ void event_filament_runout(const uint8_t extruder) {
SERIAL_ECHOPGM(" " ACTION_REASON_ON_FILAMENT_RUNOUT " ");
SERIAL_CHAR(tool);
SERIAL_EOL();
#endif // HOST_ACTION_COMMANDS
if (run_runout_script) {
#if MULTI_FILAMENT_SENSOR
char script[strlen(FILAMENT_RUNOUT_SCRIPT) + 1];
sprintf_P(script, PSTR(FILAMENT_RUNOUT_SCRIPT), tool);
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
SERIAL_ECHOLNPGM("Runout Command: ", script);
#ifdef FILAMENT_RUNOUT_SCRIPT
if (run_runout_script) {
#if MULTI_FILAMENT_SENSOR
MString<strlen(FILAMENT_RUNOUT_SCRIPT)> script;
script.setf(F(FILAMENT_RUNOUT_SCRIPT), AS_CHAR(tool));
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
SERIAL_ECHOLNPGM("Runout Command: ", &script);
#endif
queue.inject(&script);
#else
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
SERIAL_ECHOPGM("Runout Command: ");
SERIAL_ECHOLNPGM(FILAMENT_RUNOUT_SCRIPT);
#endif
queue.inject(F(FILAMENT_RUNOUT_SCRIPT));
#endif
queue.inject(script);
#else
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
SERIAL_ECHOPGM("Runout Command: ");
SERIAL_ECHOLNPGM(FILAMENT_RUNOUT_SCRIPT);
#endif
queue.inject(F(FILAMENT_RUNOUT_SCRIPT));
#endif
}
}
#endif
}
#endif // HAS_FILAMENT_SENSOR
+100 -75
View File
@@ -44,7 +44,17 @@
#define FILAMENT_RUNOUT_THRESHOLD 5
#endif
typedef Flags<
#if NUM_MOTION_SENSORS > NUM_RUNOUT_SENSORS
NUM_MOTION_SENSORS
#else
NUM_RUNOUT_SENSORS
#endif
> runout_flags_t;
void event_filament_runout(const uint8_t extruder);
inline bool should_monitor_runout() { return did_pause_print || printingIsActive(); }
template<class RESPONSE_T, class SENSOR_T>
class TFilamentMonitor;
@@ -123,43 +133,33 @@ class TFilamentMonitor : public FilamentMonitorBase {
// Give the response a chance to update its counter.
static void run() {
if (enabled[active_extruder] && mode[active_extruder] != RM_NONE && !filament_ran_out && (printingIsActive() || did_pause_print)) {
if (enabled && !filament_ran_out && should_monitor_runout()) {
cli(); // Prevent RunoutResponseDelayed::block_completed from accumulating here
response.run();
sensor.run();
const uint8_t runout_flags = response.has_run_out();
const runout_flags_t runout_flags = response.has_run_out();
sei();
#if MULTI_FILAMENT_SENSOR
#if ENABLED(WATCH_ALL_RUNOUT_SENSORS)
const bool ran_out = !!runout_flags; // any sensor triggers
const bool ran_out = bool(runout_flags); // any sensor triggers
uint8_t extruder = 0;
if (ran_out) {
uint8_t bitmask = runout_flags;
while (!(bitmask & 1)) {
bitmask >>= 1;
extruder++;
}
}
if (ran_out) while (!runout_flags.test(extruder)) extruder++;
#else
const bool ran_out = TEST(runout_flags, active_extruder); // suppress non active extruders
const bool ran_out = runout_flags[active_extruder]; // suppress non active extruders
uint8_t extruder = active_extruder;
#endif
#else
const bool ran_out = !!runout_flags;
const bool ran_out = bool(runout_flags);
uint8_t extruder = active_extruder;
#endif
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
if (runout_flags) {
SERIAL_ECHOPGM("Runout Sensors: ");
for(int i; i < 8; i++) SERIAL_ECHO('0' + TEST(runout_flags, i));
SERIAL_ECHOPGM(" -> ", extruder);
if (ran_out) SERIAL_ECHOPGM(" RUN OUT");
SERIAL_EOL();
}
#endif
if (ran_out) {
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
SERIAL_ECHOPGM("Runout Sensors: ");
for (uint8_t i = 0; i < 8; ++i) SERIAL_ECHO('0' + char(runout_flags[i]));
SERIAL_ECHOLNPGM(" -> ", extruder, " RUN OUT");
#endif
filament_ran_out = true;
event_filament_runout(extruder);
planner.synchronize();
@@ -222,10 +222,26 @@ class FilamentSensorBase {
// Return a bitmask of runout flag states (1 bits always indicates runout)
static uint8_t poll_runout_states() {
#define _OR_INVERT(N) | (runout.out_state(N-1) ? 0 : _BV(N-1))
return poll_runout_pins() ^ uint8_t(0 REPEAT_1(NUM_RUNOUT_SENSORS, _OR_INVERT));
#undef _OR_INVERT
#define _INVERT_BIT(N) | (runout.out_state(N-1) ? 0 : _BV(N-1))
return poll_runout_pins() ^ uint8_t(0 REPEAT_1(NUM_RUNOUT_SENSORS, _INVERT_BIT));
#undef _INVERT_BIT
}
#if ENABLED(FILAMENT_SWITCH_AND_MOTION)
// Return a bitmask of motion pin states
static uint8_t poll_motion_pins() {
#define _OR_MOTION(N) | (READ(FIL_MOTION##N##_PIN) ? _BV((N) - 1) : 0)
return (0 REPEAT_1(NUM_MOTION_SENSORS, _OR_MOTION));
#undef _OR_MOTION
}
// Return a bitmask of motion flag states (1 bits always indicates runout)
static uint8_t poll_motion_states() {
#define _OR_MOTION(N) | (FIL_MOTION##N##_STATE ? 0 : _BV(N - 1))
return poll_motion_pins() ^ uint8_t(0 REPEAT_1(NUM_MOTION_SENSORS, _OR_MOTION));
#undef _OR_MOTION
}
#endif
};
class FilamentSensorCore : public FilamentSensorBase {
@@ -233,27 +249,27 @@ class FilamentSensorCore : public FilamentSensorBase {
static uint8_t motion_detected;
static bool poll_runout_state(const uint8_t extruder) {
const uint8_t runout_states = poll_runout_states();
#if MULTI_FILAMENT_SENSOR
if ( !TERN0(DUAL_X_CARRIAGE, idex_is_duplicating())
&& !TERN0(MULTI_NOZZLE_DUPLICATION, extruder_duplication_enabled)
) return TEST(runout_states, extruder); // A specific extruder ran out
#else
UNUSED(extruder);
#endif
return !!runout_states; // Any extruder ran out
}
const uint8_t runout_states = poll_runout_states();
#if MULTI_FILAMENT_SENSOR
if ( !TERN0(DUAL_X_CARRIAGE, idex_is_duplicating())
&& !TERN0(MULTI_NOZZLE_DUPLICATION, extruder_duplication_enabled)
) return TEST(runout_states, extruder); // A specific extruder ran out
#else
UNUSED(extruder);
#endif
return !!runout_states; // Any extruder ran out
}
static void poll_motion_sensor() {
static uint8_t old_state;
const uint8_t new_state = poll_runout_pins(),
change = old_state ^ new_state;
old_state = new_state;
static void poll_motion_sensor() {
static uint8_t old_state;
const uint8_t new_state = TERN(FILAMENT_SWITCH_AND_MOTION, poll_motion_pins, poll_runout_pins)(),
change = old_state ^ new_state;
old_state = new_state;
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
if (change) {
SERIAL_ECHOPGM("Motion detected:");
for(int e; e < NUM_RUNOUT_SENSORS; e++)
for(uint8_t e = 0; e < NUM_RUNOUT_SENSORS; ++e)
if (TEST(change, e)) SERIAL_CHAR(' ', '0' + e);
SERIAL_EOL();
}
@@ -262,32 +278,30 @@ class FilamentSensorCore : public FilamentSensorBase {
motion_detected |= change;
}
public:
static void block_completed(const block_t * const b) {
if (runout.mode[active_extruder] != RM_MOTION_SENSOR) return;
public:
static void block_completed(const block_t * const b) {
// If the sensor wheel has moved since the last call to
// this method reset the runout counter for the extruder.
if (TEST(motion_detected, b->extruder))
TERN(FILAMENT_SWITCH_AND_MOTION, filament_motion_present, filament_present)(b->extruder);
// If the sensor wheel has moved since the last call to
// this method reset the runout counter for the extruder.
if (TEST(motion_detected, b->extruder))
filament_present(b->extruder);
// Clear motion triggers for next block
motion_detected = 0;
}
// Clear motion triggers for next block
motion_detected = 0;
}
static void run() {
if (runout.mode[active_extruder] == RM_MOTION_SENSOR) {
poll_motion_sensor();
}
else if (runout.mode[active_extruder] != RM_NONE) {
for(int s = 0; s < NUM_RUNOUT_SENSORS; s++) {
for(uint8_t s = 0; s < NUM_RUNOUT_SENSORS; ++s) {
const bool out = poll_runout_state(s);
if (!out) filament_present(s);
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
static uint8_t was_out; // = 0
if (out != TEST(was_out, s)) {
TBI(was_out, s);
SERIAL_ECHOLNF(F("Filament Sensor "), AS_DIGIT(s), out ? F(" OUT") : F(" IN"));
SERIAL_ECHOLN(F("Filament Sensor "), AS_DIGIT(s), out ? F(" OUT") : F(" IN"));
}
#endif
}
@@ -298,19 +312,32 @@ class FilamentSensorCore : public FilamentSensorBase {
/********************************* RESPONSE TYPE *********************************/
typedef struct {
float runout[NUM_RUNOUT_SENSORS];
Flags<NUM_RUNOUT_SENSORS> runout_reset; // Reset runout later
#if ENABLED(FILAMENT_SWITCH_AND_MOTION)
float motion[NUM_MOTION_SENSORS];
Flags<NUM_MOTION_SENSORS> motion_reset; // Reset motion later
#endif
} countdown_t;
// RunoutResponseDelayed triggers a runout event only if the length
// of filament specified by FIL_RUNOUT_DISTANCE_MM has been fed
// during a runout condition.
class RunoutResponseDelayed {
private:
static volatile float runout_mm_countdown[NUM_RUNOUT_SENSORS];
static countdown_t mm_countdown;
public:
static float runout_distance_mm[NUM_RUNOUT_SENSORS];
static int8_t runout_count[NUM_RUNOUT_SENSORS];
static void reset() {
for(int i = 0; i < NUM_RUNOUT_SENSORS; i++) filament_present(i);
}
static void reset() {
for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) filament_present(i);
#if ENABLED(FILAMENT_SWITCH_AND_MOTION)
for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i) filament_motion_present(i);
#endif
}
static void run() {
#if ENABLED(FILAMENT_RUNOUT_SENSOR_DEBUG)
@@ -318,29 +345,27 @@ class RunoutResponseDelayed {
const millis_t ms = millis();
if (ELAPSED(ms, t)) {
t = millis() + 1000UL;
for(int i; i < NUM_RUNOUT_SENSORS; i++)
SERIAL_ECHOF(i ? F(", ") : F("Remaining mm: "), runout_mm_countdown[i]);
for(uint8_t i; i < NUM_RUNOUT_SENSORS; ++i)
SERIAL_ECHO(i ? F(", ") : F("Remaining mm: "), mm_countdown[i]);
#if ENABLED(FILAMENT_SWITCH_AND_MOTION)
for (uint8_t i = 0; i < NUM_MOTION_SENSORS; ++i)
SERIAL_ECHO(i ? F(", ") : F("Motion remaining mm: "), mm_countdown.motion[i]);
#endif
SERIAL_EOL();
}
#endif
}
static uint8_t has_run_out() {
uint8_t runout_flags = 0;
for(int i = 0; i < NUM_RUNOUT_SENSORS; i++) if (runout_mm_countdown[i] < 0) SBI(runout_flags, i);
return runout_flags;
static runout_flags_t has_run_out() {
runout_flags_t runout_flags{0};
for (uint8_t i = 0; i < NUM_RUNOUT_SENSORS; ++i) if (runout_count[i] < 0) runout_flags.set(i);
return runout_flags;
}
static void filament_present(const uint8_t extruder) {
runout_mm_countdown[extruder] = runout_distance_mm[extruder];
}
static void block_completed(const block_t * const) { }
static void block_completed(const block_t * const b) {
if (b->steps.x || b->steps.y || b->steps.z || did_pause_print) { // Allow pause purge move to re-trigger runout state
// Only trigger on extrusion with XYZ movement to allow filament change and retract/recover.
const uint8_t e = b->extruder;
const int32_t steps = b->steps.e;
runout_mm_countdown[e] -= (TEST(b->direction_bits, E_AXIS) ? -steps : steps) * planner.mm_per_step[E_AXIS_N(e)];
static void filament_present(const uint8_t extruder) {
runout_count[extruder] = runout_distance_mm[extruder];
}
}
};
};
+1 -1
View File
@@ -87,7 +87,7 @@ void GcodeSuite::G30() {
F( " Z:"), p_float_t(measured_z, 2)
);
msg.echoln();
#if ANY(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI)
#if ANY(DWIN_LCD_PROUI, DWIN_CREALITY_LCD_JYERSUI, EXTENSIBLE_UI)
ui.set_status(msg);
#endif
}
+8 -6
View File
@@ -1537,14 +1537,16 @@ static_assert(COUNT(arm) == LOGICAL_AXES, "AXIS_RELATIVE_MODES must contain " _L
#endif
#if ENABLED(LCD_BED_TRAMMING)
#ifndef BED_TRAMMING_INSET_LFRB
#error "LCD_BED_TRAMMING requires BED_TRAMMING_INSET_LFRB values."
#elif ENABLED(BED_TRAMMING_USE_PROBE)
#if ENABLED(BED_TRAMMING_USE_PROBE)
#if !HAS_BED_PROBE
#error "BED_TRAMMING_USE_PROBE requires a real probe."
#elif ENABLED(SENSORLESS_PROBING)
#error "BED_TRAMMING_USE_PROBE is incompatible with SENSORLESS_PROBING."
#endif
#else
#ifndef BED_TRAMMING_INSET_LFRB
#error "LCD_BED_TRAMMING requires BED_TRAMMING_INSET_LFRB values."
#endif
#endif
#endif
@@ -3514,9 +3516,9 @@ static_assert(_PLUS_TEST(3), "DEFAULT_MAX_ACCELERATION values must be positive."
#error "LED_CONTROL_MENU requires an LCD controller that implements the menu."
#endif
#if ENABLED(CUSTOM_MENU_MAIN) && NONE(HAS_MARLINUI_MENU, TOUCH_UI_FTDI_EVE, TFT_LVGL_UI)
#error "CUSTOM_MENU_MAIN requires an LCD controller that implements the menu."
#endif
//#if ENABLED(CUSTOM_MENU_MAIN) && NONE(HAS_MARLINUI_MENU, TOUCH_UI_FTDI_EVE, TFT_LVGL_UI)
//#error "CUSTOM_MENU_MAIN requires an LCD controller that implements the menu."
//#endif
#if ENABLED(CASE_LIGHT_USE_NEOPIXEL) && DISABLED(NEOPIXEL_LED)
#error "CASE_LIGHT_USE_NEOPIXEL requires NEOPIXEL_LED."
+1 -1
View File
@@ -109,7 +109,7 @@ void MarlinUI::clear_lcd() {
#define VERSION_Y 84
#endif
dwinJPGShowAndCache(0); // Ensure DACAI stays on boot screen
dwinDrawString(false, font10x20, Color_Yellow, Color_Bg_Black, INFO_CENTER - (dwin_string.length * 10) / 2, 230, S(dwin_string.string()));
dwinDrawString(false, font10x20, COLOR_YELLOW, COLOR_BG_BLACK, INFO_CENTER - (dwin_string.length * 10) / 2, 230, S(dwin_string.string()));
TERN_(SHOW_CUSTOM_BOOTSCREEN, safe_delay(CUSTOM_BOOTSCREEN_TIMEOUT));
clear_lcd();
+6 -1
View File
@@ -199,7 +199,7 @@ typedef struct {
} select_t;
select_t select_page{0}, select_print{0};
#if ENABLED(LCD_BED_TRAMMING)
#if ENABLED(LCD_BED_TRAMMING) && DISABLED(BED_TRAMMING_USE_PROBE)
constexpr float bed_tramming_inset_lfbr[] = BED_TRAMMING_INSET_LFRB;
#endif
@@ -2290,6 +2290,11 @@ void setFlow() { setPIntOnClick(MIN_PRINT_FLOW, MAX_PRINT_FLOW, []{ planner.refr
#if ENABLED(LCD_BED_TRAMMING)
void tramXY(const uint8_t point, float &x, float &y) {
#if ENABLED(BED_TRAMMING_USE_PROBE)
float bed_tramming_inset_lfbr[] = {X_MIN_BED + probe.min_x() + 0.01f, Y_MIN_BED + probe.min_y() + 0.01f,
X_MAX_BED - probe.max_x() - 0.01f, Y_MAX_BED - probe.max_y() - 0.01f };
#endif
switch (point) {
case 0:
LCD_MESSAGE(MSG_TRAM_FL);
@@ -26,6 +26,8 @@
#include "../../../inc/MarlinConfig.h"
#include "../../../module/motion.h"
#if HAS_COLOR_LEDS
#include "../../../feature/leds/leds.h"
+7 -2
View File
@@ -203,15 +203,20 @@ bool hasPrintTimer = false;
}
void onMeshUpdate(const int8_t xpos, const int8_t ypos, const float zval) {
ScreenHandler.OnMeshLevelingUpdate(xpos, ypos, zval);
#if HAS_BED_PROBE
ScreenHandler.OnMeshLevelingUpdate(xpos, ypos, zval);
#endif
}
void onMeshUpdate(const int8_t xpos, const int8_t ypos, const ExtUI::probe_state_t state) {
ScreenHandler.OnMeshLevelingUpdate(xpos, ypos, 0);
#if HAS_BED_PROBE
ScreenHandler.OnMeshLevelingUpdate(xpos, ypos, 0);
#endif
}
void onLevelingDone() {
}
#endif
#if ENABLED(POWER_LOSS_RECOVERY)
@@ -395,7 +395,12 @@ void DGUSReturnKeyCodeHandler::Command_SettingsMenu(DGUS_VP &vp, void *data) {
}
static void _gotoTrammingPoint(unsigned char point) {
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#if ENABLED(BED_TRAMMING_USE_PROBE)
float lfrb[4] = {X_MIN_BED + probe.min_x(), Y_MIN_BED + probe.min_y(),
X_MAX_BED - probe.max_x(), Y_MAX_BED - probe.max_y() };
#else
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#endif
float x, y;
switch (point) {
@@ -38,6 +38,9 @@
#if ENABLED(ADVANCED_PAUSE_FEATURE)
#include "../../../feature/pause.h"
#endif
#if ENABLED(BED_TRAMMING_USE_PROBE)
#include "../../../module/probe.h"
#endif
#if ENABLED(POWER_LOSS_RECOVERY)
#include "../../../feature/powerloss.h"
#endif
@@ -464,7 +467,14 @@ void DGUSRxHandler::moveToPoint(DGUS_VP &vp, void *data_ptr) {
}
const uint8_t point = ((uint8_t*)data_ptr)[1];
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#if ENABLED(BED_TRAMMING_USE_PROBE)
float lfrb[4] = {X_MIN_BED + probe.min_x(), Y_MIN_BED + probe.min_y(),
X_MAX_BED - probe.max_x(), Y_MAX_BED - probe.max_y() };
#else
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#endif
float x, y;
switch (point) {
+95 -44
View File
@@ -310,6 +310,10 @@ if(idleThrottling == 400) {
rtscheck.RTS_SndData(28, RunoutMode);
if(getRunoutMode(getActiveTool()) == 7)
rtscheck.RTS_SndData(25, RunoutMode);
if(getFilamentRunoutEnabled(getActiveTool()))
rtscheck.RTS_SndData(3, RunoutToggle); /*On*/
else
rtscheck.RTS_SndData(2, RunoutToggle); /*Off*/
#endif
switch(babystepIncrementIndex)
@@ -358,11 +362,13 @@ if(idleThrottling == 400) {
}
if(idleThrottling == 500) {
#if ENABLED(CASE_LIGHT_ENABLE)
#if CASE_LIGHT_ENABLE
if(getCaseLightState())
rtscheck.RTS_SndData(3, LedToggle); /*On*/
else
rtscheck.RTS_SndData(2, LedToggle); /*Off*/
#else
rtscheck.RTS_SndData(2, LedToggle); /*Off*/
#endif
#if ENABLED(POWER_LOSS_RECOVERY)
@@ -370,7 +376,10 @@ if(idleThrottling == 400) {
rtscheck.RTS_SndData(3, PowerLossToggle); /*On*/
else
rtscheck.RTS_SndData(2, PowerLossToggle); /*Off*/
#else
rtscheck.RTS_SndData(2, PowerLossToggle); /*Off*/
#endif
}
if (startprogress == 0)
@@ -606,7 +615,7 @@ int RTSSHOW::RTS_RecData()
if(!DWIN_SERIAL.connected())
DWIN_SERIAL.begin(115200);
//#if ENABLED(DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS)
#if ENABLED(DGUS_SERIAL_STATS_RX_BUFFER_OVERRUNS) && defined(__AVR__)
if ((!DWIN_SERIAL.available() && DWIN_SERIAL.buffer_overruns()) || DWIN_SERIAL.dropped() > 0) {
// Overrun, but reset the flag only when the buffer is empty
// We want to extract as many as valid datagrams possible...
@@ -615,8 +624,7 @@ int RTSSHOW::RTS_RecData()
//DWIN_SERIAL.reset_rx_overun();
DWIN_SERIAL.flush();
}
//#endif
#endif
while (DWIN_SERIAL.available()) {
switch (rx_datagram_state) {
@@ -790,16 +798,18 @@ void RTSSHOW::RTS_SndData(const char *str, unsigned long addr, unsigned char cmd
uint8_t expected_tx = 6 + len; // 6 bytes header + payload.
const millis_t try_until = ExtUI::safe_millis() + 1000;
while (expected_tx > DWIN_SERIAL.get_tx_buffer_free()) {
if (ELAPSED(ExtUI::safe_millis(), try_until)) return; // Stop trying after 1 second
#if ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS) && defined(__AVR__)
while (expected_tx > DWIN_SERIAL.get_tx_buffer_free()) {
if (ELAPSED(ExtUI::safe_millis(), try_until)) return; // Stop trying after 1 second
#ifdef ARDUINO_ARCH_STM32
DWIN_SERIAL.flush();
#else
DWIN_SERIAL.flushTX();
#endif
delay(50);
}
#ifdef ARDUINO_ARCH_STM32
DWIN_SERIAL.flush();
#else
DWIN_SERIAL.flushTX();
#endif
delay(50);
}
#endif
int dataRec2;
do { dataRec2 = rtscheck.RTS_RecData(); } while (dataRec2 > 0); // Since OS4 returns an ack on an 82 command, receive and purge it now
@@ -920,16 +930,18 @@ void RTSSHOW::WriteVariable(uint16_t adr, const void* values, uint8_t valueslen,
uint8_t expected_tx = 6 + valueslen; // 6 bytes header + payload.
const millis_t try_until = ExtUI::safe_millis() + 1000;
while (expected_tx > DWIN_SERIAL.get_tx_buffer_free()) {
if (ELAPSED(ExtUI::safe_millis(), try_until)) return; // Stop trying after 1 second
#if ENABLED(SERIAL_STATS_RX_BUFFER_OVERRUNS) && defined(__AVR__)
while (expected_tx > DWIN_SERIAL.get_tx_buffer_free()) {
if (ELAPSED(ExtUI::safe_millis(), try_until)) return; // Stop trying after 1 second
#ifdef ARDUINO_ARCH_STM32
DWIN_SERIAL.flush();
#else
DWIN_SERIAL.flushTX();
#endif
delay(50);
}
#ifdef ARDUINO_ARCH_STM32
DWIN_SERIAL.flush();
#else
DWIN_SERIAL.flushTX();
#endif
delay(50);
}
#endif
int dataRec2;
do { dataRec2 = rtscheck.RTS_RecData(); } while (dataRec2 > 0); // Since OS4 returns an ack on an 82 command, receive and purge it now
@@ -1045,7 +1057,13 @@ void RTSSHOW::RTS_HandleData()
return;
}
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#if ENABLED(LCD_BED_TRAMMING) && DISABLED(BED_TRAMMING_USE_PROBE)
constexpr float lfrb[4] = BED_TRAMMING_INSET_LFRB;
#elif ENABLED(BED_TRAMMING_USE_PROBE)
float lfrb[4] = { getBedProbeLimits().pos[0] + 1, getBedProbeLimits().pos[1] + 1, getBedProbeLimits().pos[2] - 1, getBedProbeLimits().pos[3] - 1};
SERIAL_ECHOLN("ProbePnts : ", lfrb[0], " - ", lfrb[1], " - ", lfrb[2], " - ", lfrb[3]);
#endif
//SERIAL_ECHOLNPGM_P(PSTR("BeginSwitch"));
switch (Checkkey)
@@ -1648,6 +1666,9 @@ void RTSSHOW::RTS_HandleData()
break;
}
}
#if ENABLED(BED_TRAMMING_USE_PROBE)
char g30CommandStr[20];
#endif
switch(recdat.data[0])
{
case 1: // Z-axis to home
@@ -1744,42 +1765,72 @@ void RTSSHOW::RTS_HandleData()
case 6: // Assitant Level , Centre 1
{
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm(X_CENTER, (axis_t)X);
setAxisPosition_mm(Y_CENTER, (axis_t)Y);
waitway = 6;
#if ENABLED(BED_TRAMMING_USE_PROBE)
sprintf(g30CommandStr, "G30X%iY%i", X_CENTER, Y_CENTER);
SERIAL_ECHOLN(g30CommandStr);
injectCommands(g30CommandStr);
#else
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm(X_CENTER, (axis_t)X);
setAxisPosition_mm(Y_CENTER, (axis_t)Y);
waitway = 6;
#endif
break;
}
case 7: // Assitant Level , Front Left 2
{
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MIN_BED + lfrb[0]), (axis_t)X);
setAxisPosition_mm((Y_MIN_BED + lfrb[1]), (axis_t)Y);
waitway = 6;
#if ENABLED(BED_TRAMMING_USE_PROBE)
sprintf(g30CommandStr, "G30X%iY%i", (int)lfrb[0], (int)lfrb[1]);
SERIAL_ECHOLN(g30CommandStr);
injectCommands(g30CommandStr);
#else
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MIN_BED + lfrb[0]), (axis_t)X);
setAxisPosition_mm((Y_MIN_BED + lfrb[1]), (axis_t)Y);
waitway = 6;
#endif
break;
}
case 8: // Assitant Level , Front Right 3
{
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MAX_BED - lfrb[2]), (axis_t)X);
setAxisPosition_mm((Y_MIN_BED + lfrb[1]), (axis_t)Y);
waitway = 6;
#if ENABLED(BED_TRAMMING_USE_PROBE)
sprintf(g30CommandStr, "G30X%iY%i", (int)lfrb[2], (int)lfrb[1]);
SERIAL_ECHOLN(g30CommandStr);
injectCommands(g30CommandStr);
#else
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MAX_BED - lfrb[2]), (axis_t)X);
setAxisPosition_mm((Y_MIN_BED + lfrb[1]), (axis_t)Y);
waitway = 6;
#endif
break;
}
case 9: // Assitant Level , Back Right 4
{
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MAX_BED - lfrb[2]), (axis_t)X);
setAxisPosition_mm((Y_MAX_BED - lfrb[3]), (axis_t)Y);
waitway = 6;
#if ENABLED(BED_TRAMMING_USE_PROBE)
sprintf(g30CommandStr, "G30X%iY%i", (int)lfrb[2], (int)lfrb[3]);
SERIAL_ECHOLN(g30CommandStr);
injectCommands(g30CommandStr);
#else
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MAX_BED - lfrb[2]), (axis_t)X);
setAxisPosition_mm((Y_MAX_BED - lfrb[3]), (axis_t)Y);
waitway = 6;
#endif
break;
}
case 10: // Assitant Level , Back Left 5
{
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MIN_BED + lfrb[0]), (axis_t)X);
setAxisPosition_mm((Y_MAX_BED - lfrb[3]), (axis_t)Y);
waitway = 6;
#if ENABLED(BED_TRAMMING_USE_PROBE)
sprintf(g30CommandStr, "G30X%iY%i", (int)lfrb[0], (int)lfrb[3]);
SERIAL_ECHOLN(g30CommandStr);
injectCommands(g30CommandStr);
#else
setAxisPosition_mm(BED_TRAMMING_Z_HOP, (axis_t)Z);
setAxisPosition_mm((X_MIN_BED + lfrb[0]), (axis_t)X);
setAxisPosition_mm((Y_MAX_BED - lfrb[3]), (axis_t)Y);
waitway = 6;
#endif
break;
}
case 11: // Autolevel switch
@@ -2390,7 +2441,7 @@ void SetTouchScreenConfiguration() {
if (Settings.display_sound) cfg_bits |= 1UL << 3; // 3: audio
if (Settings.display_standby) cfg_bits |= 1UL << 2; // 2: backlight on standby
if(Settings.screen_rotation==10) cfg_bits |= 1UL << 1; // 1 & 0: Inversion
#if DISABLED(LOWRES_DWIN)
#if (DISABLED(LOWRES_DWIN) && DISABLED(DWIN_PORTRAIT)) || (ENABLED(LOWRES_DWIN) && ENABLED(DWIN_PORTRAIT))
cfg_bits |= 1UL << 0; // Portrait Mode or 800x480 display has 0 point rotated 90deg from 480x272 display
#endif
@@ -74,7 +74,6 @@ namespace ExtUI {
#define PrintscheduleIcon 0x100E
#define Timehour 0x1010
#define Timemin 0x1012
#define IconPrintstatus 0x1014
#define Percentage 0x1016
#define FanKeyIcon 0x101E
#define Flowrate 0x1300
+1
View File
@@ -922,6 +922,7 @@ namespace ExtUI {
#if HAS_BED_PROBE
float getProbeOffset_mm(const axis_t axis) { return probe.offset.pos[axis]; }
void setProbeOffset_mm(const_float_t val, const axis_t axis) { probe.offset.pos[axis] = val; }
probe_limits getBedProbeLimits() {return (probe_limits){probe.min_x(), probe.min_y(), probe.max_x(), probe.max_y()};}
#endif
#if ENABLED(BACKLASH_GCODE)
+7 -5
View File
@@ -58,11 +58,12 @@ namespace ExtUI {
static constexpr size_t eeprom_data_size = 48;
enum axis_t : uint8_t { X, Y, Z, I, J, K, U, V, W, X2, Y2, Z2, Z3, Z4 };
enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5, E6, E7 };
enum heater_t : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER, COOLER };
enum fan_t : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };
enum result_t : uint8_t { PID_STARTED, PID_BAD_HEATER_ID, PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, PID_DONE };
enum axis_t : uint8_t { X, Y, Z, I, J, K, U, V, W, X2, Y2, Z2, Z3, Z4 };
enum extruder_t : uint8_t { E0, E1, E2, E3, E4, E5, E6, E7 };
enum heater_t : uint8_t { H0, H1, H2, H3, H4, H5, BED, CHAMBER, COOLER };
enum fan_t : uint8_t { FAN0, FAN1, FAN2, FAN3, FAN4, FAN5, FAN6, FAN7 };
enum result_t : uint8_t { PID_STARTED, PID_BAD_HEATER_ID, PID_TEMP_TOO_HIGH, PID_TUNING_TIMEOUT, PID_DONE };
struct probe_limits { float pos[4];};
constexpr uint8_t extruderCount = EXTRUDERS;
constexpr uint8_t hotendCount = HOTENDS;
@@ -292,6 +293,7 @@ namespace ExtUI {
#if HAS_BED_PROBE
float getProbeOffset_mm(const axis_t);
void setProbeOffset_mm(const_float_t, const axis_t);
probe_limits getBedProbeLimits();
#endif
#if ENABLED(BACKLASH_GCODE)
+9 -8
View File
@@ -94,16 +94,22 @@ static_assert(COUNT(lco) == 4 || lcodiff == 1 || lcodiff == 3, "The first two BE
constexpr int nr_edge_points = tramming_3_points ? 3 : 4;
constexpr int available_points = nr_edge_points + ENABLED(BED_TRAMMING_INCLUDE_CENTER);
constexpr int center_index = TERN(BED_TRAMMING_INCLUDE_CENTER, available_points - 1, -1);
constexpr float inset_lfrb[4] = BED_TRAMMING_INSET_LFRB;
constexpr xy_pos_t lf { (X_MIN_BED) + inset_lfrb[0], (Y_MIN_BED) + inset_lfrb[1] },
#if DISABLED(BED_TRAMMING_USE_PROBE)
constexpr float inset_lfrb[4] = BED_TRAMMING_INSET_LFRB;
constexpr xy_pos_t lf { (X_MIN_BED) + inset_lfrb[0], (Y_MIN_BED) + inset_lfrb[1] },
rb { (X_MAX_BED) - inset_lfrb[2], (Y_MAX_BED) - inset_lfrb[3] };
#endif
static int8_t bed_corner;
/**
* Move to the next corner coordinates
*/
static void _lcd_goto_next_corner() {
#if ENABLED(BED_TRAMMING_USE_PROBE)
xy_pos_t lf = {X_MIN_BED + probe.min_x() + 0.01f, Y_MIN_BED + probe.min_y() + 0.01f },
rb = {X_MAX_BED - probe.max_x() - 0.01f, Y_MAX_BED - probe.max_y() - 0.01f };
#endif
xy_pos_t corner_point = lf; // Left front
if (tramming_3_points) {
@@ -165,11 +171,6 @@ static void _lcd_goto_next_corner() {
#if ENABLED(BED_TRAMMING_USE_PROBE)
#define VALIDATE_POINT(X, Y, STR) static_assert(Probe::build_time::can_reach((X), (Y)), \
"BED_TRAMMING_INSET_LFRB " STR " inset is not reachable with the default NOZZLE_TO_PROBE offset and PROBING_MARGIN.")
VALIDATE_POINT(lf.x, Y_CENTER, "left"); VALIDATE_POINT(X_CENTER, lf.y, "front");
VALIDATE_POINT(rb.x, Y_CENTER, "right"); VALIDATE_POINT(X_CENTER, rb.y, "back");
#ifndef PAGE_CONTAINS
#define PAGE_CONTAINS(...) true
#endif
+17 -12
View File
@@ -486,7 +486,7 @@ void __O2 Endstops::report_states() {
print_es_state(PROBE_TRIGGERED(), F(STR_Z_PROBE));
#endif
#if HAS_FILAMENT_SENSOR
for(int i = 1; i<NUM_RUNOUT_SENSORS;i++) {
for (uint8_t i = 1; i <= NUM_RUNOUT_SENSORS; ++i) {
pin_t pin;
switch (i) {
default: continue;
@@ -497,18 +497,23 @@ void __O2 Endstops::report_states() {
const RunoutMode rm = runout.mode[i - 1];
const uint8_t outval = runout.out_state(i - 1);
SERIAL_ECHOPGM(STR_FILAMENT);
if (i > 1) SERIAL_CHAR(' ', '0' + i);
SERIAL_ECHOPGM(": ");
if (rm == RM_NONE)
SERIAL_ECHOLNPGM(STR_OFF);
else if (rm == RM_MOTION_SENSOR) {
SERIAL_ECHOPGM("MOTION : ");
print_es_state(extDigitalRead(pin) == outval);
}
else
SERIAL_ECHOLNPGM_P(extDigitalRead(pin) == outval ? PSTR("OUT") : PSTR("PRESENT"));
#if DISABLED(SLIM_LCD_MENUS)
SERIAL_ECHOPGM(STR_FILAMENT);
if (i > 1) SERIAL_CHAR(' ', '0' + i);
SERIAL_ECHOPGM(": ");
if (rm == RM_NONE)
SERIAL_ECHOLNPGM(STR_OFF);
else if (rm == RM_MOTION_SENSOR) {
SERIAL_ECHOPGM("MOTION : ");
print_es_state(extDigitalRead(pin) == outval);
}
else
SERIAL_ECHOLNPGM_P(extDigitalRead(pin) == outval ? PSTR("OUT") : PSTR("PRESENT"));
#else
print_es_state(extDigitalRead(pin) == outval, F(STR_FILAMENT));
#endif
}
#endif
TERN_(BLTOUCH, bltouch._reset_SW_mode());
@@ -111,6 +111,11 @@
#endif
#endif
#if ENABLED(MINIPANEL)
#undef DOGLCD_CS
#define DOGLCD_CS 28
#endif
/**
PIN: 0 Port: B0 E0_DIR_PIN protected
PIN: 1 Port: B1 E0_STEP_PIN protected
+80 -49
View File
@@ -1,16 +1,74 @@
## Dwin Touch/TFT Screen supported firmware
## Creality 427 Board TFT and Touchscreen Firmware For F1rst Layer Kits
- Info screen Version Code Reference
- - Char 1 - Driver (A-4988, T-TMC220X)
- - Char 2 - Z Stop(B-BLTouch, E-Endstop)
- - Char 3 - Screen(L-LowRes, H-THighRes)
- - Char 4 - Bed (A-AC, D-DC)
- - Char 5 - Endstop(O-Optical Y, M-Mechanical Y)
- - Char 6 - Extruder (T-Titan, B-BMG, L-LGX, S-Basic)
This branch is specifically intended to support the kits sold by F1rst Layer including Creality 427 boards, touchscreens, and other upgrades.
- [Dual Gear Extruders](https://amzn.to/3lZfg08)
- [Creality 427 Board with Runout Sensor](https://amzn.to/2Y1jrke)
- [Creality 427 Board and BLTouch](https://amzn.to/3CT57Jk)
- [E3V2 Upgrade Kit (Screen, 427 board, bltouch, runout)](https://amzn.to/3EZnhec)
- [Ender 3 100mm Z Extension Kit](https://amzn.to/2XWH78F)
- [CR10S Pro / V2](https://www.tinymachines3d.com/products/cr-10s-pro-v2-3d-printer?rfsn=3419592.cc302fe)
- [CR10 Max](https://www.tinymachines3d.com/products/creality-cr-10-max-3d-printer?rfsn=3419592.cc302fe)
- [Ender 5 Plus](https://www.tinymachines3d.com/products/ender-5-plus-silent-board-custom-dual-z-3d-printer?rfsn=3419592.cc302fe)
- [Ender 6](https://amzn.to/3JRyOhi)
- [CR-X / Pro](https://www.tinymachines3d.com/products/creality-cr-x-pro-3d-printer-with-dual-extruder-and-bl-touch?rfsn=3419592.cc302fe)
- [CR10 V2 ](https://www.tinymachines3d.com/products/creality-cr-10-v2-3d-printer?rfsn=3419592.cc302fe)
- [CR10 V3 ](https://www.tinymachines3d.com/products/creality-cr-10-v3-plus-3d-printer-with-genuine-e3d-direct-drive-extruder-and-bl-touch?rfsn=3419592.cc302fe)
- [Ender 3 / Pro 4.2.2 and 4.2.7](https://amzn.to/3BRHlxY)
- [Ender 3 V2](https://www.tinymachines3d.com/products/ender-3-v2?rfsn=3419592.cc302fe)
- [Ender 3 Max](https://www.tinymachines3d.com/products/ender-3-max-3d-printer?rfsn=3419592.cc302fe)
- [Ender 5 / Pro 4.2.2 and 4.2.7](https://amzn.to/3gMb2Yu)
- [CR10S5 500mm](https://www.tinymachines3d.com/products/creality-cr-10-s5-3d-printer?rfsn=3419592.cc302fe)
- [CR6 SE](https://www.tinymachines3d.com/products/creality-cr-6-se-3d-printer?rfsn=3419592.cc302fe)
- [CR6 Max](https://www.tinymachines3d.com/products/creality-cr-6-max-3d-printer?rfsn=3419592.cc302fe)
- [CR10 Smart](https://www.tinymachines3d.com/products/creality-cr-10-smart-3d-printer?rfsn=3419592.cc302fe)
- [Ender 7](https://www.tinymachines3d.com/products/ender-7-3d-printer?rfsn=3419592.cc302fe)
- [CR30](https://www.tinymachines3d.com/products/cr-30-infinite-z-belt-3d-printer?rfsn=3419592.cc302fe)
- [Sermoon D1](https://amzn.to/3LXfZeD)
- [CR5 / Pro HT](https://amzn.to/3gWvpBt)
- [Ender 3 S1](https://www.tinymachines3d.com/products/ender-3-s1-3d-printer?rfsn=3419592.cc302fe)
- [Ender 2 Pro](https://www.tinymachines3d.com/products/ender-2-pro-3d-printer?rfsn=3419592.cc302fe)
- CR10S, CR10S4, CR20 and Pro, CR10, CR10Mini, CR2020, Ender 4, Ender 2 - Legacy support
- These configurations exist however due to age and product availability are no longer actively tested
## Coming Soon
- [CR10 Smart Pro](https://www.tinymachines3d.com/products/cr-10-smart-pro-3d-printer?rfsn=3419592.cc302fe)
- [CR200B]()
## Resin machines below from Tiny Machines are listed simply as an additional way to help support the project. If youre considering buying one, please do so through the following links :
- [Halot One CL-60](https://www.tinymachines3d.com/products/halot-one-cl-60-resin-3d-printer?rfsn=3419592.cc302fe)
- [LD-002R](https://www.tinymachines3d.com/products/ld-002r-resin-printer?rfsn=3419592.cc302fe)
- [LD-002H](https://www.tinymachines3d.com/products/ld-002h-resin-3d-printer?rfsn=3419592.cc302fe)
- [LD-006](https://www.tinymachines3d.com/products/ld-006-resin-3d-printer?rfsn=3419592.cc302fe)
- [UW-02 Washer](https://www.tinymachines3d.com/products/uw-02-washing-curing-machine?rfsn=3419592.cc302fe)
Ender 3V2 has a dedicated file set. CR10 Smart has a dedicated high resolution screen set. Portrait displays use the CR6/E3 Touch variant and landscape use the combined set.
Screen files are archived with [7-Zip](https://www.7-zip.org/) simply because it came out 1/5 the file size of a zip file. That added up fast!
There is a limitation with Windows systems and path depth so the file names need to be shorter than we would prefer. If you get an error compiling due to the path limit, move the folder to the root of your hard drive. Here is a legend to help decode the files:
- BLT = BLTouch
- BIL = Bilinear Leveling
- UBL - Unified Bed Leveling
- DZ = Dual Z Steppers
- Fil = FilamentRunout
- Slnt = Creality Silent Board
- H = E3D Hemera Extruder
- MC = Mosquito Creality mount
- ME = Mosquito E3D mount
- Melzi Host option disables local SD card to allow more features and buffer for Octoprint control
- NF = Noise filtering for machines with cable extensions - reduces homing accuracy!
- LR = Stock runout replaced with Lerdge
- ZM = BLTouch connected to ZMin port instead of Probe pin 5 connector harness
## Support
This firmware is provided to the public as-is with no warranty or guarantee. It's based on a large open source project and there is no entitlement to support. That said, LNL Solutions customers may obtain support through their normal support queue. I will provide support to Patreons as I am able. Aside from this, we are active on many discord channels and typically help anyone we can when we come across them.
This firmware is provided to the public as-is with no warranty or guarantee. It's based on a large open source project and there is no entitlement to support. If you are a F1rst Layer customer, you can contact them for support. I will provide support to Patreons as I am able. If you require more immediate support and are not a Tiny Machines 3D or F1rst Layer customer, you may contact Tiny Machines at support@tinymachines3d.com about purchasing support hours. Aside from this, we are active on many Facebook groups as well as several discord channels and typically help anyone we can when we come across them.
We have now created a dedicated Discord server to handle support and archive relevant guides and instructions. Patreon supporters will get priority assistance.
@@ -26,9 +84,16 @@ Shout out to Tom Brazier, as nearly all notable improvements to the Marlin core
Insanity Automation Discord - https://discord.gg/TKmJ85PyG4
## Primary Notes for DW7.4.8
- Added Linear Adv and Input Shaping Screens
- Signifigant improvement in response times following changes to new generation machines
-- The DWIN OS 3.5 had an option to enable NOACK with an addon bin file. 4.0 has a specific throttled response OS revision. 4.5 needed a totally different UI image flashed. No way it could all live together without completely confusing users so we set about figuring out how to keep universal support and found a balance in data send cycles that the 2560 buffers could still handle the replies without overunning.
- Added support for changing runout sensor type on the LCD
- Added toggle to change babystepping increment on the LCD
- Thanks to EvilGremlin for some of the icon and display graphics work
## Primary Notes for DW7.4.7
- Added IDEX screens
- Added Branch / support for Tenlog IDEX machines with LNL Solutions
- Fan adjustment now numeric instead of simple on/off
- Tap Z offset on adjustment screen to type numeric value
- Sync to 2.1.2 with LA now on for all builds, Silent specific builds eliminated
@@ -78,47 +143,13 @@ Insanity Automation Discord - https://discord.gg/TKmJ85PyG4
- CR30 Support Added
## Primary Notes for DW7.4
- Added Screen Calibration Options
-- Standby Brightness
-- Volume
-- Both now saved in EEPROM
-- Screen configuration code based loosely on the work from the CR6 community modified for this screen model
-- Automatic Screen rotation for the Ender 6 (Default is upside-down)
- Manual Mesh Controls for no Probe machines
-- CRX and Ender 6 with no Probe can now use all mesh controls
-- All machines now use the same screen files except for Ender 3 V2 Rotary Dial machines and CR6
- Home button added to 5 point adjustment screen
- Tap mesh values to manually type in a new value - allows for manual adjustment of mesh values
- Additional functions, messaging on pause / filament runout
-- No will no longer cancel print
-- Depending on state, if only option is continue (eg Reheat, Load filament) Any response continues
-- On final Confirm Continue, No will purge more filament and Yes will resume
- Most places temperatures are shown, can now tap them to type in a value to set the temerature
- Updated to Marlin 2.0.9 Base
- CR6 Branches merged in
-- Support for this machine is primarily based on the fork by the [CR6 Community](https://github.com/CR6Community)
## Primary notes for DW7.3
- File browser rewritten to support paging as well as subdirectories
-- New file browser has a limit of a 66 character directory depth. This can be expanded at the cost of more RAM if users find this more limiting.
-- Due to the above, the current recommendation is to try and limit folder depth to 3 subdirectories and keep names short if possible.
- Base bumped to Marlin Bugfix as of 20210418
# Changes for DW7.3.1
- Added SD file refresh button for users with damaged SD Detect Pins
- Modified print finish button action to raise z by 5mm and disable steppers rather than rehome XY
- Solve rounding issue with babystepping below step precision by forcing always round up caused by recent upstream change
- Modified babystepping resolution for fine adjustment to .02mm from .01mm
- Force file pages to reset paging value on entry to screen to prevent incorrect scrolling
- Additional string length buffer safeties
The default build button is now a batch Build All! If you want to build a custom stock 2560 environment, use the env:megaatmega2560 environment.
For SKR 1.3/1.4 boards use the LPC1768/9 environments as usual. For SKR Mini or Creality STM32F1 boards use the standard STM32 environments per vendor.
- Touch screen primarily based on the fork by the [CR6 Community](https://github.com/CR6Community)
- E3V2 is currently using the modified Jyers UI as merged into Marlin upstream
## About Our Branches
The firmware branches maintained here are made possible by the support of [Tiny Machines 3D](https://www.tinymachines3d.com/?rfsn=3419592.cc302fe) as well as our customer base through our 3D printing Services.
Maintaining and developing these branches takes a significant investment, made up of time and machines. To support continued development, please consider your next 3D Printer related purchase from Tiny Machines 3D
The firmware branches maintained here are made possible by the support of [F1rst Layer](https://amzn.to/2XWHVdH) and [Tiny Machines 3D](https://www.tinymachines3d.com/?rfsn=3419592.cc302fe) as well as our customer base through our 3D printing Services.
Maintaining and developing these branches takes a significant investment, made up of time and machines. To support continued development, please consider your next 3D Printer purchases from Tiny Machines 3D, F1rst Layer, Bondtech, or Slice Engineering and thank them for supporting open source!
and thank them for supporting open source development. Or, consider us for printing services outside of your machines capabilities. Print service requests can be sent to d.menzel@insanityautomation.com and we will
respond typically within 1 working day. If you do not need anything printed or a 3D Printer but still want to contribute, you can support us through [Patreon](https://www.patreon.com/InsanityAutomation).
@@ -175,4 +206,4 @@ This is just one of many forks of Marlin. We don't try to bury that behind fancy
Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork.
While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own.
While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More