Compare commits

...

1234 Commits

Author SHA1 Message Date
InsanityAutomation 48f874ce32 Remove extra screen refreshes and obsolete box 2022-04-09 17:18:13 -04:00
thinkyhead fc50018b06 [cron] Bump distribution date (2022-04-05) 2022-04-05 00:01:35 +00:00
Scott Lahteine 32e6767b5a DOGM Display Sleep (#23992)
Co-authored-by: borland1 <barryorlando@hotmail.com>
2022-04-04 15:57:03 -05:00
DerAndere f22307a0af 🚸 Better M350, M114 with more axes (#23986)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-03 21:43:42 -05:00
Scott Lahteine 877e10205b 🏗️ Axis name arrays
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-04-03 21:03:23 -05:00
Scott Lahteine 8b8defeacc 🏗️ Extend AXIS_CHAR to include E
Co-Authored-By: DerAndere <26200979+DerAndere1@users.noreply.github.com>
2022-04-03 21:00:31 -05:00
Scott Lahteine f5daefb09d 🏗️ More 9-axis updates 2022-04-03 20:34:48 -05:00
thinkyhead 1fdad42c5f [cron] Bump distribution date (2022-04-04) 2022-04-04 00:17:29 +00:00
Giuliano Zaro 591fa8b753 🔧 Sanity-check SWITCHING_TOOLHEAD_X_POS (#23985) 2022-04-03 18:49:51 -05:00
John Robertson f7fff4d455 🧑‍💻 Define isr_float_t to assert a non-FPU float (#23969)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-03 18:47:55 -05:00
ellensp 283aca50ba 🌐 Update Russian language (#23978) 2022-04-03 18:46:05 -05:00
Giuliano Zaro 1bc9a530bd 🐛 Fix Bed/Chamber PID Autotune with MPCTEMP (#23983) 2022-04-03 18:44:45 -05:00
Scott Lahteine 01797f74dc ✏️ Fix HAS_GCODE_M876 2022-04-03 18:30:49 -05:00
Scott Lahteine ff07c2b375 ✏️ No such pin 2022-04-03 18:07:40 -05:00
Scott Lahteine 90289b0ca0 🌐 Rename "LCD Timeout" string 2022-04-03 16:59:46 -05:00
Scott Lahteine 19838d97be 🎨 Misc. adjustments, spacing 2022-04-03 16:59:43 -05:00
Scott Lahteine c4873a64ec 🧑‍💻 General and Axis-based bitfield flags (#23989) 2022-04-03 16:14:02 -05:00
Keith Bennett 7ce4a7f641 ✏️ Fix NOZZLE_PARK_Y_ONLY sanity-check (#23990) 2022-04-03 16:13:29 -05:00
thinkyhead 4f1967a0a5 [cron] Bump distribution date (2022-04-03) 2022-04-03 00:46:28 +00:00
Giuliano Zaro e4c7c550fc 🐛 Fix PID edit menu for Bed, Chamber (#23987) 2022-04-02 18:29:21 -05:00
thinkyhead d98c61cafb [cron] Bump distribution date (2022-04-02) 2022-04-02 00:01:39 +00:00
Scott Lahteine 931e243116 Draw flags followup 2022-04-01 04:57:41 -05:00
ellensp 0c366d3574 ✏️ Fix E3V2 MarlinUI draw flags (#23979) 2022-04-01 03:01:34 -05:00
tombrazier 72b2e2b2c7 ⚗️ Temperature Model Predictive Control (#23751) 2022-04-01 02:15:20 -05:00
thinkyhead 8fb65211fc [cron] Bump distribution date (2022-04-01) 2022-04-01 06:01:01 +00:00
DerAndere e5b651f407 Support for up to 9 axes (linear, rotary) (#23112)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-04-01 00:10:38 -05:00
Giuliano Zaro 2786592b62 📝 Obsolete freeze comment (#23964)
Followup to #23944
2022-03-31 21:22:26 -05:00
aegelsky 04ab653f5e 🐛 Fix MKS Gen. L - EEB (#23965) 2022-03-31 21:21:10 -05:00
Jon f15b1c16c9 🩹 SKR2 Pins DIAG flag (#23968)
Followup to #23050
2022-03-31 21:18:32 -05:00
Keith Bennett c7f03b820a 📌 SKR Mini V1.1 TMC UART Pins (#23970) 2022-03-31 21:16:11 -05:00
grauerfuchs 108cc4ba16 🐛 Fix MightyBoard Rev. E EX2, extra MOSFETs (#23976) 2022-03-31 21:15:06 -05:00
tombrazier ae53033cea ♻️ Refactor and fix ABL Bilinear (#23868) 2022-03-31 21:13:16 -05:00
Manianac 72a9a02c17 🐛 Use ADC_VREF for Filament Width ADC Vref (#23977) 2022-03-31 19:23:52 -05:00
thinkyhead 2dbb28f5e4 [cron] Bump distribution date (2022-03-30) 2022-03-30 00:26:34 +00:00
InsanityAutomation 49539463b8 🐛 Fix MarlinUI on Ender 3 S1 (#23949) 2022-03-29 04:41:33 -05:00
Scott Lahteine 6015ee2531 🎨 Combine common LPC1768 I2C code 2022-03-29 04:22:04 -05:00
Scott Lahteine 0752082b85 🎨 INI cleanup 2022-03-29 03:48:37 -05:00
Scott Lahteine d6fcae40c4 💥 Rename ExtUI settings methods 2022-03-29 03:40:50 -05:00
Scott Lahteine 4edfb690dd 💚 Lock CI testing to PlatformIO 5.2.5 2022-03-29 03:24:15 -05:00
John Lagonikas 51d4c5abea ✏️ Fix parking extruder compile (#23961)
Followup to d3e3e6a491
2022-03-29 03:13:45 -05:00
thinkyhead 0b669067b9 [cron] Bump distribution date (2022-03-29) 2022-03-29 00:31:43 +00:00
Ludy 59f2f4fd47 🐛 Fix MMU2 buzz (#23950)
Followup to #23943
2022-03-27 20:20:54 -05:00
David Forrest bdc2b2b965 🔨 Fix Makefile GCC warning (#23957) 2022-03-27 20:19:02 -05:00
thinkyhead d806a668e8 [cron] Bump distribution date (2022-03-28) 2022-03-28 00:01:49 +00:00
Scott Lahteine d95dca94b9 🔨 Update TMC26XStepper link 2022-03-26 21:58:19 -05:00
thinkyhead 4a54f8469e [cron] Bump distribution date (2022-03-27) 2022-03-27 00:01:26 +00:00
Giuliano Zaro 692f42ee7d Configurable FREEZE pin state (#23948) 2022-03-26 18:22:41 -05:00
ellensp 20b5615305 Configurable FREEZE pin state (#23944)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-25 22:44:22 -05:00
Scott Lahteine b1958a43fc 🐛 Fix pulldown sanity check 2022-03-25 21:16:00 -05:00
Scott Lahteine 959c559c43 🔨 Try out v3 actions 2022-03-25 20:54:01 -05:00
ellensp f1471c1549 🐛 Fix MMU2 buzz (#23943)
Followup to 89a9c3a391
2022-03-25 20:03:43 -05:00
thinkyhead 80c4abc2e1 [cron] Bump distribution date (2022-03-26) 2022-03-26 00:06:22 +00:00
Robby Candra b7ffcd6941 STATUS_MESSAGE_TIMEOUT_SEC (#23135)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-25 18:34:20 -05:00
Scott Lahteine fd742616ba 🚸 Clear "heating/cooling" message on temp reached 2022-03-25 18:06:03 -05:00
Scott Lahteine 8dfdf51678 🎨 Format, use status macros 2022-03-25 18:06:03 -05:00
Scott Lahteine 4ff063440d 🐛 Fix status_printf alert level 2022-03-25 18:06:03 -05:00
Scott Lahteine 6b55eec9bb 🩹 Print English to serial out 2022-03-25 18:06:03 -05:00
Scott Lahteine 4a50d89bdb ✏️ Encoder noise followup
Followup to #23925
2022-03-24 20:29:50 -05:00
thinkyhead 867e274172 [cron] Bump distribution date (2022-03-25) 2022-03-25 00:01:44 +00:00
Oleg Belov d189cda616 📌 Custom cable for Mini 12864 V1 + SKR Mini E3 V3.0 (#23936) 2022-03-24 18:12:35 -05:00
Serhiy-K e119d9bae9 🌐 Update Ukrainian language (#23935) 2022-03-24 18:07:58 -05:00
ellensp 0d3f79e6d6 🩹 Wrap endstop_diag.cpp (#23931) 2022-03-24 18:06:28 -05:00
thinkyhead b44357db9d [cron] Bump distribution date (2022-03-24) 2022-03-24 00:01:46 +00:00
Scott Lahteine 0b32c3900f 🧑‍💻 Improve STATUS_BED_X 2022-03-23 00:31:13 -05:00
Scott Lahteine 6b47db3a68 🎨 General cleanup, comments 2022-03-23 00:31:13 -05:00
Scott Lahteine a80a303cbe 🧑‍💻 EXTRUDER_LOOP macro 2022-03-23 00:31:13 -05:00
Scott Lahteine 8ba6e8a74d 🎨 Clean up tool change with tool sensor 2022-03-23 00:31:13 -05:00
Scott Lahteine e458aa41fc 🔨 Fix 'mftest -s' 2022-03-23 00:31:13 -05:00
Scott Lahteine a63205a034 🩹 Fix ADC math overflow 2022-03-23 00:31:13 -05:00
Scott Lahteine 92d3a038c2 🧑‍💻 PIO --silent in build_example 2022-03-23 00:31:13 -05:00
Scott Lahteine 258a2ed112 🎨 Apply _TERN where possible 2022-03-23 00:31:13 -05:00
Scott Lahteine 98dcb9e614 🔨 Suppress MMU2 resume_position warning 2022-03-23 00:31:13 -05:00
Scott Lahteine de8e436110 🧑‍💻 Add neo.set_background_color(rgbw) 2022-03-23 00:31:13 -05:00
Scott Lahteine 58fcaebe76 🔧 Sanity-checks for PULLDOWN, SINGLENOZZLE 2022-03-23 00:31:13 -05:00
Scott Lahteine c47c52c146 🔧 No Switching Nozzle with MMU2 2022-03-23 00:31:13 -05:00
Scott Lahteine d3e3e6a491 🩹 No PE_MAGNET_ON_STATE without PARKING_EXTRUDER 2022-03-23 00:31:13 -05:00
Scott Lahteine ef07c2c8dd 🔨 Allow I2CPE_ENC_n_INVERT set to false 2022-03-23 00:31:13 -05:00
thinkyhead e183e3814d [cron] Bump distribution date (2022-03-23) 2022-03-23 00:01:36 +00:00
Scott Lahteine 2baf49af93 🚸 Allow one servo with cutter on RAMPS 2022-03-22 18:01:42 -05:00
thinkyhead 10ce88f810 [cron] Bump distribution date (2022-03-21) 2022-03-21 06:00:58 +00:00
Fredrik Andersson a8cf2909f7 Encoder button noise filter (#23925) 2022-03-20 20:14:45 -05:00
Scott Lahteine 032e5c9936 ✏️ Misc. cleanup 2022-03-20 19:12:19 -05:00
thinkyhead 3c09cf2e5e [cron] Bump distribution date (2022-03-19) 2022-03-19 00:01:41 +00:00
Mark a02a1def62 📌 PandaPi V2.9 – Standalone mode (#23908) 2022-03-17 23:49:47 -05:00
John Robertson 1f1571f726 ESP32 - Hardware PWM for fan, cutter, servos (#23802) 2022-03-17 22:21:53 -05:00
ellensp 9b2c06045d 🩹 Fix xatc EEPROM debug (#23911) 2022-03-17 22:17:41 -05:00
tombrazier 631e35bfd6 ️ Fix noisy ADC - 16x oversampling with 12-bit ADC (#23867) 2022-03-17 22:15:26 -05:00
Ludy bf7176fba9 🩹 Fix redundant var declaration (#23913) 2022-03-17 20:55:33 -05:00
thinkyhead 99413ae2f4 [cron] Bump distribution date (2022-03-18) 2022-03-18 00:01:51 +00:00
John Robertson 653c847bfb 🐛 MKS TinyBee - 2.5V ADC Vref (#23903) 2022-03-17 14:35:33 -05:00
thinkyhead acade2890a [cron] Bump distribution date (2022-03-14) 2022-03-14 00:28:47 +00:00
Jelmer van der Stel f4b41fcc3f 🩹 Fix DWIN E3V2 display issues by allowing re-init (#23879) 2022-03-13 17:20:30 -05:00
Mrnt 9bc1d05df3 🧑‍💻 Allow DIGIPOT Rsx / Vrefmax override (#23885) 2022-03-13 17:17:35 -05:00
Julien Staub 40ed3c5f89 🐛 Fix STM32F1 HAL build (#23897)
Followup to #23357
2022-03-13 17:11:31 -05:00
Julien Staub de87f5309d 🩹 Fix ExtUI build with Host Keepalive disabled (#23898) 2022-03-13 17:09:32 -05:00
InsanityAutomation a9c30cb9c1 📝 Fix X2_MAX_POS comment (#23873) 2022-03-13 17:00:35 -05:00
Scott Lahteine 4d40764802 📝 Fix DEFAULT_DUAL_X_CARRIAGE_MODE comment 2022-03-13 16:59:43 -05:00
Scott Lahteine 0c0ef9e548 🚸 Test LIN_ADVANCE in a pins file 2022-03-13 16:46:08 -05:00
Mathew Winters a58d35d765 ️ G12 - Only require used axes to be homed (#23422)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-12 19:13:41 -06:00
thinkyhead ea3d6ecea9 [cron] Bump distribution date (2022-03-13) 2022-03-13 01:07:44 +00:00
Keith Bennett 2f6a6f3b55 🔨 Drop extraneous build flag (#23862) 2022-03-12 18:23:29 -06:00
Nick 9c9300ff9d 🐛 Fix Chiron new TFT SD print after reset (#23855) 2022-03-12 17:47:47 -06:00
Scott Lahteine e354cd15b2 🩹 Fix FSTR / PSTR usage 2022-03-12 17:44:58 -06:00
Scott Lahteine 89a9c3a391 🧑‍💻 Add standard BUZZ types 2022-03-12 17:44:58 -06:00
Ludy 0bf319c57a 🌐 Fix, add some menu labels (#23895) 2022-03-12 17:36:23 -06:00
Scott Lahteine bff55ea605 🐛 Fix UBL 'G29 Q1' bug 2022-03-12 16:00:48 -06:00
Scott Lahteine 623c6b720b 🧑‍💻 Add ExtUI::onLevelingDone, match DWIN to ExtUI 2022-03-12 16:00:48 -06:00
thinkyhead 5bbb345b55 [cron] Bump distribution date (2022-03-12) 2022-03-12 00:43:48 +00:00
BIGTREETECH 8e87e4cb5e 🧑‍💻 STM32G0Bx : Use PLLQ for USB clock (#23870) 2022-03-11 18:23:18 -06:00
kisslorand 0563626286 🚸 M401 H - Report BLTouch HS State (#23724) 2022-03-11 18:21:08 -06:00
GatCode 2d8ec4fe9e 📌 Fix, extend Index Rev03 Mobo (#23851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-11 17:56:31 -06:00
Giuseppe499 df4e022a48 🚸 Fix, extend X Axis Twist Compensation (#23745)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-03-11 17:12:03 -06:00
tombrazier b123fa763d 🐛 Restore STM32 / STM32F1 12-bit ADC (#23871) 2022-03-11 17:09:04 -06:00
Miguel Risco-Castillo 79b38e0e14 🚸 Update Ender3 V2/S1 Pro UI (#23878) 2022-03-11 14:06:49 -06:00
ellensp bd3ecc3ea0 fix g29 (#23887) 2022-03-11 07:51:25 -07:00
Scott Lahteine f516c9e552 🐛 Fix UI include
Followup to ~2
2022-03-11 02:56:24 -06:00
ellensp b9ef0f486a 📝 Update laser/spindle docs link (#23886) 2022-03-11 02:52:35 -06:00
Scott Lahteine 48b5362cf0 🔧 DWIN_CREALITY_LCD_ENHANCED => DWIN_LCD_PROUI
Followup to #23624
2022-03-10 22:15:35 -06:00
thinkyhead 4e467e98c4 [cron] Bump distribution date (2022-03-11) 2022-03-11 00:28:58 +00:00
Scott Lahteine 813b6af724 🩹 Fix 'hdsl' warning 2022-03-10 17:35:03 -06:00
Scott Lahteine 4b84b28c14 🚸 Improve M422 error messages 2022-03-10 17:28:54 -06:00
Keith Bennett c6a6d35f0d 🚸 TH3D EZBoard V2 TMC slave addresses (#23857) 2022-03-10 17:20:13 -06:00
thinkyhead 323ac9488c [cron] Bump distribution date (2022-03-05) 2022-03-05 00:25:32 +00:00
Scott Lahteine d2c503eea2 ✏️ num-to-string followup 2022-03-04 16:55:01 -06:00
Scott Lahteine 87e19fe5e7 🔧 Mark Thermal Variance Monitor EXPERIMENTAL 2022-03-04 16:07:38 -06:00
Jack Wilsdon 0e1ecf1fe0 🐛 Emergency Parser with STM32 Mass Storage (#23827) 2022-03-04 15:59:38 -06:00
tombrazier 687dc9ad4d 🩹 Improve and apply XATC reset() (#23840) 2022-03-04 15:57:51 -06:00
Scott Lahteine 755c196cfa 🚸 12345.6 num-to-string 2022-03-04 15:28:43 -06:00
thinkyhead 445c3c6514 [cron] Bump distribution date (2022-03-03) 2022-03-03 00:27:06 +00:00
Scott Lahteine 6aee2c755b ️ Use seen_test in M422 2022-03-02 17:58:23 -06:00
Scott Lahteine bb2f100fcd 🚸 Use Z_STEPPER_ALIGN_STEPPER_XY to enable 2022-03-02 17:50:55 -06:00
tombrazier 2e39bc30fd 🚸 Universal X_AXIS_TWIST_COMPENSATION (#23828) 2022-03-02 16:13:46 -06:00
Scott Lahteine b07a34eb6b 🐛 Fix M_State_grbl when G29 calls G28 2022-03-02 16:04:17 -06:00
thinkyhead fd1a5fe366 [cron] Bump distribution date (2022-03-02) 2022-03-02 00:26:24 +00:00
Julien Staub c9fe822920 Weedo 62A Tina2 / Monoprice Cadet (#23817) 2022-03-01 16:42:20 -06:00
InsanityAutomation 9ef01d43bb ️ E3V2 blank bg for S1 compatibility (#23822) 2022-03-01 16:25:30 -06:00
ellensp 7d7439c4b6 🚨 Fix BLTouch 5V pin tolerance checks (#23823) 2022-03-01 16:22:36 -06:00
tombrazier 6b7868d943 🐛 Fix backlash applied steps when config changes (#23826)
Followup to #23814
2022-03-01 16:14:52 -06:00
ellensp 15de14dd89 🔨 Fix 'renamed' env (platform = ststm32) (#23831) 2022-03-01 16:11:26 -06:00
Ludy d09a2ee80a 🌐 Update German language (#23832) 2022-03-01 16:09:11 -06:00
thinkyhead 1aa988c63c [cron] Bump distribution date (2022-02-28) 2022-02-28 06:07:09 +00:00
kisslorand 9ea6a588c3 M21 P / S / U - Select Volume (#23780)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-27 20:38:11 -06:00
thinkyhead 4b0e84d9f3 [cron] Bump distribution date (2022-02-27) 2022-02-27 00:25:43 +00:00
M. FURIC Franck 0e7be8e8c4 LCD Backlight Timer (#23768)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-26 16:54:04 -06:00
ellensp 12b038dde5 🔧 SHOW_CUSTOM_BOOTSCREEN sanity-check (#23807) 2022-02-26 16:50:17 -06:00
sam c2c257ace7 📺 BTT SKR Mini E3 with Fysetc V2.1 / MKS V3 / BTT V1 Mini 12864 (#23793) 2022-02-26 16:48:59 -06:00
ellensp f7f29c6b5e MKS Robin Nano 3.1 (#23795) 2022-02-26 16:45:33 -06:00
ellensp 358ffddef8 🐛 ESP32 _delay_ms, fix u8g_esp32_spi.cpp (#23810) 2022-02-26 14:34:44 -06:00
tombrazier 87c4cd20e5 🐛 Fix steps-to-mm with backlash (#23814)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-26 14:30:33 -06:00
thinkyhead 103b5f1ead [cron] Bump distribution date (2022-02-25) 2022-02-25 06:07:00 +00:00
Scott Lahteine 1420427607 🎨 Move PROPORTIONAL_FONT_RATIO 2022-02-24 18:47:57 -06:00
thinkyhead 22b99a2e38 [cron] Bump distribution date (2022-02-23) 2022-02-23 18:03:44 +00:00
ellensp 28f65301cf 🔨 More renamed.ini envs (#23786) 2022-02-23 10:36:39 -06:00
thinkyhead 432927df01 [cron] Bump distribution date (2022-02-22) 2022-02-22 06:06:52 +00:00
Scott Lahteine 60c89709df 🐛 Ibid. 2022-02-21 23:07:09 -06:00
ellensp f03c367739 🐛 Fix TMC26X CS pins init (#23778) 2022-02-21 21:16:57 -06:00
Scott Lahteine 92f85e877d 🔨 Workspace file with recommendation 2022-02-21 20:54:43 -06:00
Keith Bennett 6b96636b9b 🔧 Warning for MK3_FAN_PINS (#23727) 2022-02-21 20:47:53 -06:00
Scott Lahteine 963049ddc3 Dyze Design PT100 Amplifier Board (#23760) 2022-02-21 19:56:12 -06:00
Scott Lahteine 9530df4816 📝 Update Toolchange FS comments 2022-02-21 19:56:12 -06:00
tombrazier 8f8427ec8f ️ Apply PTC on all probing (#23764)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-21 19:15:52 -06:00
ellensp a9682f2e97 📌 Creality RAMPS optional SD_DETECT_PIN (#23740)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-21 18:31:44 -06:00
thinkyhead 28ceb1ed0f [cron] Bump distribution date (2022-02-19) 2022-02-19 00:25:05 +00:00
Scott Lahteine 44eff9a233 ♻️ Refactor HAL as singleton (#23357) 2022-02-18 14:38:23 -06:00
GHGiampy fee85b318e ✏️ Fix getLFNName parameter (#23752) 2022-02-17 18:45:42 -06:00
jefflessard cba8d4f401 🚨 Fix TEMP_SENSOR_BOARD warnings (#23754) 2022-02-17 18:44:41 -06:00
ellensp 3ec5bbfb13 🐛 Fix HAS_TMC26X feature path (#23757) 2022-02-17 18:37:22 -06:00
thinkyhead 2ba1153fd8 [cron] Bump distribution date (2022-02-18) 2022-02-18 00:23:00 +00:00
Scott Lahteine 7b25b9ec5b 🐛 Patch Creality RAMPS FET / FAN pins
Improvement for multi-hotend setup by TH3D.
2022-02-17 14:41:56 -06:00
thinkyhead 10c0b9423d [cron] Bump distribution date (2022-02-17) 2022-02-17 00:19:04 +00:00
Simon Pilepich 5439da6775 🧑‍💻 Update MightyBoard FET pins (#23728) 2022-02-15 20:46:09 -06:00
thinkyhead e507aa09c5 [cron] Bump distribution date (2022-02-16) 2022-02-16 00:19:06 +00:00
Scott Lahteine 98a17cd60d ♻️ Rename XATC z_values => z_offset 2022-02-15 15:09:09 -06:00
Giuseppe499 aae08e9b0d 🐛 Fix XATC divide-by-zero (#23743) 2022-02-15 13:21:05 -06:00
thinkyhead cd4c1be641 [cron] Bump distribution date (2022-02-14) 2022-02-14 00:20:02 +00:00
InsanityAutomation 03516f0519 ♻️ No ui.reinit_lcd on any ExtUI (#23722)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-13 13:44:24 -06:00
Scott Lahteine e8cc050e90 📝 Update conditionals descriptions 2022-02-13 13:12:44 -06:00
Scott Lahteine cf013a7f3e 🔧 HAS_LCDPRINT conditional 2022-02-13 12:55:26 -06:00
thinkyhead cda4682861 [cron] Bump distribution date (2022-02-12) 2022-02-12 00:21:36 +00:00
John Robertson b4d3e1da34 More Nozzle Park move options (#23158)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-11 15:04:47 -06:00
ellensp 26e4f70d7c ✏️ Fix E3V2 display with BTT SKR Mini E3 v3 (#23719) 2022-02-11 13:50:07 -06:00
ellensp fb86b6b3e3 🚸 Align MKS UI heated bed status with HAS_MULTI_HOTEND (#23718) 2022-02-11 13:39:34 -06:00
Scott Lahteine df98bd26b3 💥 Change 'M42 M' to 'M42 T' 2022-02-11 09:36:52 -06:00
thinkyhead be8f4f47f9 [cron] Bump distribution date (2022-02-11) 2022-02-11 00:19:49 +00:00
Scott Lahteine 3d2b2ca790 🎨 Misc. DGUS cleanup 2022-02-10 16:08:04 -06:00
Thomas White f2d1770cee Pxmalion Core i3 (#23711) 2022-02-10 14:02:45 -06:00
Scott Lahteine 267a44c95c 🧑‍💻 Wrap MMU1 pins 2022-02-10 13:58:50 -06:00
espr14 5520aa3a10 🩹 Simplify quick homing feedrate (#23714)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-10 13:28:38 -06:00
Mads Ynddal 191d25f917 🐛 Fix XYZEval::set(XY, Z) and (XY, Z, E) (#23704)
Fix regression in #21953

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-10 12:02:31 -06:00
thinkyhead ae96892612 [cron] Bump distribution date (2022-02-10) 2022-02-10 00:20:36 +00:00
MOHAMMAD RASIM a323d6732b 🚸 Fix, Improve Power-Loss Recovery (#22828)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-02-09 12:29:34 -06:00
ellensp 0a24f858f3 🚸 Restore active tool after ABL G29 (#23692)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-02-09 10:46:53 -06:00
thinkyhead 1e18ce6e5d [cron] Bump distribution date (2022-02-09) 2022-02-09 00:23:37 +00:00
Scott Lahteine 2d04e5733a 🧑‍💻 Drop hostui.flag 2022-02-08 18:02:28 -06:00
Taylor Talkington 7763f9385d Optional HOST_STATUS_NOTIFICATIONS (#22833) 2022-02-08 17:36:06 -06:00
Scott Lahteine f84eb27c4c 🔧 Update MIXING_EXTRUDER sanity checks
Fixing #23693
2022-02-08 17:03:38 -06:00
thinkyhead 067faaceb1 [cron] Bump distribution date (2022-02-08) 2022-02-08 00:29:22 +00:00
InsanityAutomation c2fa7e5942 PLR accessors for Ext UI (#23687) 2022-02-07 16:24:46 -06:00
InsanityAutomation 3e93def08e 🩹 Fix Maple HAL compile errors (#23685) 2022-02-07 16:22:18 -06:00
ellensp 569f867ea9 🚨 Cleaner errors for renamed envs (#23690) 2022-02-07 14:50:08 -06:00
InsanityAutomation a8f95e3252 🧑‍💻 Generic Maple STM32F103RC envs for devs (#23686) 2022-02-07 14:40:14 -06:00
thinkyhead 029ff158bc [cron] Bump distribution date (2022-02-07) 2022-02-07 00:19:00 +00:00
Bob Kuhn d987e23d5b 🐛 Fix init of delta safe height (for G29, G33, etc.) (#23622) 2022-02-06 08:35:18 -06:00
thinkyhead dd4f93f90b [cron] Bump distribution date (2022-02-06) 2022-02-06 00:23:02 +00:00
ellensp a8f3810f39 🐛 Fix missing u8g_esp32_spi (#23562) 2022-02-05 10:52:18 -06:00
Scott Lahteine 0564cb188f 🚸 Enhanced UI => Professional UI - with updates (#23624) 2022-02-05 10:30:17 -06:00
GHGiampy 6af5cb295c 🔨 Clean up upload.py (#23679) 2022-02-05 10:23:44 -06:00
John Lagonikas 57cee04c89 🐛 Fix dual MAX31865 initialization issues (#23496) 2022-02-04 19:10:59 -06:00
Bob Kuhn 668020777f 🩹 Prevent Z error with UBL + Park unscaled E move (#23568) 2022-02-04 19:00:35 -06:00
ellensp 385b0c0106 🚨 Deprecate Maple build (#23661) 2022-02-04 18:51:00 -06:00
GHGiampy 5439a34c4b 🩹 Init brightness/contrast later (#23645) 2022-02-04 18:44:21 -06:00
Stephen Hawes 1be3b8df4a 🐛 Fix Index Mobo Rev03 upload (#23676) 2022-02-04 18:42:15 -06:00
Kelroy f61f8e3022 SAMD51 Bricolemon / Bricolemon Lite boards (#23658) 2022-02-04 18:40:35 -06:00
thinkyhead f2973ebd5f [cron] Bump distribution date (2022-02-05) 2022-02-05 00:15:43 +00:00
Bruno Henrique de Paula d99d0c8a10 📌 Distinct BOARD_CREALITY_V422 (#23674) 2022-02-04 15:57:43 -06:00
Bones 076d8e83ea Add ZRIB v53, patch G35 Z drop, related issues (#23636) 2022-02-04 15:52:57 -06:00
Scott Lahteine a1ffd59931 🧑‍💻 Relocate a variant 2022-02-04 15:49:39 -06:00
Bob Kuhn 7ef9e6df98 🐛 Fix RUMBA + MKS Mini12864 Neopixel pin (#23646) 2022-02-04 13:34:48 -06:00
Mike La Spina 71d54dab3c 🍻 STM32 set_pwm_duty "on/off" for digital pins (#23665) 2022-02-04 13:33:52 -06:00
Scott Lahteine f2a83bc245 💡 Comment variant timers 2022-02-04 12:40:26 -06:00
thinkyhead d5d3f28bfe [cron] Bump distribution date (2022-02-04) 2022-02-04 18:04:39 +00:00
Mike La Spina 8e8409ed67 🔧 Sanity-check AVR D9 Fan PWM / SPEAKER Timer2 (#23672) 2022-02-04 10:45:34 -06:00
ellensp 1636325b72 🐛 Creality v4 cleanup, pin correction (#23666) 2022-02-04 10:24:38 -06:00
thinkyhead e4658c321f [cron] Bump distribution date (2022-02-02) 2022-02-02 00:20:21 +00:00
GHGiampy f07fc7e96f 🚸 Case Light, LED menus for E3V2 DWIN Enhanced UI (#23590) 2022-02-01 17:35:38 -06:00
Scott Lahteine 1d35bb5d33 🔧 Board temp sensor check 2022-02-01 17:28:29 -06:00
Maeyanie b637617deb 🐛 Fix M852 report (#23660) 2022-02-01 17:27:14 -06:00
thinkyhead c61a692e7f [cron] Bump distribution date (2022-02-01) 2022-02-01 00:19:16 +00:00
Timothy Hoogland 59dbf27385 🐛 Fix EZBoard V2 Environment for OpenBLT (#23659) 2022-01-31 14:02:07 -06:00
thinkyhead a1cfb15e40 [cron] Bump distribution date (2022-01-30) 2022-01-30 12:26:01 +00:00
ellensp 69c7b8c1de 🐛 Fix FYSETC S6, S6 V2 Serial RX pins (#23642) 2022-01-30 05:34:03 -06:00
Mike La Spina 127a3ad831 🐛 Fix AVR 644/1284 Timer / PWM conflicts (#23629) 2022-01-30 05:31:56 -06:00
Timothy Hoogland 566b26a72e 🐛 Fix EZBoard V2 timer conflict (#23648) 2022-01-30 05:26:37 -06:00
thinkyhead 79fea49868 [cron] Bump distribution date (2022-01-28) 2022-01-28 00:18:24 +00:00
Scott Lahteine afdaa17964 🧑‍💻 Simplify Fast PWM timer macros 2022-01-27 07:05:26 -06:00
thinkyhead 7b12f985d3 [cron] Bump distribution date (2022-01-27) 2022-01-27 00:18:30 +00:00
Mike La Spina 7fb65309aa 🐛 Fix SPI DMA and default mode (#23627)
Followup to #23464
2022-01-26 14:01:22 -06:00
Scott Lahteine 9c1eaafe88 📝 Update Creality 4.2.2 driver warning 2022-01-26 13:40:29 -06:00
Keith Bennett 5b35f3a955 🚸 Better "Bed Tramming Done" dialog (#23616)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-01-26 12:33:10 -06:00
thinkyhead 9eab577765 [cron] Bump distribution date (2022-01-26) 2022-01-26 02:01:35 +00:00
Scott Lahteine 91c7db027f BOARD_CREALITY_V24S1_301 (#23620)
Co-Authored-By: Miguel Risco-Castillo <mriscoc@users.noreply.github.com>
2022-01-25 18:33:30 -06:00
ellensp b44263eb5b FYSETC TFT81050 CI Test (#23604) 2022-01-25 18:08:15 -06:00
Scott Lahteine 7af8e23254 ✏️ Fix MKS enum 2022-01-25 17:22:16 -06:00
Scott Lahteine ab46b7e2f2 🧑‍💻 HAS_MARLINUI_MENU, HAS_MANUAL_MOVE_MENU 2022-01-25 15:47:37 -06:00
thinkyhead 231150ab77 [cron] Bump distribution date (2022-01-25) 2022-01-25 12:11:56 +00:00
Timofey Titovets 5b9afdfb25 ️ Tuned Thermistor 66 (T-D500) (#23585) 2022-01-25 03:36:09 -06:00
Lars 8badf2d71f 🐛 Fix DGUS_Reloaded G-code execution (#23592) 2022-01-25 03:30:45 -06:00
Keith Bennett 7f97ba9cdb 🐛 Fix Creality DWIN LCD with SKR Mini E3 V3 (#23593) 2022-01-25 03:25:19 -06:00
DejitaruJin 539a893694 🩹 Fix DWIN float debugging (#23601) 2022-01-25 02:52:23 -06:00
Keith Bennett f6ea8d1185 🔨 Creality RCT6 (256K) variants (#23599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-25 02:09:53 -06:00
thinkyhead 02b01c773e [cron] Bump distribution date (2022-01-22) 2022-01-22 18:04:48 +00:00
Scott Lahteine 8169253a7d 🧑‍💻 Fix up some AUX / EXP pins (#23577) 2022-01-22 10:19:26 -06:00
Mike La Spina f6e8622360 🐛 Fix LCD contrast/brightness init (#23567)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-22 10:16:41 -06:00
Scott Lahteine d5f2334140 ♻️ Adjust LCD init, contrast default, settings load 2022-01-22 10:14:47 -06:00
thinkyhead 37ee9a47ab [cron] Bump distribution date (2022-01-21) 2022-01-21 00:17:50 +00:00
John Lagonikas 7415c38790 🩹 Fix power.h compile (#23573) 2022-01-20 05:58:36 -06:00
Scott Lahteine 900bcbeeca 🩹 BOARD_INIT followup 2022-01-19 18:33:56 -06:00
thinkyhead 56f065db05 [cron] Bump distribution date (2022-01-20) 2022-01-19 18:33:56 -06:00
Scott Lahteine 4686dc4c81 🧑‍💻 Add chmod to mfprep 2022-01-19 05:12:03 -06:00
Scott Lahteine a963c5f9f3 🩹 Fix Robin Nano BOARD_INIT 2022-01-19 05:11:18 -06:00
Scott Lahteine 0f2ba5b92b 📝 Tweak G26 Q description 2022-01-19 03:31:36 -06:00
Scott Lahteine 5179f55bf9 🎨 LCD_SCREEN_ROT_* => LCD_SCREEN_ROTATE 2022-01-19 03:28:19 -06:00
Scott Lahteine fd595aa01b 🎨 Misc. style and cleanup 2022-01-19 02:20:32 -06:00
John Lagonikas 0aea3ae058 🐛 Fix conditional M81 suicide (#23549) 2022-01-19 02:13:47 -06:00
thinkyhead 383afd79bc [cron] Bump distribution date (2022-01-19) 2022-01-19 00:18:14 +00:00
Scott Lahteine 18e1128f70 📌 RAMPS AUX 1-2 headers (#23544) 2022-01-18 03:18:37 -06:00
Fahad Alduraibi e9ef609b07 🐛 Fix RAMPS 1.4 Plus EXP headers (#23523) 2022-01-18 03:16:39 -06:00
Salvatore Bramante df69d72273 🐛 Fix Octopus v1.x probe pin (#23548) 2022-01-18 03:09:06 -06:00
Scott Lahteine e2446dc561 💥 Generalize extra debugging 2022-01-18 03:01:09 -06:00
Keith Bennett 8c83ddd201 🔨 Suppressible CONFIGURATION_EMBEDDING warning (#23545) 2022-01-18 02:30:52 -06:00
GHGiampy 1e246d65ad Long filename open/create/write (#23526)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2022-01-18 00:56:11 -06:00
thinkyhead 0c0ba6db7d [cron] Bump distribution date (2022-01-18) 2022-01-18 00:21:03 +00:00
Taylor Talkington d8f73997b6 💄 Improve Ender3 v2 DWIN MarlinUI (#23369)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 07:07:45 -06:00
John Lagonikas 830d728ec1 🚸 Suppressible pin warnings (#23530)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 06:56:25 -06:00
thinkyhead b9eef9ffb4 [cron] Bump distribution date (2022-01-17) 2022-01-17 12:13:17 +00:00
zerkix 9285b6b9ed 🐛 Finish and organize temp sensors (#23519)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2022-01-17 00:14:35 -06:00
Anson Liu af93dbfb4f 🐛 Fix Ultimain 2 E-autofan pin mapping (#23466) 2022-01-16 23:39:09 -06:00
Miguel Risco-Castillo 6cfa011c10 🐛 Fix PLR for E3V2 Enhanced UI (#23543) 2022-01-16 23:36:03 -06:00
Taylor Talkington 3315ff8856 💄 MarlinUI+DOGM leveled bed bitmaps (#23539) 2022-01-16 23:34:50 -06:00
Scott Lahteine 9778b67e84 🩹 Fan speed followup 2022-01-15 23:17:39 -06:00
A. Herlas cc87695ae7 Z Offset Wizard for TFT_LVGL_UI (English) (#23489) 2022-01-15 23:08:31 -06:00
Sola c79174e862 ️ SPI+DMA+interrupt method (STM32 / MKS UI) (#23464) 2022-01-15 23:07:37 -06:00
Mike La Spina 09909512d7 🐛 Fix, improve PWM on AVR (#23520) 2022-01-15 23:05:53 -06:00
thinkyhead 213b5d0d38 [cron] Bump distribution date (2022-01-16) 2022-01-16 01:11:43 +00:00
thinkyhead da8e21f1a6 [cron] Bump distribution date (2022-01-15) 2022-01-15 01:06:49 +00:00
Scott Lahteine 80e978ec8a 🔧 Skip unused axis names 2022-01-14 06:16:14 -06:00
George Fu d225445ab1 🔨 Set upload_command for CHEETAH v20 (#23515) 2022-01-14 04:10:35 -06:00
Scott Lahteine 7bc9d15514 🩹 Followup to extra axes 2022-01-14 03:43:14 -06:00
Scott Lahteine 40481947fc 🧑‍💻 Misc. updates for extra axes (#23521) 2022-01-14 03:14:13 -06:00
thinkyhead 70d3607f56 [cron] Bump distribution date (2022-01-14) 2022-01-14 01:09:42 +00:00
thinkyhead 498b4b3440 [cron] Bump distribution date (2022-01-13) 2022-01-13 01:10:52 +00:00
Mike La Spina 2cfde39eca 🐛 Fix, improve PWM on AVR (#23463) 2022-01-12 17:28:53 -06:00
Keith Bennett 3e2a38b653 📝 KHz => kHz (#23512) 2022-01-12 10:24:56 -06:00
Lefteris Garyfalakis 9086082c1f 🚸 Fix E3V2 Enhanced UI time labels (#23502) 2022-01-12 10:22:00 -06:00
Jim Watson e16813d713 🐛 Fix SHOW_REMAINING_TIME compile (#23503) 2022-01-12 10:13:21 -06:00
ellensp 3d79b55c15 🚑️ Fix M105 regression (#23505)
Fixes #23504
2022-01-12 09:57:36 -06:00
ellensp a058a8a8b2 🐛 Fix Arduino build issues (#23510) 2022-01-12 09:53:36 -06:00
Scott Lahteine 84ed749954 🧑‍💻 Move PB0 init for MKS_ROBIN_NANO 2022-01-12 09:47:44 -06:00
Scott Lahteine 24d1d3eb5c 💡 Misc. cleanup, comments 2022-01-12 09:47:44 -06:00
thinkyhead 89f1391306 [cron] Bump distribution date (2022-01-12) 2022-01-12 01:07:56 +00:00
Scott Lahteine ab797a0995 🎨 Misc. spindle/laser adjustments 2022-01-10 20:29:09 -06:00
Scott Lahteine 07bffdf4bc 🧑‍💻 Adjust FastIO AVR timer enums, macros 2022-01-10 20:28:12 -06:00
Scott Lahteine 02b29c0fec 📝 kHz => KHz 2022-01-10 19:49:03 -06:00
thinkyhead 476028d476 [cron] Bump distribution date (2022-01-11) 2022-01-11 01:09:12 +00:00
mistic100 2ded50ba3f 🚸 Wait for cooldown in MarlinUI power-off (#23476) 2022-01-10 07:08:41 -06:00
Scott Lahteine 224b6e5af9 🩹 Fix some logical axis usage 2022-01-10 05:51:16 -06:00
Scott Lahteine 08b6597471 🎨 Followup to #23462 2022-01-10 04:49:03 -06:00
Scott Lahteine 9665a4434c 🧑‍💻 Fewer string macros 2022-01-10 02:51:50 -06:00
DerAndere a719020348 🚸 Include extra axes in position report (#23490) 2022-01-10 02:44:16 -06:00
thinkyhead 0dfc17ca60 [cron] Bump distribution date (2022-01-10) 2022-01-10 01:06:10 +00:00
Scott Lahteine 80128ae456 🌐 Update auto home axis strings 2022-01-09 04:39:15 -06:00
David Ross Smith 13adcd5c08 🚑️ Fix preheat target bug
Fixes Jyers/Marlin#1651
2022-01-09 04:07:19 -06:00
Roman Moravčík 797859cf55 🌐 Update Slovak language (#23475) 2022-01-09 03:51:16 -06:00
Tanguy Pruvot 27d252c80b 📌 Improve Longer3D fan PWM (#23477) 2022-01-09 03:49:39 -06:00
Scott Lahteine 75d1f975a8 🔨 Rename (not copy) with board_build.rename 2022-01-09 03:48:17 -06:00
Miguel Risco-Castillo 6ce0c682bb 🚸 BLTouch HS menu item for DWIN Enhanced UI (#23480) 2022-01-09 02:37:09 -06:00
Miguel Risco-Castillo e0d19f9f41 🐛 Fix EEPROM_INIT_NOW build hash test (#23479) 2022-01-09 01:29:36 -06:00
Miguel Risco-Castillo 0026430835 🩹 Reset DWIN CrealityUI print progress on start (#23481) 2022-01-09 01:24:56 -06:00
GHGiampy 1363b43946 Firmware Upload via Binary Transfer (#23462) 2022-01-09 01:14:03 -06:00
Scott Lahteine 54f218e348 🔨 Get FIRMWARE_BIN from env 2022-01-09 01:06:19 -06:00
thinkyhead 5a9755e5bb [cron] Bump distribution date (2022-01-09) 2022-01-09 01:10:43 +00:00
ClockeNessMnstr 3949142214 🚸 Do G34 "Z Backoff" at full current 2022-01-08 14:09:25 -06:00
thinkyhead 9564d68484 [cron] Bump distribution date (2022-01-08) 2022-01-08 01:06:56 +00:00
thinkyhead 3eb794d6d5 [cron] Bump distribution date (2022-01-07) 2022-01-07 01:13:26 +00:00
jdegenstein 73624133c9 📌 LCD_FOR_MELZI for BTT E3 RRF (#23453) 2022-01-06 19:03:02 -06:00
Lefteris Garyfalakis 4d28c9d12b 🌐 Localize E3V2 Enhanced UI (#23424) 2022-01-06 05:30:41 -06:00
Anson Liu e99d95b770 📺 Tune ULTI_CONTROLLER encoder, enable PCA9632 (#23461) 2022-01-06 05:26:12 -06:00
Scott Lahteine 1bd921d6a6 🎨 Misc. cleanup, comments 2022-01-06 05:10:56 -06:00
Kyle Hu 8e490e84be 🐛 Fix Artillery Ruby (startup code, build flags) (#23446) 2022-01-06 01:54:04 -06:00
thinkyhead 15936d32f5 [cron] Bump distribution date (2022-01-06) 2022-01-06 01:13:30 +00:00
Scott Lahteine 9140016e02 🐛 Fix X2_HOME_TO_* 2022-01-05 11:50:53 -06:00
Mike La Spina 4ceba981b1 🐛 Define required endstop enums (#23425) 2022-01-05 06:14:40 -06:00
John Lagonikas 1fe07bf365 🩹 Fix M80, 1s delay (#23455) 2022-01-05 05:57:32 -06:00
Scott Lahteine c55b66bece 🔨 Strip CR in mftest > awk 2022-01-05 01:52:34 -06:00
Scott Lahteine cc919ae899 🐛 Fix strlen_P parameter error
Fixes #23447
2022-01-05 01:52:34 -06:00
thinkyhead e379a46639 [cron] Bump distribution date (2022-01-05) 2022-01-05 01:09:13 +00:00
thinkyhead e1ab7f3b75 [cron] Bump distribution date (2022-01-04) 2022-01-04 01:07:15 +00:00
John Lagonikas 9a194826e3 M81 D / S - Power-off Delay (#23396) 2022-01-03 10:11:39 -06:00
Scott Lahteine b8a376a28a 🩹 Fix RADDS+RRD encoder button 2022-01-03 09:18:10 -06:00
hwmland 90fc120182 🩹 RAMPS FET order overridable, E + Laser (#23428) 2022-01-02 23:54:12 -06:00
Jason Smith 554a2fc84a ⬆️ Assert newer GCC in PIO via atmelavr@~3.4 (#23432) 2022-01-02 23:27:22 -06:00
Jason Smith 6fd48a9881 💚 Fix Teensy CI test (#23433) 2022-01-02 21:17:19 -06:00
thinkyhead 397c751d55 [cron] Bump distribution date (2022-01-03) 2022-01-03 01:06:21 +00:00
Scott Lahteine e65c12cf96 🧑‍💻 Apply axis conditionals 2022-01-02 09:26:34 -06:00
Scott Lahteine 91909163ee 🚨 Fix M906 warning 2022-01-02 09:22:28 -06:00
Mike La Spina d007c1b835 🔧 Normal FET layout with Spindle/Laser (#23409) 2022-01-02 02:23:55 -06:00
Jason Smith e37fe85667 🔧 Update deprecated auto_build.py (#23427) 2022-01-02 02:19:10 -06:00
Johannes Hörmann cb96f9d6c0 🔨 Upload to Optiboot at 115200 (#23403) 2022-01-01 23:46:55 -06:00
Scott Lahteine 6fbfeb6801 M919 : Chopper Timing (#23400) 2022-01-01 22:57:26 -06:00
Scott Lahteine 09ccaa5051 🔨 Add .vscode/extensions.json 2022-01-01 22:57:26 -06:00
thinkyhead 08aacb822a [cron] Bump distribution date (2022-01-02) 2022-01-02 01:09:36 +00:00
John Lagonikas 63f71d85f2 Temperature variance monitor (#23373) 2022-01-01 18:18:07 -06:00
thinkyhead 4de84031d8 [cron] Bump distribution date (2022-01-01) 2022-01-01 01:08:17 +00:00
Jason Smith 6182849255 Do not warn about CONFIGURATION_EMBEDDING if it wasn't enabled (#23408)
Warnings.cpp was warning about `CONFIGURATION_EMBEDDING` on AVR boards even if it wasn't enabled. Check the status of the feature before auto-disabling and warning about it.
2021-12-31 12:32:28 -08:00
Scott Lahteine b07887687e 🚑️ Fix thermal conditionals, structure 2021-12-31 08:04:31 -06:00
Robby Candra ead693b1a4 🔧 DWIN_MARLINUI sanity checks (#23399) 2021-12-31 02:22:49 -06:00
Scott Lahteine ff46d7cae2 🐛 Fix "no T param" handling 2021-12-31 02:03:33 -06:00
thinkyhead c1410020ab [cron] Bump distribution date (2021-12-31) 2021-12-31 01:07:37 +00:00
ellensp 67521bdd01 🐛 Fix RRW Keypad & Zonestar buttons (#23388) 2021-12-30 01:35:22 -06:00
GHGiampy 6e8c671511 🩹 Fix Enhanced UI max E speed (#23387) 2021-12-29 22:37:07 -06:00
thinkyhead 9edddd18ad [cron] Bump distribution date (2021-12-30) 2021-12-30 01:05:16 +00:00
Scott Lahteine 88a6e5b691 🩺 Assert FAN_SOFT_PWM where required (#23383) 2021-12-29 04:17:41 -06:00
Scott Lahteine 755c10d303 🎨 Simplify some debug echos 2021-12-29 03:41:28 -06:00
Lefteris Garyfalakis 16a1a55cea 🎨 E3V2 corner leveling => tramming (#23375) 2021-12-28 21:22:01 -06:00
thinkyhead 6d1eaa0efa [cron] Bump distribution date (2021-12-29) 2021-12-29 01:05:01 +00:00
Scott Lahteine f3b8b0b5b9 🚚 Rename L6470 G-code file 2021-12-28 18:29:05 -06:00
Scott Lahteine 6fb2d8a25f 🧑‍💻 Remove extraneous 'inline' hints 2021-12-28 06:07:55 -06:00
Scott Lahteine 33fa3aba10 🩺 Check some axis-parameter collisions 2021-12-28 06:07:14 -06:00
Scott Lahteine 13ce5aa1ed 🎨 Misc. cleanup 2021-12-28 06:03:12 -06:00
Scott Lahteine 02b4e48c6d 🚸 Refine stepper-driver-related G-codes (#23372) 2021-12-28 05:43:10 -06:00
Scott Lahteine 2351b0df84 🧑‍💻 Add AXIS_COLLISION to catch broken parameters 2021-12-28 05:02:50 -06:00
Miguel Risco-Castillo d58daaa42c 🚸 DWIN Enhanced improve, fix, and extend (#23240)
- Offset icon change to show mesh leveling status
- Reset extruder position when enter to Move menu
- New live end-stop diagnostic page
- Editable firmware retracts settings for Tune and filament settings menu
- Print Statistics page accessible from the Advanced Settings menu
- Reset printer draws the boot image
- Adds individual axes homing menu
- Adds probe deploy/stow to Probe Settings menu
- Updates lock screen
- Rebuilds main buttons to support text caption in other languages
- Increases probe offset limits to 60 mm
- Fix M303 PID variable update
- Fix Resume/Pause button update
- Fix redraw of print done
- Fix very large file name bug
- Fix bug in bed manual leveling
2021-12-27 23:23:50 -06:00
Scott Lahteine 761b1b93c6 📝 Consistent pin header orientation 2021-12-27 20:52:43 -06:00
thinkyhead c5b74319e7 [cron] Bump distribution date (2021-12-28) 2021-12-28 01:05:31 +00:00
Scott Lahteine c160a57397 📌 Define MKS Monster8 pins for MKS_MINI_12864
Fixes #23324
2021-12-27 17:40:53 -06:00
Ave6683 d557db8425 MagLev V4 probe by MDD (#23192) 2021-12-27 15:28:27 -06:00
Scott Lahteine 3f6147fe85 🐛 Fix mffp usage 2021-12-27 14:30:15 -06:00
Scott Lahteine 9345eedb64 🎨 Clean up ST Eval 3DP001 V1 pins 2021-12-27 14:30:01 -06:00
thinkyhead 7d462915b3 [cron] Bump distribution date (2021-12-27) 2021-12-27 01:05:53 +00:00
Scott Lahteine 56ac681727 🎨 Pins and SDIO cleanup 2021-12-26 03:33:14 -06:00
EvilGremlin 7762df7251 🔧 Check Chiron LCD requirements (#23353)
Co-Authored-By: EvilGremlin <22657714+EvilGremlin@users.noreply.github.com>
2021-12-26 00:46:13 -06:00
Scott Lahteine 6a8b9274a3 ️ Refactor still needs work
Reverting #23295
2021-12-25 23:15:17 -06:00
Scott Lahteine 00e6e90648 🐛 Fix adc_start for AVR, native
Followup to #23295
2021-12-25 22:10:47 -06:00
Keith Bennett 555c749fe2 🐛 Fix MKS Robin E3 NeoPixel pin default (#23350) 2021-12-25 21:41:01 -06:00
Robby Candra a47f559db1 🐛 HAL refactor followup (#23354) 2021-12-25 21:36:09 -06:00
Scott Lahteine 57315f02cb 🐛 Fix missing ADC method 2021-12-25 21:27:28 -06:00
kaidegit d7af619936 🐛 Fix open for bin rename (#23351) 2021-12-25 20:12:20 -06:00
Scott Lahteine 4f0932e5c1 🐛 Fix freeMemory endless loop
Followup to #23295
2021-12-25 20:00:48 -06:00
thinkyhead bdb071688e [cron] Bump distribution date (2021-12-26) 2021-12-26 01:09:46 +00:00
Scott Lahteine fca6d12093 🔧 Move MOTHERBOARD closer to top 2021-12-25 03:27:45 -06:00
fflosi c74161c011 Per-axis TMC hold multiplier (#23345) 2021-12-25 02:57:07 -06:00
Scott Lahteine a941cd33e2 🔨 Configurable firmware bin filename
Configuration.h > FIRMWARE_BIN
2021-12-24 23:47:52 -06:00
Scott Lahteine e211ff148c ♻️ Refactor HAL as singleton (#23295) 2021-12-24 21:33:59 -06:00
Scott Lahteine 532f21f96f 🔨 Ignore sublime workspace file 2021-12-24 21:32:00 -06:00
Scott Lahteine cd1920b350 🔨 Ignore cmake generated build folder 2021-12-24 21:00:32 -06:00
thinkyhead 6d09d1d7fb [cron] Bump distribution date (2021-12-25) 2021-12-25 01:04:01 +00:00
Scott Lahteine d5dff1948d 🔧 Sanity check MMU2_MENUS 2021-12-24 01:46:51 -06:00
Sola 21cd715506 MKS TinyBee board support (#23340)
Co-Authored-By: Sola <42537573+solawc@users.noreply.github.com>
2021-12-24 00:03:32 -06:00
Attila BODY 80a537cd13 🐛 Fix Robin Nano v3 filament runout pins (#23344)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 23:57:20 -06:00
thinkyhead ca0215ba64 [cron] Bump distribution date (2021-12-24) 2021-12-24 01:04:40 +00:00
MrAlvin df9eb566c7 🚸 Show mm'ss during first hour (#23335)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 03:47:52 -06:00
Robby Candra 3e737cbc91 🔧 Group FAST_PWM_FAN.options (#23331)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 02:19:39 -06:00
Tanguy Pruvot da67deb621 ✏️ Fix missing brace (#23337)
Followup to #22916

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-23 01:32:27 -06:00
Tanguy Pruvot 1b876c170f 🩹 Fix settings G21 report (#23338) 2021-12-23 00:49:15 -06:00
thinkyhead c80ef71c6b [cron] Bump distribution date (2021-12-23) 2021-12-23 01:05:31 +00:00
InsanityAutomation 2893048e29 BLTouch High Speed mode runtime configuration (#22916)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 22:09:55 -06:00
ellensp c1dba3d028 Option to reset EEPROM on first run (#23276)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 20:44:04 -06:00
thinkyhead fdd37a84a2 [cron] Bump distribution date (2021-12-22) 2021-12-22 01:07:10 +00:00
ellensp 9cee626812 🐛 Fix Chitu Z_STOP_PIN (#23330) 2021-12-21 18:48:38 -06:00
Mike La Spina f374fa0eb8 🚑️ FAST_PWM_FAN default 1KHz base freq. (#23326)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-21 01:26:31 -06:00
thinkyhead b06f871dd0 [cron] Bump distribution date (2021-12-21) 2021-12-21 01:08:00 +00:00
GHGiampy ba32391454 🧑‍💻 Option allowing > 127 Neopixels (#23322) 2021-12-20 02:44:43 -06:00
Scott Lahteine 9d42755068 🎨 Update SKR V2 pins 2021-12-19 21:47:50 -06:00
thinkyhead a055898870 [cron] Bump distribution date (2021-12-20) 2021-12-20 01:06:18 +00:00
Spencer Owen ecaebe4363 Creality3D V4.2.3 / Ender-2 Pro board (#23307) 2021-12-18 19:58:46 -06:00
thinkyhead 14ceccdbc6 [cron] Bump distribution date (2021-12-19) 2021-12-19 01:26:05 +00:00
Scott Lahteine daec6c6bb9 📝 Fix a config comment 2021-12-18 17:38:29 -06:00
Robby Candra b4727411d5 🐛 Fix loud_kill heater disable (#23314) 2021-12-18 16:33:21 -06:00
thinkyhead b16b1d1fc7 [cron] Bump distribution date (2021-12-18) 2021-12-18 01:07:50 +00:00
John Lagonikas 504e6fd786 🔧 Warning for IGNORE_THERMOCOUPLE_ERRORS (#23312) 2021-12-17 17:31:10 -06:00
Scott Lahteine 9d2441f951 ✏️ cleanup 2021-12-17 15:57:16 -06:00
thinkyhead a994a318ba [cron] Bump distribution date (2021-12-17) 2021-12-17 01:06:28 +00:00
Robby Candra 6dc056f771 🐛 Fix UTF-8 errror in configuration embed and retrieve (#23303)
The feature added in commit b464a4b1a4 introduced a UTF-8 encoding error for all users where UTF-8 is not the default codepage.
2021-12-15 21:04:32 -08:00
thinkyhead 5f9140cccd [cron] Bump distribution date (2021-12-16) 2021-12-16 01:03:49 +00:00
thinkyhead 2175d8aaee [cron] Bump distribution date (2021-12-15) 2021-12-15 01:03:24 +00:00
Robby Candra e57b7d043c 🚸 Change "SD" to "Media" or "SD/FD" (#23297) 2021-12-14 18:51:19 -06:00
ellensp a4678d9e27 🐛 Fix LCD_BED_LEVELING compile (#23298) 2021-12-14 00:25:28 -06:00
X-Ryl669 b464a4b1a4 Configurations embed and retrieve (#21321) 2021-12-14 00:22:06 -06:00
thinkyhead bf21bc9ee5 [cron] Bump distribution date (2021-12-14) 2021-12-14 01:25:36 +00:00
Giuliano Zaro 1dd9adbfe4 🚸 Use M600 for disabled MMU (#21865) 2021-12-13 18:47:57 -06:00
Tanguy Pruvot 8277f3ca0d 🐛 Fix TFT_COLOR_UI Release Media issue (#23123) 2021-12-13 18:41:21 -06:00
ellensp eef9e04690 M115 flag EXTENDED_M20 (#22941) 2021-12-13 18:18:24 -06:00
ellensp dff18e2230 ✏️ Clean up duplicate defs (#23182) 2021-12-13 18:13:34 -06:00
Robby Candra 26689e1d85 🩹 Init fan speed at boot (#23181)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-13 18:11:52 -06:00
Scott Lahteine afce7d6dd5 🔧 Fix unknown board test 2021-12-13 16:15:46 -06:00
Robby Candra 9eb2a5f62c 🩹 Use EXTRUDER_AUTO_FAN_SPEED for _AUTOFAN_SPEED (#23180) 2021-12-13 16:07:44 -06:00
thinkyhead 82d569faa0 [cron] Bump distribution date (2021-12-13) 2021-12-13 01:04:05 +00:00
Scott Lahteine 1cff4fdb36 🩹 SD abort requires open file
See #22566
2021-12-12 16:22:14 -06:00
thinkyhead 60717927ac [cron] Bump distribution date (2021-12-12) 2021-12-12 01:06:58 +00:00
ellensp 5528927d71 🐛 Fix MARLIN_F103Rx variant SCK / MOSI pins (#23282) 2021-12-11 16:06:45 -06:00
thinkyhead aebf70cdae [cron] Bump distribution date (2021-12-11) 2021-12-11 01:03:00 +00:00
BigTreeTech 0077d982cd BigTreeTech SKR mini E3 V3.0 (STM32G0B1RET6) (#23283) 2021-12-10 13:38:03 -06:00
thinkyhead 1e637a8de2 [cron] Bump distribution date (2021-12-10) 2021-12-10 01:04:24 +00:00
Scott Alfter c3af6bd8ce Fix Endstops::report_states (#23280)
Fix regression 4d45fdf0eb
2021-12-09 01:20:10 -06:00
thinkyhead 1ccaad7a9b [cron] Bump distribution date (2021-12-09) 2021-12-09 01:03:55 +00:00
Scott Lahteine 4d45fdf0eb 🎨 Misc. probe / endstop cleanup 2021-12-08 18:57:28 -06:00
Sola 135683010a 🐛 Fix MKS LVGL UI retraction (#23267) 2021-12-08 13:37:45 -06:00
Robby Candra dfa1c26471 🩹 Coerce pin_t in set_pwm_duty macros (#23273) 2021-12-08 13:15:31 -06:00
Jason Smith 65e52c1150 🐛 Fix ACTION_ITEM with nullptr (#23195)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-08 13:10:37 -06:00
Robby Candra a84e0404e0 🚸 Onboard SD for SKR 2.0 / SKR PRO (#23274) 2021-12-08 12:57:50 -06:00
John Lagonikas 9e6ded3cdf 🐛 Fix and improve MAX31865 (#23215)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-12-08 12:55:09 -06:00
Scott Lahteine 0a64209305 🎨 Rename MAX31865 elements 2021-12-08 12:40:23 -06:00
thinkyhead 5d45aba550 [cron] Bump distribution date (2021-12-08) 2021-12-08 01:05:41 +00:00
Scott Lahteine 63d73bfafc ✏️ MAX31856 => MAX31865 2021-12-06 20:18:50 -06:00
Giuseppe499 a16a059312 X Twist Compensation & Calibration (#23238) 2021-12-06 19:53:51 -06:00
thinkyhead c67f7fb4df [cron] Bump distribution date (2021-12-07) 2021-12-07 01:06:09 +00:00
Mike La Spina ea0d0e8e8b 🩹 Fix non-PWM cutter compile (#23169) 2021-12-06 15:52:18 -06:00
Stuart Pittaway 6580e655fb 🐛 Fix TWIBus Wire.begin call (#23183) 2021-12-06 15:40:18 -06:00
thinkyhead ecd1ac7092 [cron] Bump distribution date (2021-12-06) 2021-12-06 01:04:44 +00:00
Chris Pepper a010c4d1c8 🐛 HAL_reboot for native HAL (#23246) 2021-12-05 16:18:02 -06:00
tommywienert fcb48598e2 🐛 Fix env:chitu_f103 (#23225) 2021-12-05 16:16:23 -06:00
ellensp 4d0880c74d 📌 More Longer3D LKx Pro serial tests (#23260) 2021-12-05 15:42:56 -06:00
ladismrkolj 97400e54b9 🔧 Chamber Fan index option (#23262) 2021-12-05 15:41:39 -06:00
thinkyhead d6b332f4c7 [cron] Bump distribution date (2021-12-05) 2021-12-05 01:07:50 +00:00
Stuart Pittaway 363a17ac46 M3426 to read i2c MCP3426 ADC (#23184) 2021-12-04 17:47:08 -06:00
Scott Lahteine e6bbdd89b4 🔧 Cutter pins for SKR 2.0 2021-12-04 17:47:08 -06:00
Robby Candra 7daa76382f 🚸 Park nozzle on "loud kill" (#23172) 2021-12-04 17:47:08 -06:00
ellensp bfead67544 BigTree SKR 2 with F429 (#23177) 2021-12-04 16:10:29 -06:00
thinkyhead 36a04190a0 [cron] Bump distribution date (2021-12-04) 2021-12-04 01:02:04 +00:00
ellensp e949b4439b 🐛 Fix TIMER_TONE for ZM3E4 (#23212) 2021-12-03 14:48:54 -06:00
Mike La Spina 4411af655e 🏗️ Fix Maple HAL/STM32F1 PWM (#23211) 2021-12-03 12:48:48 -06:00
Tanguy Pruvot 2a1facf853 🏗️ Rework STM32 timer frequency protection (#23187) 2021-12-03 12:31:48 -06:00
thinkyhead e3d7274c84 [cron] Bump distribution date (2021-12-03) 2021-12-03 01:02:06 +00:00
thinkyhead b9ee84e8dc [cron] Bump distribution date (2021-12-02) 2021-12-02 01:02:43 +00:00
thinkyhead f46c76f360 [cron] Bump distribution date (2021-12-01) 2021-12-01 01:05:56 +00:00
Scott Lahteine c09641c7c0 🐛 Fix STM32 FastPWM 2021-11-30 15:04:05 -06:00
Jiri Jirus 1f5eaf29b9 🩹 Assume 4K EEPROM for RUMBA32 BTT (#23205) 2021-11-30 14:46:48 -06:00
Scott Lahteine 7ffada64ce 🐛 Fix STM32 FastPWM 2021-11-30 13:03:31 -06:00
thinkyhead 9e71f9baf9 [cron] Bump distribution date (2021-11-30) 2021-11-30 01:01:54 +00:00
thinkyhead a276c088e3 [cron] Bump distribution date (2021-11-29) 2021-11-29 01:01:36 +00:00
thinkyhead 1874787b6b [cron] Bump distribution date (2021-11-28) 2021-11-28 01:02:49 +00:00
Scott Lahteine 0539e870de 🎨 Rename HAL timer elements 2021-11-27 18:33:32 -06:00
Keith Bennett 09ee63caf1 ✏️ Fix Unicode (#23186) 2021-11-27 16:59:32 -06:00
Anson Liu 6fa278b741 🩹 UM2 extruder cooling fan on PJ6 (#23194) 2021-11-27 16:58:05 -06:00
Jason Smith 1861f780de 🩹 Handle nullptr in CardReader::printLongPath (#23197) 2021-11-27 15:54:39 -06:00
George Fu a3c4a5eca6 FYSETC Spider v2.2 (#23208) 2021-11-27 13:26:53 -06:00
Keith Bennett 716d741315 🐛 Swap BTT002 Tachometer Pins (#23199)
Followup to #23086
2021-11-27 13:23:23 -06:00
thinkyhead 47d3468251 [cron] Bump distribution date (2021-11-27) 2021-11-27 00:59:57 +00:00
thinkyhead 981ad44ded [cron] Bump distribution date (2021-11-26) 2021-11-26 01:00:27 +00:00
thinkyhead 9e7b9d01a1 [cron] Bump distribution date (2021-11-25) 2021-11-25 01:02:19 +00:00
Scott Lahteine a7549aac5c 🎨 Misc. issue review patches 2021-11-24 11:38:34 -06:00
thinkyhead b6a8cc06fa [cron] Bump distribution date (2021-11-24) 2021-11-24 01:01:07 +00:00
Keith Bennett f0e48ce104 📌 Biqu BX temporary framework workaround (#23131) 2021-11-23 15:54:31 -06:00
schmttc d4c78edfe3 EasyThreeD ET4000+ board and UI (#23080)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-23 15:52:18 -06:00
Giuliano Zaro 203047f859 🩹 Fix include path (#23150) 2021-11-23 15:33:33 -06:00
lukrow80 7bc18a7075 🐛 Fix homing current for extra axes (#23152)
Followup to #19112
2021-11-23 15:30:13 -06:00
John Robertson e5154ec281 MarkForged YX kinematics (#23163) 2021-11-23 15:24:24 -06:00
Robby Candra de398b4fd2 🐛 Fix serial_data_available (#23160) 2021-11-23 15:19:32 -06:00
Mike La Spina 5387ceba74 🐛 Fix STM32 set_pwm_duty (#23125) 2021-11-23 14:05:50 -06:00
Giuliano Zaro 7110d11c9d Fan tachometer support (#23086)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-23 14:01:53 -06:00
thinkyhead 430a4aec34 [cron] Bump distribution date (2021-11-23) 2021-11-23 01:01:29 +00:00
thinkyhead 0fbecf4aaf [cron] Bump distribution date (2021-11-22) 2021-11-22 01:05:17 +00:00
Keith Bennett 6ac0d4727c BigTreeTech Mini 12864 V1.0 (#23130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-21 13:25:06 -06:00
Tanguy Pruvot f33396c2c3 🐛 Fix TFT backlight sleep/wake (#23153) 2021-11-21 13:13:01 -06:00
thinkyhead 2955061b05 [cron] Bump distribution date (2021-11-21) 2021-11-21 01:04:01 +00:00
Tanguy Pruvot 1c31366bf3 ️ Reduce calls to set fan PWM (#23149) 2021-11-19 19:44:53 -06:00
thinkyhead 0293a83408 [cron] Bump distribution date (2021-11-20) 2021-11-20 01:00:26 +00:00
thinkyhead 8e7f2f4483 [cron] Bump distribution date (2021-11-19) 2021-11-19 01:01:40 +00:00
thinkyhead e34ca749b1 [cron] Bump distribution date (2021-11-18) 2021-11-18 01:01:47 +00:00
Scott Lahteine f1af475253 🎨 Misc formatting 2021-11-17 13:02:04 -06:00
BigTreeTech 2edda4c582 🐛 Init PROBE_ENABLE_PIN (#23133) 2021-11-17 11:35:28 -06:00
Keith Bennett e3d777cf8f 📌 Overridable probe-related pins (#23107) 2021-11-17 11:33:42 -06:00
luzpaz b7be62ad36 🎨 Fix misspelling (#23137) 2021-11-17 11:09:01 -06:00
espr14 44d8c2f5bf 🏗️ Planner::busy() (#23145) 2021-11-17 11:07:11 -06:00
thinkyhead 3e14f06f80 [cron] Bump distribution date (2021-11-17) 2021-11-17 01:01:01 +00:00
Scott Lahteine 36173fb259 🐛 Fix fast PWM WGM code
Followup to #23102
2021-11-16 14:11:29 -06:00
Scott Lahteine 89fe5f6d74 🔨 Bring Makefile up to date 2021-11-16 12:49:25 -06:00
EvilGremlin eb8392edd4 🔨 Ignore sim flashdrive file (#23129) 2021-11-16 10:32:43 -06:00
Luc Van Daele 629498f8d4 🐛 Fix G33, Delta radii, reachable (#22795) 2021-11-16 09:24:53 -06:00
Scott Lahteine 2aa36af557 🔧 SOUND_MENU_ITEM for E3V2 2021-11-16 08:59:32 -06:00
thinkyhead f0b1ce8749 [cron] Bump distribution date (2021-11-16) 2021-11-16 01:01:41 +00:00
Mikhail Basov 36b2650f65 🚸 LCD_SHOW_E_TOTAL for TFT_COLOR_UI (#23127) 2021-11-14 22:46:34 -06:00
thinkyhead 125310dca0 [cron] Bump distribution date (2021-11-15) 2021-11-15 01:01:02 +00:00
Scott Lahteine 33c89d1f3f 🐛 Fix SENSORLESS_HOMING for 6-axis 2021-11-14 17:19:57 -06:00
EvilGremlin 8b952d9d11 🚸 Simplify touchscreen calibration for SimUI (#23124) 2021-11-14 17:15:26 -06:00
Mike La Spina 8ee368b718 ️ Controller Fan software PWM (etc.) (#23102)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-14 05:55:31 -06:00
thinkyhead 5fa4631e37 [cron] Bump distribution date (2021-11-14) 2021-11-14 01:03:14 +00:00
thinkyhead d89f472a4f [cron] Bump distribution date (2021-11-13) 2021-11-13 00:59:50 +00:00
Tanguy Pruvot 4aa2c6628f 🎨 MPX ARM Mini pins cleanup (#23113) 2021-11-12 14:26:19 -06:00
Mike La Spina 649c7685bf 🐛 [LCP1768] Init PWM in set_pwm_duty (#23110) 2021-11-12 12:14:28 -06:00
Skruppy 4a840e15e1 🩹 Fix RGB case light compile (#23108) 2021-11-12 08:57:24 -06:00
thinkyhead 72de764488 [cron] Bump distribution date (2021-11-12) 2021-11-12 01:02:28 +00:00
thinkyhead ecd4cdb298 [cron] Bump distribution date (2021-11-11) 2021-11-11 01:01:59 +00:00
Miguel Risco-Castillo 589a6d7f6b 🚸 Fix up E3V2 Enhanced (#23100) 2021-11-10 10:55:20 -06:00
Miguel Risco-Castillo b4b16b63ff 🚸 Expose sub-options for E3V2 Enhanced (#23099) 2021-11-10 10:31:35 -06:00
George Fu 99df0b86fb 🐛 Fix FYSETC Cheetah 2.0 pins for production (#23104) 2021-11-10 09:58:20 -06:00
BigTreeTech 07befb545b Support for BIQU B1-SE-Plus strain gauge probe (#23101)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-10 09:56:10 -06:00
thinkyhead e776fa1e93 [cron] Bump distribution date (2021-11-10) 2021-11-10 01:01:08 +00:00
Keith Bennett cee50552ab ️ BTT002 (STM32F407VET6) variant, MK3_FAN_PINS flag (#23093) 2021-11-09 10:30:02 -06:00
thinkyhead 467e883e17 [cron] Bump distribution date (2021-11-09) 2021-11-09 01:01:17 +00:00
thinkyhead fa5bfca367 [cron] Bump distribution date (2021-11-08) 2021-11-08 01:01:19 +00:00
Scott Lahteine 030b66eb27 🎨 Misc. code cleanup 2021-11-07 01:11:51 -06:00
Keith Bennett e15f9fdcd9 🚸 Indicate Preheating for probe / leveling (#23088) 2021-11-07 01:09:15 -05:00
Evgeniy Zhabotinskiy dc972990f3 🩹 Fix M503 report (#23084) 2021-11-06 23:16:18 -05:00
Jin 27220f0944 🍻 Preliminary fix for Max31865 SPI (#22682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-06 22:53:36 -05:00
dwzg 30a69f76a3 🐛 Fix JyersUI scrolling filename, etc. (#23082)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-06 22:48:00 -05:00
ellensp c07aa875bc 🐛 Fix DGUS Reloaded status message (#23090) 2021-11-06 21:27:53 -05:00
thinkyhead dfdffca2bd [cron] Bump distribution date (2021-11-07) 2021-11-07 01:06:43 +00:00
thinkyhead f5284715fb [cron] Bump distribution date (2021-11-06) 2021-11-06 00:58:50 +00:00
thinkyhead 3e8cdef36b [cron] Bump distribution date (2021-11-05) 2021-11-05 01:00:14 +00:00
Scott Lahteine f6147e038b 🍻 Get/clear reset source earlier
Followup to #23075
2021-11-04 12:20:19 -05:00
Skruppy f53d627750 🐛 Prevent AVR watchdogpile (#23075) 2021-11-04 12:11:57 -05:00
Tanguy Pruvot a9dc737624 🐛 Fix TFT backlight [STM32] (#23062) 2021-11-04 12:04:04 -05:00
BigTreeTech 7b79201470 🐛 Fix Octopus-Pro Max31865 / SPI (#23072) 2021-11-04 05:54:38 -05:00
Robby Candra 4483b8aaf0 🔨 Fix IntelliSense / PIO conflicts (#23058)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-04 05:28:42 -05:00
ellensp 399faa91b9 📌 'STOP' auto-assign, some Chitu V9 pins (#22889)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-11-03 20:05:13 -05:00
thinkyhead fef96bb556 [cron] Bump distribution date (2021-11-04) 2021-11-04 01:00:55 +00:00
Scott Lahteine 02b6fb8025 🔨 Script 'mfprep' finds pending commits 2021-11-03 07:08:10 -05:00
Scott Lahteine cac42e24a5 🔨 Update git helper scripts 2021-11-03 07:02:21 -05:00
thinkyhead 627b67e27a [cron] Bump distribution date (2021-11-03) 2021-11-03 01:00:15 +00:00
Scott Lahteine f632b72e8c 🔨 Support ABM in mf scripts 2021-11-02 01:28:00 -05:00
Keith Bennett 0db9f9a828 📌 Default NeoPixel pin for MKS Robin E3/E3D (#23060) 2021-11-02 01:15:29 -05:00
Sebastien BLAISOT 95357c33fb 🐛 Fix NEOPIXEL2_SEPARATE default color (#23057) 2021-11-02 00:49:21 -05:00
Andrei M da830e6ced ⚗️ Use pwm_set_duty over analogWrite to set PWM (#23048)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-11-02 00:47:16 -05:00
Keith Bennett 767a15d468 🔧 Endstop / DIAG homing conflict warning (#23050) 2021-11-02 00:43:40 -05:00
Keith Bennett a57355ee06 Allow Low EJERK with LA, optional (#23054) 2021-11-01 23:23:54 -05:00
Robby Candra 4989379674 🎨 Fix redefine warnings (#23061) 2021-11-01 22:29:23 -05:00
Keith Bennett 7942f71d26 Artillery Ruby (STM32F401RCT6) (#23029) 2021-11-01 22:23:24 -05:00
thinkyhead 6af344c193 [cron] Bump distribution date (2021-11-02) 2021-11-02 01:02:55 +00:00
ellensp 40477e031f 🐛 Fix Y_SERIAL_RX_PIN for FYSETC S6 (#23055) 2021-11-01 18:36:22 -05:00
ellensp 36e475b8be 🩹 Fill gaps in pinsDebug_list (#23051) 2021-11-01 18:34:53 -05:00
tombrazier 296a6137cd 🚸 More flexible Probe Temperature Compensation (#23033) 2021-11-01 18:03:50 -05:00
thinkyhead 5e9b5bb448 [cron] Bump distribution date (2021-11-01) 2021-11-01 01:03:28 +00:00
Scott Lahteine 9176dcea6e 📝 Tweak EXP comments 2021-10-30 23:50:48 -05:00
Scott Lahteine efe2e79ac8 🔨 Help for GDB remote debugging 2021-10-30 23:50:48 -05:00
Scott Lahteine ba0b772d84 🩹 Fix linker error (transfer_port_index) 2021-10-30 23:46:22 -05:00
thinkyhead b88612f976 [cron] Bump distribution date (2021-10-31) 2021-10-31 01:03:08 +00:00
Scott Lahteine 4dd1f09286 💚 Update Ender-3 V2 config path
MarlinFirmware/Configurations#600
2021-10-30 04:16:37 -05:00
Scott Lahteine be412e3e2b 🎨 Adjust Ender-3 V2 DWIN options 2021-10-30 01:39:33 -05:00
aalku 75e0b7f8ff Shutdown Host Action (#22908)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-30 00:17:20 -05:00
Scott Lahteine aa4e32555d "Rutilea" ESP32 board (#22880) 2021-10-29 20:46:55 -05:00
Scott Lahteine 18a924d4e2 🔧 Configuration version 02000903 2021-10-29 20:42:52 -05:00
thinkyhead 67b075fd39 [cron] Bump distribution date (2021-10-30) 2021-10-30 00:58:37 +00:00
Scott Lahteine 70e31bff45 🎨 Standard 'cooldown' method 2021-10-29 19:18:35 -05:00
Scott Lahteine b09038fcc7 🎨 Standard material presets behavior 2021-10-29 19:18:35 -05:00
Scott Lahteine 1d80464ba7 🎨 Define HAS_PREHEAT conditional 2021-10-29 19:18:35 -05:00
tome9111991 3b9bea6f80 🐛 Fix E3V2 (CrealityUI) Tune/Prepare > Zoffset (#23040) 2021-10-29 17:49:12 -05:00
thinkyhead 2c8dce69e1 [cron] Bump distribution date (2021-10-29) 2021-10-29 00:58:40 +00:00
Scott Lahteine 5d04c7496c 🐛 Fix EZBoard V2 board name 2021-10-28 19:24:58 -05:00
Keith Bennett a1c4aad147 🐛 Fix MKS Robin E3/E3D Z Stop/Probe pins (#23034) 2021-10-28 05:26:05 -05:00
Scott Lahteine aa2c6387e9 🎨 Apply HAS_MULTI_HOTEND conditional 2021-10-28 05:17:44 -05:00
thinkyhead fbc125b06c [cron] Bump distribution date (2021-10-28) 2021-10-28 01:00:14 +00:00
Zlopi c0337da633 🚸 Scroll long filename on MKS TFT (#23031) 2021-10-27 15:10:46 -05:00
ellensp 11f1335efb 🩹 Retain LCD pins with motor expansion (#23024) 2021-10-27 15:06:06 -05:00
somehibs 3f6c8d5dc5 🐛 Fix serial PORT_RESTORE (and BUFFER_MONITORING) (#23022) 2021-10-27 15:00:02 -05:00
tome9111991 2199ae77c8 🐛 Fix E3V2 (CrealityUI) position display (#23023)
Followup to #23005, #22778
2021-10-27 14:58:32 -05:00
thinkyhead de6dfc9abc [cron] Bump distribution date (2021-10-27) 2021-10-27 01:02:46 +00:00
Scott Lahteine 65dfc407a5 🚸 Tweaks to UBL G29 Q 2021-10-26 19:36:16 -05:00
woisy00 9338b7f06e 🐛 Fix AUTOTEMP bug (thermal runaway) (#23025)
Regression from 9823a37
2021-10-26 18:05:34 -05:00
thinkyhead 79626062d0 [cron] Bump distribution date (2021-10-26) 2021-10-26 00:59:45 +00:00
tombrazier 73875cf9cc 🚸 Default T0 for M569, M906, M913 (#23020) 2021-10-25 16:29:40 -05:00
ellensp 930cb7c317 ️ Add'l PCINTs for Mega Extended (#23019) 2021-10-25 16:02:29 -05:00
Keith Bennett 90716eb7ce Octopus Pro V1.0 with STM32F429ZGT6 (#23008) 2021-10-25 15:53:37 -05:00
ellensp b619a71844 🐛 Fix børken E_DUAL_STEPPER_DRIVERS (#23017) 2021-10-25 15:53:37 -05:00
Miguel Risco-Castillo 70863058cd 🐛 Fix Ender-3 V2 Enhanced SetFlow (#23016) 2021-10-25 15:53:32 -05:00
Lefteris Garyfalakis 5ef0468251 🚸 E3V2 Enhanced cosmetic fixes (#23009) 2021-10-25 01:06:13 -05:00
InsanityAutomation d79ea20dcd Creality v2.4.S1 (Ender 7) board (#23010) 2021-10-25 00:39:48 -05:00
Dennis f6c7fbd1ab 🐛 Fix JyersUI current positions (scaling) (#23005) 2021-10-25 00:35:11 -05:00
tombrazier 444f27dfa0 🐛 Add USE_TEMP_EXT_COMPENSATION options (#23007) 2021-10-25 00:33:40 -05:00
Scott Lahteine f8968ed13c 🐛 More explicit allocation of solenoids
In reference to #22887
2021-10-24 23:43:28 -05:00
Scott Lahteine 6a6bf0fd1b 🔧 Fewer alerts about Z_SAFE_HOMING 2021-10-24 23:43:28 -05:00
thinkyhead 22d3a993e7 [cron] Bump distribution date (2021-10-25) 2021-10-25 01:03:57 +00:00
thinkyhead e5e872c2e2 [cron] Bump distribution date (2021-10-24) 2021-10-24 01:02:51 +00:00
thinkyhead 3ec0213dbc [cron] Bump distribution date (2021-10-23) 2021-10-23 01:04:09 +00:00
tombrazier 9c055621a0 🐛 Fix probe temp compensation maths (#23004) 2021-10-22 15:56:05 -05:00
tome9111991 de3c563a99 🐛 Fix SHOW_REMAINING_TIME option for JyersUI (#22999) 2021-10-22 11:16:07 -05:00
Keith Bennett 9a19ea50d8 BigTreeTech TFT35 SPI V1.0 (#22986) 2021-10-22 10:52:31 -05:00
ellensp f62890d889 🐛 Fix E3V2 width/height defines (#22994) 2021-10-21 23:57:30 -05:00
thinkyhead a309a9535d [cron] Bump distribution date (2021-10-22) 2021-10-22 01:12:18 +00:00
thinkyhead 566ce56a2d [cron] Bump distribution date (2021-10-21) 2021-10-21 01:08:58 +00:00
thinkyhead a05b66a950 [cron] Bump distribution date (2021-10-20) 2021-10-20 01:05:51 +00:00
Augusto Zanellato a6a838084d Eryone Ery32 mini (STM32F103VET6) board (#22956) 2021-10-19 10:24:22 -05:00
Mike La Spina 52edc543bd 🩹 Fix pragma ignored for older GCC (#22978) 2021-10-19 06:05:23 -05:00
Scott Lahteine 5f7c92dfbb 🎨 Refactor MOSFET pins layout (#22983) 2021-10-19 05:59:48 -05:00
Scott Lahteine b69971f06a 🔨 Fix older GCC CXXFLAGS warning 2021-10-19 05:53:52 -05:00
Scott Lahteine 1f3f9cb68c 🎨 Pragma GCC cleanup 2021-10-19 05:52:41 -05:00
Scott Lahteine e77df72300 🎨 Fix pinsDebug_list warnings 2021-10-19 05:51:49 -05:00
Scott Lahteine f8ec8e5bf6 💡 Sub-include pins labels 2021-10-19 04:03:44 -05:00
Scott Lahteine 6cf6c4cd85 🔨 Delete after encrypt. Lerdge encrypt only once 2021-10-19 03:58:00 -05:00
Scott Lahteine c91451d215 🔨 Update 'pio vscode init' detection 2021-10-19 03:58:00 -05:00
thinkyhead 3a77894efd [cron] Bump distribution date (2021-10-19) 2021-10-19 01:06:11 +00:00
Jason Smith 357fb8d984 🐛 Fix max chamber fan speed (#22977) 2021-10-18 03:11:16 -05:00
Keith Bennett 7bab1c92e7 🐛 Fix I2C EEPROM SDA/SCL aliases with SKR Mini E3 V2 (#22955) 2021-10-18 02:57:54 -05:00
ellensp ec57879c59 🐛 Fix MMU1 compile (#22965) 2021-10-18 02:54:20 -05:00
Keith Bennett d3a84bc584 BTT Octopus Pro V1.0 (STM32F446ZET6) (#22971) 2021-10-18 02:51:01 -05:00
Mike La Spina 28e2c358d1 🎨 Suppress type warning (#22976) 2021-10-18 02:40:47 -05:00
Scott Lahteine 2e0bde37d7 🎨 Add MKS UI goto_previous_ui 2021-10-18 02:05:13 -05:00
Scott Lahteine ad4a8a68c2 Warn about dummy thermistors 2021-10-18 01:54:51 -05:00
InsanityAutomation b93c3301f2 Fix JyersUI ZOffset Multiplication (#22975) 2021-10-18 00:03:01 -06:00
InsanityAutomation d2b0939118 Fix Tool Change Park (#22968) 2021-10-18 00:01:28 -06:00
Scott Lahteine 741e70541d 🚸 Tweak MKS UI G-code console 2021-10-17 22:08:45 -05:00
Scott Lahteine d685cbd5c3 🎨 Fix up MKS UI defines 2021-10-17 20:24:53 -05:00
Scott Lahteine 7d16f0cadf 🔨 Improve 'mftest' error message 2021-10-17 20:24:53 -05:00
thinkyhead cd0ee8c34d [cron] Bump distribution date (2021-10-18) 2021-10-18 01:06:10 +00:00
Scott Lahteine bc567e7b49 🔧 Safety feature warnings 2021-10-17 16:56:01 -05:00
thinkyhead 3c94f2f1c3 [cron] Bump distribution date (2021-10-17) 2021-10-17 01:02:43 +00:00
thinkyhead babb3d7b4c [cron] Bump distribution date (2021-10-16) 2021-10-16 01:07:57 +00:00
Scott Lahteine 9d72cbf84b 💡 Update old gnu.org links 2021-10-15 15:07:47 -05:00
InsanityAutomation 95662d3aed Add option EVENT_GCODE_TOOLCHANGE_ALWAYS_RUN (#22960) 2021-10-15 14:56:59 -05:00
Scott Lahteine ee28a14e8e 🎨 Refactor Host Actions as singleton 2021-10-15 00:24:08 -05:00
ellensp de5aefd09e 🔧 Add, update TFT sanity checks (#22928) 2021-10-14 20:38:03 -05:00
thinkyhead 1143535664 [cron] Bump distribution date (2021-10-15) 2021-10-15 01:05:59 +00:00
thinkyhead 5d665d5e1e [cron] Bump distribution date (2021-10-14) 2021-10-14 01:01:39 +00:00
InsanityAutomation 8e4953514c ️ Formbot ST7920 delays, intentional X2 pins (#22915)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-12 22:19:05 -05:00
Dmytro bf91bd5eee 🎨 Update MKS UI for no bed, extruder (#22938)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-12 21:45:00 -05:00
Keith Bennett f58934c4ef 🐛 Fix MKS Robin Pro 1.0 LCD reset pin (#22937) 2021-10-12 21:06:39 -05:00
Keith Bennett 8ce2254aa6 🔧 Remove obsolete G34 sanity check (#22929) 2021-10-12 21:05:37 -05:00
George Fu 0d41667bc2 🐛 Fix FYSETC Cheetah v2.0 build (#22926) 2021-10-12 20:32:54 -05:00
ellensp 02dc7a6387 🐛 Fix G33 homing current (#22909) 2021-10-12 20:28:45 -05:00
Keith Bennett 3f9ff2421f 🐛 Fix SKR Mini E3 V2 I2C-based EEPROM (#22919)
Followup to #20609
2021-10-12 20:26:42 -05:00
thinkyhead 332ef9939c [cron] Bump distribution date (2021-10-13) 2021-10-13 01:07:25 +00:00
mks-viva a7519ecca9 MKS Eagle (STM32F407VET6) board (#22897) 2021-10-12 20:01:18 -05:00
InsanityAutomation 15ebe45f36 🐛 Fix IDEX + DISABLE_INACTIVE_EXTRUDER (#22925) 2021-10-12 18:40:56 -05:00
thinkyhead 769948bb4d [cron] Bump distribution date (2021-10-12) 2021-10-12 01:05:49 +00:00
Stuart Pittaway ad14b5052c M261 S I2C output format (#22890)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-10-11 17:42:29 -05:00
thinkyhead 90fa48ffd5 [cron] Bump distribution date (2021-10-11) 2021-10-11 01:03:10 +00:00
thinkyhead 0c86cc89f0 [cron] Bump distribution date (2021-10-10) 2021-10-10 01:03:22 +00:00
InsanityAutomation b3fd0a5050 🐛 Fix IDEX Duplication Mode Positioning (#22914)
Fixing #22538
2021-10-09 18:13:19 -05:00
Minims 33809ae000 🩹 Adjust GTR 1.0 ST7920 display delay (#22904) 2021-10-09 18:10:21 -05:00
Tanguy Pruvot 886c59dc10 🐛 Queue string followup (#22900) 2021-10-09 18:05:24 -05:00
Pyro-Fox 13bb2393e1 🐛 LCD string followup (#22892) 2021-10-09 17:09:50 -05:00
thinkyhead bd6a1a2898 [cron] Bump distribution date (2021-10-09) 2021-10-09 00:59:22 +00:00
thinkyhead 1ec399c6ab [cron] Bump distribution date (2021-10-08) 2021-10-08 01:05:32 +00:00
thinkyhead 1f41437052 [cron] Bump distribution date (2021-10-07) 2021-10-07 01:03:32 +00:00
ellensp f79d1f114c 🎨 Define Octopus allocated endstop pins (#22882)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-10-06 15:42:59 -05:00
Scott Lahteine 9922410a73 🔨 Port libsdl2_net required for macOS simulator 2021-10-05 23:05:22 -05:00
Scott Lahteine 149cbe795d 🎨 Tweak FORCE_INLINE 2021-10-05 23:05:22 -05:00
Scott Lahteine e52c30d43a 🐛 Followup to F() in config_line
Followup to 1dafd1887e
2021-10-05 23:05:22 -05:00
thinkyhead ca7ab6e13f [cron] Bump distribution date (2021-10-06) 2021-10-06 01:02:35 +00:00
Mark 4e9ae9449f ESP32 Panda_ZHU and Panda_M4 (#22644) 2021-10-04 23:23:02 -05:00
Scott Lahteine f395198e14 🔨 Move Creality 4.2.2 warning 2021-10-04 22:17:59 -05:00
Scott Lahteine e8459ae63c 🐛 ExtUI F() followups
Followup to 12b5d997a2
2021-10-04 22:00:00 -05:00
thinkyhead d5cb30524e [cron] Bump distribution date (2021-10-05) 2021-10-05 01:01:31 +00:00
Scott Lahteine f5b085157a 🔨 Add 'opt_find' to find matching options 2021-10-04 19:11:39 -05:00
ellensp b919bdbf0b 🩹 Fix EXTRUDER 0 compile warning (#22868) 2021-10-04 01:12:19 -05:00
Sebastien Andrivet 2d08afe456 🐛 Fix ExtUI Pause messages (#22874) 2021-10-04 01:06:49 -05:00
Scott Lahteine 65b950a489 🎨 Apply F() to kill / sendinfoscreen 2021-10-04 00:26:29 -05:00
Scott Lahteine d1938d54ed 🎨 Apply F() to MKS UI errors, assets 2021-10-04 00:26:29 -05:00
Scott Lahteine 1dafd1887e 🎨 Apply F() to various reports 2021-10-04 00:26:29 -05:00
Scott Lahteine d7fede3a63 🎨 Apply F() to G-code report header 2021-10-04 00:26:29 -05:00
Scott Lahteine eeffac697c 🎨 Apply F() to UTF-8/MMU2 string put 2021-10-04 00:26:29 -05:00
Scott Lahteine 12b5d997a2 🎨 Apply F() to some ExtUI functions 2021-10-04 00:26:29 -05:00
Scott Lahteine 008bf1bcae 🎨 Apply F() to Host Actions strings 2021-10-04 00:26:29 -05:00
Scott Lahteine 7f1286a11f 🎨 Apply F() to status message 2021-10-04 00:26:29 -05:00
Scott Lahteine 520b97083e 🎨 Apply F() to serial macros 2021-10-04 00:26:29 -05:00
Scott Lahteine 417e2530eb 🎨 Apply F() to G-code suite and queue 2021-10-04 00:26:29 -05:00
Scott Lahteine 64a919da2a 🎨 Apply F() to E3V2 titles, popups 2021-10-04 00:26:29 -05:00
Scott Lahteine 59dac3a7e4 🎨 Apply F() to G-code subcommands 2021-10-04 00:26:29 -05:00
Scott Lahteine 23f10563e0 🎨 Update F string declarations 2021-10-04 00:26:29 -05:00
ellensp cb9fafd4f3 🐛 Fix Arduino IDE compile error (#22877) 2021-10-04 00:25:45 -05:00
Scott Lahteine 54d400608d 🎨 Axis name string interpolation, with examples (#22879) 2021-10-04 00:24:41 -05:00
Scott Lahteine eb784d6e55 🎨 Rename MarlinUI::zoffset_overlay 2021-10-03 22:31:54 -05:00
thinkyhead 97295c552d [cron] Bump distribution date (2021-10-04) 2021-10-04 01:05:57 +00:00
VragVideo 9bb562f40a WYH L12864 LCD (Alfawise Ex8) (#22863) 2021-10-02 22:12:51 -05:00
thinkyhead e4d8290be3 [cron] Bump distribution date (2021-10-03) 2021-10-03 01:06:58 +00:00
thinkyhead e27b1e5d58 [cron] Bump distribution date (2021-10-02) 2021-10-02 01:00:08 +00:00
thinkyhead ea0169f2bc [cron] Bump distribution date (2021-10-01) 2021-10-01 01:05:30 +00:00
thinkyhead d3ed21b10e [cron] Bump distribution date (2021-09-30) 2021-09-30 01:05:47 +00:00
Steven Haigh c6ceac9067 🚑️ Fix DWIN_CompletedLeveling (#22851)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-29 11:22:46 -05:00
Malderin 732e59b412 🐛 E3V2 Mesh Viewer followup (#22850) 2021-09-28 20:20:03 -05:00
thinkyhead 90b0e16ec0 [cron] Bump distribution date (2021-09-29) 2021-09-29 00:58:41 +00:00
Scott Lahteine f2ba845dad 🎨 Condense reverse-protection code 2021-09-28 06:47:49 -05:00
Scott Lahteine 33e0855e2c ️ Handle shared enable pins (#22824) 2021-09-28 01:07:51 -05:00
thinkyhead eda8e9c8dd [cron] Bump distribution date (2021-09-28) 2021-09-28 01:01:32 +00:00
Miguel Risco-Castillo 8ab02df63a E3V2 (Enhanced) Mesh Viewer (#22844) 2021-09-27 14:47:47 -05:00
Malderin 8f9e56afb9 🚸 MKS UI LVGL bed preheat presets (#22842) 2021-09-27 14:13:38 -05:00
Sola 5dce8d0a84 🚸 Fix MKS LVGL UI temperature set interface (#22848) 2021-09-27 14:08:29 -05:00
espr14 228eb9c404 🎨 steps_to_mm => mm_per_step (#22847) 2021-09-27 14:05:52 -05:00
Tanguy Pruvot f73175d826 🚸 TFT backlight PWM / brightness (#22841) 2021-09-27 14:01:47 -05:00
ellensp 942b76082c 🔧 Sanity-check BLTOUCH_SET_5V_MODE on 5V pins (#22840)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-27 10:17:00 -05:00
thinkyhead 3329e07bd9 [cron] Bump distribution date (2021-09-27) 2021-09-27 01:00:10 +00:00
Giuliano Zaro 8fd5a4037a 🩹 Fix M412_report formatting (#22834) 2021-09-25 21:59:29 -05:00
thinkyhead 031fec7a02 [cron] Bump distribution date (2021-09-26) 2021-09-26 01:02:25 +00:00
Miguel Risco-Castillo 1ac7a56a82 🐛 E3V2 Brightness followup (#22821)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-25 05:59:43 -05:00
Scott Lahteine a7fdaabd54 🎨 Updated string macros 2021-09-25 02:30:18 -05:00
Steve Wills e1ac3ede0d 🐛 Add 'static' to fix 'duplicates' (#22826) 2021-09-24 21:12:43 -05:00
Manuel McLure 86a6b9316e 🐛 Fix M420 / M851 reports (#22829)
Followup to 79c72ed821
2021-09-24 21:08:07 -05:00
thinkyhead 849b86afb6 [cron] Bump distribution date (2021-09-25) 2021-09-25 00:59:33 +00:00
thinkyhead e85f622505 [cron] Bump distribution date (2021-09-24) 2021-09-24 01:01:22 +00:00
Scott Lahteine 35ad3b0d3b 🐛 Fix reset_hotend_offsets 2021-09-23 11:09:43 -05:00
Scott Lahteine dc5bef62ba 🎨 Various multi-axis patches (#22823) 2021-09-23 10:01:37 -05:00
Sola 9c208a008d ️ Improve LVGL touch driver (#22817) 2021-09-23 02:53:48 -05:00
ellensp 7c5727e0ec 🐛 Fix anycubic_i3mega_lcd debug macros (#22820) 2021-09-23 01:58:52 -05:00
Scott Lahteine 1835f8fb25 🩹 Add MarlinSPI to more HALs 2021-09-23 00:51:35 -05:00
thinkyhead 64c6475434 [cron] Bump distribution date (2021-09-23) 2021-09-23 01:04:29 +00:00
Scott Lahteine 11ceea25ce 🎨 Less use of undef for RAMPS pins 2021-09-22 00:19:26 -05:00
thinkyhead 0387f94632 [cron] Bump distribution date (2021-09-22) 2021-09-22 01:02:28 +00:00
Scott Lahteine b88117d636 🎨 Fix L64xx enable, clean up conditionals 2021-09-21 06:28:58 -05:00
Scott Lahteine 58adb849d3 🔨 Improve pins_set script 2021-09-21 02:42:01 -05:00
thinkyhead 5b934e02fa [cron] Bump distribution date (2021-09-21) 2021-09-21 01:01:29 +00:00
Scott Lahteine 58301837e0 🩹 Remove extra #include, misc. style 2021-09-20 18:46:25 -05:00
Dan Royer 3344071f24 Polargraph / Makelangelo kinematics (#22790) 2021-09-20 15:45:00 -05:00
thinkyhead f3864a1ae7 [cron] Bump distribution date (2021-09-20) 2021-09-20 01:03:16 +00:00
Lefteris Garyfalakis e60e4b8f57 🌐 Update Greek language (#22799) 2021-09-19 19:26:46 -05:00
Scott Lahteine 216a66b42c 🌐 Skip non-essential translations 2021-09-19 19:25:01 -05:00
Scott Lahteine 008284934c 🔨 Case-insensitive tests list 2021-09-19 18:58:12 -05:00
Scott Lahteine c1d7e234e1 🌐 Reduce language file sizes 2021-09-19 18:40:56 -05:00
Tanguy Pruvot 10fda222ea 🐛 STM32 ADC followup (#22798) 2021-09-18 22:16:29 -05:00
thinkyhead a6b69ab6d5 [cron] Bump distribution date (2021-09-19) 2021-09-19 01:01:05 +00:00
Tanguy Pruvot 89125cd32e 🚸 Wake up TFT for some events (#22788) 2021-09-18 18:27:58 -05:00
Scott Lahteine c88e85c939 🎨 Replace some infrequently-used macros 2021-09-18 18:24:39 -05:00
Scott Lahteine f367a3987d 📝 Update some pins comments 2021-09-18 18:22:15 -05:00
Steven Haigh d7e597f3df 🐛 STM32 ADC Resolution = 12 bit (or ADC_RESOLUTION) (#22789) 2021-09-18 01:33:18 -05:00
Scott Lahteine f46e05fcb1 🚸 Move fade item up 2021-09-18 01:18:32 -05:00
Scott Lahteine ad38699c11 🚸 Better bed position 2021-09-18 01:18:32 -05:00
Scott Lahteine fede20fbe6 💬 Add non-translated STR_DONE 2021-09-18 01:13:10 -05:00
thinkyhead 11fce69781 [cron] Bump distribution date (2021-09-18) 2021-09-18 00:58:51 +00:00
thinkyhead 46dfc7ba34 [cron] Bump distribution date (2021-09-17) 2021-09-17 01:06:26 +00:00
Sola 8df3e62c89 🚸 Fix and improve MKS LVGL UI (#22783)
Co-authored-by: makerbase <4164049@qq.com>
Co-authored-by: MKS-Sean <56996910+MKS-Sean@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-16 06:48:24 -05:00
Scott Lahteine 323b38ee88 💡 Adjust headers, formatting 2021-09-16 04:39:43 -05:00
InsanityAutomation 08a40c4375 Improve pause/filament change for ExtUI (#22655) 2021-09-16 02:46:16 -05:00
Scott Lahteine 02ae11ed72 🔧 Add MANUAL_FEEDRATE sanity-check 2021-09-16 01:15:14 -05:00
thinkyhead 0cc17b920a [cron] Bump distribution date (2021-09-16) 2021-09-16 01:15:14 -05:00
Scott Lahteine e31d52184b 🎨 Handle more pre-defined pins in pins_postprocess (#22771) 2021-09-16 01:15:14 -05:00
Scott Lahteine 5b5a8798f8 🎨 Consolidate Ender-3 V2 DWIN common code (#22778) 2021-09-15 19:48:29 -05:00
Keith Bennett cca3250c3f ✏️ Fix TFT field names (#22776) 2021-09-15 15:51:52 -05:00
mks-viva a1e1555ea1 🐛 Fix MKS Monster8 EEPROM issue (serial timer) (#22777) 2021-09-15 14:47:23 -05:00
Miguel Risco-Castillo 8235ae9cc0 🩹 Fix DWIN Enhanced Tune menu during homing (#22773)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-15 01:44:28 -05:00
thinkyhead 9c8ad57f62 [cron] Bump distribution date (2021-09-15) 2021-09-15 00:59:31 +00:00
Dakkaron 21e8f99500 M282 - Detach Servo (#22760) 2021-09-14 19:00:48 -05:00
Tanguy Pruvot c2e4b1626f TFT Screen/Backlight Sleep (#22617) 2021-09-13 21:07:08 -05:00
thinkyhead ae22a92017 [cron] Bump distribution date (2021-09-14) 2021-09-14 01:17:33 +00:00
Scott Lahteine 5a04cf0514 🔖 Configurations version 02000902 2021-09-13 18:46:30 -05:00
Desuuuu 23d10ceccb 🎨 Use ExtUI API where applicable 2021-09-13 17:27:54 -05:00
Roman Moravčík 370ea116f4 🌐 Update Slovak language (#22752) 2021-09-13 17:10:30 -05:00
Scott Lahteine 3587ef2e8f 🐛 Fix old spindle/laser options 2021-09-13 16:39:11 -05:00
Scott Lahteine 798a8a7a08 🔧 SPINDLE_LASER_PWM => SPINDLE_LASER_USE_PWM 2021-09-13 16:39:01 -05:00
Scott Lahteine 000d412da6 🐛 Fix CUSTOM_MENU_MAIN_SCRIPT_DONE
Fix #22762
2021-09-12 21:41:39 -05:00
Vert d69c053225 🐛 Fix ENABLED => EITHER typo (#22756) 2021-09-12 21:39:52 -05:00
mks-viva 24460052d2 MKS Robin Nano V1.3 (STM32F407VET6) (#22749) 2021-09-12 21:30:09 -05:00
Scott Lahteine ea7e777cb1 🎨 Tweak custom menu item code 2021-09-12 21:21:35 -05:00
thinkyhead 84f66627c4 [cron] Bump distribution date (2021-09-13) 2021-09-13 01:39:56 +00:00
Scott Lahteine 29d3996a55 📌 Creality 4.3.1 board variants (#22704)
Co-authored-by: Chico <jjjm6000@gmail.com>
2021-09-12 19:37:33 -05:00
Luc Van Daele 37c488fda1 🚸 G33 R and O options (#22707) 2021-09-12 19:35:37 -05:00
ellensp c9d54bc3f3 🐛 Fix Trigorilla Pro HAL/STM32 build offset (#22761) 2021-09-12 18:03:24 -05:00
tome9111991 3a457c9d13 🐛 Fix JyersUI for LPC176x (#22745)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-09-12 14:56:40 -05:00
thinkyhead afe4cb7fee [cron] Bump distribution date (2021-09-12) 2021-09-12 01:02:08 +00:00
Scott Lahteine 08e581d5d7 🎨 Apply more HAS_DELTA_SENSORLESS_PROBING 2021-09-11 15:41:56 -05:00
Scott Lahteine 011329fe55 🐛 No probe enum for DELTA + SENSORLESS_PROBING
Fix #22729
2021-09-11 02:49:20 -05:00
Scott Lahteine 6b9b2c5d73 🩹 Warn about user feedback requirement 2021-09-11 02:48:20 -05:00
Scott Lahteine 453e60958a 🐛 Followup to JyersUI
Fix #22735, #22736
2021-09-11 01:52:19 -05:00
Scott Lahteine 953d283e53 🐛 Followup to E3V2 Enhanced
Fix #22741
2021-09-11 01:13:02 -05:00
Scott Lahteine 0a1211fe3f 🐛 Fix LPC1768 SD-based EEPROM debug
Fixes #22746
2021-09-11 00:48:20 -05:00
Marcio T 209dca1089 🚸 Enhance FTDI Eve Touch UI file select dialog (#22742) 2021-09-10 20:03:46 -05:00
thinkyhead 69ab2bc40f [cron] Bump distribution date (2021-09-11) 2021-09-11 00:58:31 +00:00
Scott Lahteine ce6d622501 🩹 Fix TOUCH_UI_FTDI_EVE warnings 2021-09-10 19:47:03 -05:00
Scott Lahteine 67d82ff228 🐛 Followup to JyersUI 2021-09-10 18:49:57 -05:00
thinkyhead bcfaf3990a [cron] Bump distribution date (2021-09-10) 2021-09-10 01:02:43 +00:00
Miguel Risco-Castillo 392a4a6f85 🐛 Fix, improve E3V2 Enhanced UI (#22733) 2021-09-09 16:40:10 -05:00
Scott Lahteine 754b31918a 🎨 Fewer serial macros 2021-09-09 05:41:58 -05:00
Scott Lahteine 79c72ed821 🎨 Standardize G-code reporting 2021-09-09 05:41:58 -05:00
ellensp 650e73af27 🩹 Fix Enhanced E3V2 Advanced Pause (#22728) 2021-09-09 01:13:01 -05:00
thinkyhead 7a4f1c410f [cron] Bump distribution date (2021-09-09) 2021-09-09 01:01:56 +00:00
thinkyhead 7a2515bcac [cron] Bump distribution date (2021-09-08) 2021-09-08 00:57:48 +00:00
Miguel Risco-Castillo 0f61d9e4dd Ender-3 V2 CrealityUI Enhanced (#21942)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-07 02:15:24 -05:00
Jyers 43a9c71ef7 Ender-3 V2 with Jyers UI (#22422) 2021-09-06 23:06:27 -05:00
thinkyhead ed0c5aefd8 [cron] Bump distribution date (2021-09-07) 2021-09-07 00:57:25 +00:00
mrv96 b0e798330d Add DGUS_LCD_UI_RELOADED (#21931) 2021-09-06 19:51:04 -05:00
Scott Lahteine 853eebc3f2 🚸 Show ExtUI message for PID_STARTED 2021-09-06 17:38:47 -05:00
Scott Lahteine 83a1d3a46b 🎨 Misc. code cleanup 2021-09-06 16:38:25 -05:00
Scott Lahteine 845d42ef40 🎨 Misc. Spindle/Laser (etc.) cleanup 2021-09-06 15:34:12 -05:00
Scott Lahteine dc6b86065e 🚸 Per-hotend Watch items 2021-09-05 21:24:40 -05:00
Scott Lahteine ba62f24717 ️ Clean up Info Menu 2021-09-05 21:14:33 -05:00
Scott Lahteine 521fda0235 🎨 MarlinUI for E3V2 tweaks 2021-09-05 20:39:19 -05:00
Scott Lahteine b0a91073b2 🔧 Sanity checks for Ender 3 V2 2021-09-05 20:39:19 -05:00
thinkyhead 6098150a85 [cron] Bump distribution date (2021-09-06) 2021-09-06 01:05:05 +00:00
dotdash32 c881fab128 🎨 Use largest default ST9720 delays (#22713)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-05 19:21:25 -05:00
Dan 51c66881c2 Protoneer CNC-Shield 3.00 (#22715) 2021-09-05 15:32:09 -05:00
Justin Nesselrotte 76fb131f14 Index Pick-and-Place board Rev.3 (#22647)
Co-authored-by: Gonçalo Pereira <goncalo_pereira@outlook.pt>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-05 15:21:45 -05:00
thinkyhead 73bc817397 [cron] Bump distribution date (2021-09-05) 2021-09-05 01:01:15 +00:00
thinkyhead 88fc449c7b [cron] Bump distribution date (2021-09-04) 2021-09-04 00:58:22 +00:00
Tanguy Pruvot a3557e63bf 🌐 Update "Homing" for some languages (#22706) 2021-09-03 18:20:32 -05:00
Scott Lahteine 5dbb155395 🩹 Fix 'ms' warning 2021-09-03 17:26:36 -05:00
Thomas White 18d82c1988 Homing submenu option (#22692) 2021-09-02 23:30:24 -05:00
Elliott Indiran e1056378f1 📝 Update PID_PARAMS_PER_HOTEND comment (#22694)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-09-02 22:41:41 -05:00
Tanguy Pruvot ff95a93ecc 🐛 Fix Mixing code typos (#22697) 2021-09-02 22:08:40 -05:00
thinkyhead 4313511483 [cron] Bump distribution date (2021-09-03) 2021-09-03 00:58:08 +00:00
thinkyhead 682d6c99c7 [cron] Bump distribution date (2021-09-02) 2021-09-02 01:03:55 +00:00
DvoraNoob 3a2eb574e2 🚸 MKS UI extrusion speed/steps config (#22656) 2021-09-01 19:29:20 -05:00
Tanguy Pruvot 71a2a95885 🔨 Enhance Lerdge pins, TFTs, and variants (#22658) 2021-09-01 18:55:36 -05:00
Tanguy Pruvot 9a9d55ceb0 🩹 Allow M42 S0/1 analogWrite on PWM pins (STM32) (#22631) 2021-09-01 18:45:17 -05:00
ellensp 01d1192a44 🐛 BTT Octopus X MAX pin for IDEX (#22654) 2021-09-01 05:33:24 -05:00
thinkyhead fc22f1f843 [cron] Bump distribution date (2021-09-01) 2021-09-01 01:03:17 +00:00
Vert bad4679649 GT2560 V4.x A20 (#22664) 2021-08-31 02:37:20 -05:00
Scott Lahteine fb29135c74 Creality3D CR-30 PrintMill 2021-08-31 02:31:44 -05:00
Scott Lahteine e33e101850 🎨 Tweak pins, comment formatting 2021-08-31 02:31:44 -05:00
Scott Lahteine ba10816c51 💄 Extended Info Menu 2021-08-31 02:31:44 -05:00
Scott Lahteine f55a28b015 🌐 Tweak language selection 2021-08-31 02:31:44 -05:00
Scott Lahteine eccd82b7c1 ️ Add PROBE_PT_LAST_STOW 2021-08-31 02:31:44 -05:00
ellensp 1f5eacac09 🔧 Set Z_PROBE_OFFSET_RANGE_MIN/MAX for MBL (#22663) 2021-08-31 02:26:12 -05:00
Scott Lahteine 2c5daa0722 🩹 Clean up BTT_SKR_CR6
Fixes #22665
2021-08-31 02:23:49 -05:00
Jason Smith 485a186467 🚸 Improve Tramming Wizard usability (#22672) 2021-08-31 02:00:59 -05:00
ellensp 66ded801b7 ️ Revert MAX31865 recent changes (#22660) 2021-08-30 22:40:49 -05:00
thinkyhead ef2d0b8d53 [cron] Bump distribution date (2021-08-31) 2021-08-31 00:59:16 +00:00
Christian Schuster 7378e7c2db 🩹 Fix LPC176x M43 formatting (#22680) 2021-08-30 19:32:02 -05:00
Zs.Antal fff1ed3369 🌐 Update Hungarian language (#22678) 2021-08-30 19:30:14 -05:00
Giuliano Zaro 6ff2be329e 🌐 Update Italian language (#22645) 2021-08-30 17:05:11 -05:00
Scott Lahteine efb9ea92b8 🔨 Fix HAL/STM32 F103Zx builds (#22610) 2021-08-30 17:03:22 -05:00
Scott Lahteine 90cd1ca68d 🎨 screws_tilt_adjust_pos => tramming_points 2021-08-29 23:10:00 -05:00
Scott Lahteine d95d452b29 🌐 MSG_PROBING_MESH => MSG_PROBING_POINT 2021-08-29 23:03:02 -05:00
Scott Lahteine 8f57a21176 🔨 Three columns in mftest menu 2021-08-29 20:04:51 -05:00
thinkyhead 4d5f6b2a78 [cron] Bump distribution date (2021-08-30) 2021-08-30 00:57:24 +00:00
Marcio T 6e40dbe0d3 ️ Fix, enhance FTDI Eve Touch UI (#22619) 2021-08-29 17:05:30 -05:00
Marcio T ab03c9a560 ️ Enhance and fix FTDI Eve Touch UI file select (#22651) 2021-08-29 17:03:10 -05:00
Scott Lahteine f721c44c22 🐛 Fix SDSUPPORT for SKR CR-6 (#22668)
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2021-08-29 15:15:53 -05:00
Scott Lahteine 4b4de71304 ️ Improve G2/G3 arc handling (#22599) 2021-08-29 14:34:48 -05:00
Scott Lahteine 09a83d565e 🩹 Sensorless homing tweak 2021-08-29 13:55:20 -05:00
Scott Lahteine 6d3dec8b63 🎨 Update more EXP Headers 2021-08-29 13:55:20 -05:00
thinkyhead d6501a93ec [cron] Bump distribution date (2021-08-29) 2021-08-29 01:00:17 +00:00
Scott Lahteine d818a019c5 🎨 EXP headers, ST7920 delays (#22641) 2021-08-28 15:27:52 -05:00
thinkyhead 3a8c509a9f [cron] Bump distribution date (2021-08-28) 2021-08-28 00:54:18 +00:00
Scott Lahteine f6dc56d979 📝 AlephObjects => LulzBot 2021-08-27 17:23:08 -05:00
Tanguy Pruvot 36e40b68c9 🔨 Set Longer3D timers in variant (#22632) 2021-08-27 16:06:45 -05:00
thinkyhead 0c4085da01 [cron] Bump distribution date (2021-08-27) 2021-08-27 01:01:36 +00:00
thinkyhead 51160ee987 [cron] Bump distribution date (2021-08-26) 2021-08-26 00:55:12 +00:00
Tanguy Pruvot 8889e68088 🩹 Tweak startup message (#22633) 2021-08-25 18:08:27 -05:00
DerAndere 88816548b6 🔨 Melzi with OptiBoot build (#22630) 2021-08-25 18:05:06 -05:00
Jin 181530db76 🩹 Use <SoftwareSPI.h> in MAX31865 lib (#22618) 2021-08-25 17:33:08 -05:00
Ryan V1 71c96db932 🐛 Fix Multi-Endstop stepping (#22625) 2021-08-24 22:34:10 -05:00
thinkyhead 7dec5c2674 [cron] Bump distribution date (2021-08-25) 2021-08-25 00:57:08 +00:00
Scott Lahteine 4f35858c9e 🎨 EXP1/2 headers and pins cleanup (#22628) 2021-08-24 18:07:41 -05:00
Scott Lahteine 8cf7dc960f New board TH3D_EZBOARD_LITE_V2 (#22621) 2021-08-24 14:55:12 -05:00
Scott Lahteine 7974dcd2aa 🎨 Define FYSETC S6 and TH3D EZBoard EXP1/2 pins 2021-08-23 20:12:53 -05:00
thinkyhead 9c51cf3491 [cron] Bump distribution date (2021-08-24) 2021-08-24 00:56:33 +00:00
thinkyhead 2c45ac3c1b [cron] Bump distribution date (2021-08-23) 2021-08-23 00:53:22 +00:00
Chris Pepper 104de60d0b 🐛 Fix LPC176x M43 Pins Debugging (#22611) 2021-08-22 16:47:37 -05:00
Scott Lahteine 7d416bd055 MarlinUI for Ender 3 v2 DWIN LCD (#22594)
Co-Authored-By: Taylor Talkington <taylor.talkington@gmail.com>
2021-08-22 05:53:43 -05:00
ellensp 34e6940aab BOARD_RUMBA32_BTT (#22607) 2021-08-21 20:30:12 -05:00
Scott Lahteine 536cf287a6 🎨 Misc code and spacing cleanup 2021-08-21 20:30:12 -05:00
Scott Lahteine 2e3b131331 🎨 Tweak TMC software serial pins 2021-08-21 15:08:07 -05:00
Keith Bennett 104acd9e59 ⬆️ TMCStepper 0.7.3 (#22608) 2021-08-21 14:19:02 -05:00
thinkyhead 0d854d332d [cron] Bump distribution date (2021-08-21) 2021-08-21 00:55:55 +00:00
Fjederhaek 1903cc23c6 🐛 Update H-bot / Core for 6-axis (#22600)
Followup to #19112
2021-08-20 17:45:05 -05:00
Scott Lahteine 9046254a14 🌐 Update menu titles, add more IJK (#22605)
Followup to #19112
2021-08-20 17:38:00 -05:00
Scott Lahteine 193205a40d Followup to CrealityUI cleanup
Followup to #22586
2021-08-19 21:11:10 -05:00
thinkyhead 9db5805c8f [cron] Bump distribution date (2021-08-20) 2021-08-20 00:56:15 +00:00
Scott Lahteine 737d2dd564 Followup to CrealityUI cleanup
Followup to #22586
2021-08-19 19:16:46 -05:00
Scott Lahteine 033e65ec85 🐛 Show bed size as 'work:' in M115
Fixes #22598
2021-08-19 17:38:05 -05:00
thinkyhead 368a12a8ac [cron] Bump distribution date (2021-08-19) 2021-08-19 00:51:33 +00:00
Scott Lahteine e2297d82f2 📌 Disregard TMCStepper 0.7.2 2021-08-18 18:23:20 -05:00
Scott Lahteine 11e8cd9db9 🩹 Followup to CrealityUI cleanup
- Followup to #22586 fixing `Draw_Menu_Line` with `GET_TEXT_F`.
- More number drawing convenience functions.
- Return on `ENCODER_DIFF_NO` to reduce indent.
- Put Main Menu buttons closer to the top.
- Move status message up slightly.
- Fix some indentation.
2021-08-18 02:33:25 -05:00
Tanguy Pruvot 6a8385624f 🐛 Fix STM32 delay, double reset in FSMC TFT init (#22584) 2021-08-17 22:39:08 -05:00
Tanguy Pruvot f8c67c4810 🐛 Fix Longer3D PWM/timer pins (#22583) 2021-08-17 22:37:27 -05:00
Jason Smith c05de6cbf8 ️ Simplify PROBING_STEPPERS_OFF (#22581) 2021-08-17 22:35:12 -05:00
Keith Bennett 6464601411 ️ Revert ABL G29 feedrate (#22574)
Reverts 9130f58
2021-08-17 22:27:21 -05:00
thinkyhead ab8e212c2d [cron] Bump distribution date (2021-08-18) 2021-08-18 00:58:27 +00:00
Scott Lahteine 09af42e1af Clean up CrealityUI and MarlinUI (#22586) 2021-08-17 06:18:19 -05:00
thinkyhead 3e0d8e16aa [cron] Bump distribution date (2021-08-17) 2021-08-17 00:57:07 +00:00
Scott Lahteine 510f8d3e0c 💚 Update STM32F103RET6_creality test path 2021-08-15 21:31:00 -05:00
thinkyhead d586340655 [cron] Bump distribution date (2021-08-16) 2021-08-16 00:57:32 +00:00
Scott Lahteine af0cd400be 🐛 Fix LCD_COL_X_RJ
Followup to #22471
2021-08-15 19:27:47 -05:00
thinkyhead a307348b89 [cron] Bump distribution date (2021-08-15) 2021-08-15 00:57:42 +00:00
thinkyhead 8fe84fcf87 [cron] Bump distribution date (2021-08-14) 2021-08-14 00:54:13 +00:00
Scott Lahteine fc817feee3 🎨 Update HAL/STM32 wrappers
Followup to #22537
2021-08-13 18:50:12 -05:00
Scott Lahteine c161a46112 🎨 Update MKSPWC, some other pins (#22557) 2021-08-13 16:32:25 -05:00
BigTreeTech feb6d2887e 🐛 Fix some BTT SKR2 pins (#22558) 2021-08-12 23:26:26 -05:00
Tanguy Pruvot 1555db237e 🚸 Fewer CRs in settings report (#22560) 2021-08-12 22:40:52 -05:00
thinkyhead b028df4228 [cron] Bump distribution date (2021-08-13) 2021-08-13 00:58:12 +00:00
Miguel Risco-Castillo 59324a411f 🐛 Fix Ender-3 v2 language init (#22550) 2021-08-11 21:00:47 -05:00
thinkyhead 534da44e1f [cron] Bump distribution date (2021-08-12) 2021-08-12 00:57:35 +00:00
Scott Lahteine 4d3cb95bd8 🔨 Use zip link for MarlinSimUI 2021-08-11 18:20:42 -05:00
Scott Lahteine bf9cd90cc4 🎨 Tweak M73 condition 2021-08-11 18:20:29 -05:00
ellensp 5c610b2c18 🚸 Better error for MOTHERBOARD not defined (#22551) 2021-08-11 18:06:09 -05:00
Tanguy Pruvot c657fe2112 🐛 Fix M575 port index output (#22553) 2021-08-11 17:58:28 -05:00
thinkyhead cad142ab1b [cron] Bump distribution date (2021-08-11) 2021-08-11 00:59:26 +00:00
Scott Lahteine 25d5d2ab50 🚸 Set M122 interval only with S0 or Pn 2021-08-10 04:01:45 -05:00
Scott Lahteine 13e4e24e21 🐛 Use delete [] for new [] 2021-08-10 04:01:33 -05:00
thinkyhead 1ed59fef93 [cron] Bump distribution date (2021-08-10) 2021-08-10 01:01:05 +00:00
Scott Lahteine cc109c1802 🐛 Fix CoreXY plus extra axes
See #22490
2021-08-09 16:07:15 -05:00
Tanguy Pruvot ae846c2cb2 🚑️ Init FastIO before anything else (#22508) 2021-08-08 21:37:27 -05:00
Scott Lahteine 76c10b3e02 🏗️ Define HAL_STM32 for HAL/STM32 (#22537) 2021-08-08 21:31:10 -05:00
Jason Smith 331cc5fd6a 🐛 Fix some Simulator on Windows issues (#22516) 2021-08-08 21:25:17 -05:00
thinkyhead 47281012d9 [cron] Bump distribution date (2021-08-09) 2021-08-09 00:59:01 +00:00
ellensp 5756f8898e Zonestar ZM3E2, ZM3E4 V1, ZM3E4 V2 (#22498) 2021-08-08 02:45:51 -05:00
luzpaz 8a7673ac1e 🎨 Spellcheck code (#22531) 2021-08-08 02:26:54 -05:00
Scott Lahteine a63e0477da 💚 Fix tests for new sanity-checks 2021-08-08 01:24:15 -05:00
Marcio T 26b1ed7c2a 🐛 Fix FTDI Eve Touch UI (#22530) 2021-08-07 22:23:06 -05:00
mks-viva c1a533b45e 📌 MKS pins for PSU_CONTROL (#22528) 2021-08-07 22:17:43 -05:00
thinkyhead 0f3e938c9b [cron] Bump distribution date (2021-08-08) 2021-08-08 00:58:57 +00:00
Scott Lahteine 22ae09ace4 🔧 Sanity-check DEFAULT_EJERK with LIN_ADVANCE
See #20649
2021-08-07 18:26:46 -05:00
Scott Lahteine f4ab0a0c91 🔧 Sanity-check Mixing plus Disable Inactive Extruder
See #22166
2021-08-07 15:59:00 -05:00
thinkyhead f732cb1a7f [cron] Bump distribution date (2021-08-07) 2021-08-07 00:53:48 +00:00
ellensp e7c33840dc 🐛 Fix MKS 'USB Flash MSC' environments (#22515) 2021-08-06 15:54:02 -05:00
Tanguy Pruvot 9a8c9d4ed0 🎨 Fix "'EEPROM' unused" warning (#22511) 2021-08-06 15:51:10 -05:00
Scott Lahteine 526b6cdf5b 🐛 Fix fan index for Singlenozzle, chamber fan
Fixes #22512
Followup to #19152, #19519
2021-08-05 23:24:20 -05:00
thinkyhead ff3db550ee [cron] Bump distribution date (2021-08-06) 2021-08-06 01:02:27 +00:00
Scott Lahteine 03b0a6371d 🎨 Simplify endstops flags (#22525) 2021-08-05 15:03:26 -05:00
Scott Lahteine b55cf3c9f6 🚸 Fix BLTouch spelling 2021-08-05 00:27:09 -05:00
Tanguy Pruvot f35e0b9382 🚸 Prevent M42 unintended pin change to output (#22493) 2021-08-04 23:47:31 -05:00
Vert 5cb961e98b Mixer Presets (#21562) 2021-08-04 23:45:49 -05:00
thinkyhead b06d2f789b [cron] Bump distribution date (2021-08-05) 2021-08-05 00:58:49 +00:00
Scott Lahteine c2c7a03706 🐛 Fix report_a_position ABC criteria 2021-08-04 17:01:42 -05:00
Scott Lahteine 9130f58f3f 🐛 Prevent ABL G29 setting a funky feedrate
See #22472
2021-08-04 16:37:02 -05:00
Tanguy Pruvot 0e065579aa 🐛 Fix Longer3D STM32 boot, add Maple test (#22473) 2021-08-04 01:14:54 -05:00
Bob Anthony 53a5cd0c38 🐛 Fix extra E move in toolchange with ..._NO_RETURN (#22504) 2021-08-03 23:45:08 -05:00
thinkyhead 8d454fd6f1 [cron] Bump distribution date (2021-08-04) 2021-08-04 01:04:15 +00:00
Marcio T 092b5942c1 🐛 Fix FTDI Eve Touch UI (#22500) 2021-08-03 19:06:16 -05:00
luzpaz afca6e7459 🐛 Spellcheck comments (#22496)
codespell -q 3 --builtin=clear,rare,informal,code -S ./Marlin/src/lcd/language -L alo,amin,endcode,stdio,uint
2021-08-03 19:02:34 -05:00
Scott Lahteine 6a25e4e56f 🐛 Allow SKR Pro CONTROLLER_FAN_PIN override
Followup to #22411
2021-08-03 18:29:20 -05:00
thinkyhead 444992c12f [cron] Bump distribution date (2021-08-03) 2021-08-03 01:02:55 +00:00
Scott Lahteine 0060dbc49e 🐛 Fix up endstop flags (#22487) 2021-08-02 17:08:35 -05:00
DerAndere 0eda34e07d 🐛 Followup to 6 linear axes (#22482) 2021-08-02 00:13:57 -05:00
thinkyhead 1e4470484a [cron] Bump distribution date (2021-08-02) 2021-08-02 00:58:08 +00:00
Tanguy Pruvot 5a72a39706 🔨 Offset/encrypt/rename for Maple STM32F1 (#22477) 2021-08-01 14:43:31 -05:00
Scott Lahteine 1e33c1a2a7 M256 LCD brightness (#22478) 2021-08-01 14:28:53 -05:00
ellensp 7110c4562e 🐛 Fix sprintf_P compile error (Maple) (#22479) 2021-08-01 02:09:29 -05:00
Scott Lahteine ab96ada2e2 🎨 Adjust settings.cpp indent 2021-07-31 23:27:10 -05:00
Grayson a90c8b762c 🐛 Fix G38 with probe on Z_MIN (#22452) 2021-07-31 22:55:22 -05:00
ldursw 381a23773b 🔨 Fix (RRF E3) RX/TX buffer size override (#22475) 2021-07-31 22:42:26 -05:00
Malderin b8cc0667bb 🐛 Fix custom menus on MKS UI (#22470) 2021-07-31 22:00:18 -05:00
thinkyhead 0085ebce4d [cron] Bump distribution date (2021-08-01) 2021-08-01 01:06:23 +00:00
Scott Lahteine 9bb5b10c0c 🚚 Relocate and adjust DWIN E3V2 (#22471) 2021-07-31 05:32:13 -05:00
mks-viva 332dde935d MKS Monster8 board (#22455) 2021-07-31 00:47:30 -05:00
Tanguy Pruvot 002c500b71 🔨 Update Longer and Chitu envs (#22467) 2021-07-30 23:49:12 -05:00
Scott Lahteine 35b0083dfe 🐛 Fix custom menus on TFT LVGL
Fixes #21423. Regression from #18177.
2021-07-30 23:05:53 -05:00
Scott Lahteine b6f720ca1a Custom logging for MBL 2021-07-30 22:44:07 -05:00
thinkyhead d9ab20ec27 [cron] Bump distribution date (2021-07-31) 2021-07-31 01:01:28 +00:00
ellensp 9e68aea8a1 🐛 Fix DGUS displays compile (#22464) 2021-07-30 19:50:22 -05:00
Scott Lahteine 1fed25c440 🔨 Fix: BIGTREE_E3_RRF doesn't use user RX/TX sizes
Fixes #22466. Regression from #22377.
2021-07-30 19:39:38 -05:00
Marcio T 39e5c86544 🐛 Fix FTDI Eve unicode and spinner dialog (#22468) 2021-07-30 18:57:50 -05:00
Scott Lahteine 5ecef6e584 🐛 One-based G35 point index output 2021-07-29 23:41:48 -05:00
Scott Lahteine 84ca21edf7 🎨 abs => ABS 2021-07-29 23:40:27 -05:00
Scott Lahteine 14d40fb957 🐛 Fix PAUSE_MESSAGE_PAUSING=>PARKING
Fixes #22250. Regression from #17460.
2021-07-29 22:59:33 -05:00
Scott Lahteine 6efd7285cc 🐛 Fix PAUSE_PROBE_DEPLOY_WHEN_TRIGGERED
Fixes #22295. Regression from #20241.
2021-07-29 22:23:36 -05:00
George Fu 6eae68c402 ️ Larger FYSETC S6 I2C EEPROM size (#22424) 2021-07-29 20:09:38 -05:00
thinkyhead 2b8ef74162 [cron] Bump distribution date (2021-07-30) 2021-07-30 01:01:02 +00:00
Scott Lahteine 99a53e2c86 🐛 Fix 5-axis no extruder compile
Fixes #22446
2021-07-29 19:55:04 -05:00
Scott Lahteine 46dc8e916f 🐛 Fix 3-point leveling position
See #22457. Fixes a G29 regression from #19112.
2021-07-29 19:34:49 -05:00
ellensp 543d834a25 📝 Document DGUS display options (#22443) 2021-07-29 18:25:06 -05:00
Marcio T cdcb45b87e 🐛 Fix FTDI Eve unicode and spinner dialog (#22459) 2021-07-29 18:19:49 -05:00
Scott Lahteine 363e83731f 🔧 HAS_CUSTOM_PROBE_PIN => USES_Z_MIN_PROBE_PIN 2021-07-28 23:24:30 -05:00
mks-viva a70d0726ca 📺 MKS MINI12864 V3 for Robin E3P, etc. (#22453) 2021-07-28 21:56:22 -05:00
thinkyhead b37e851f36 [cron] Bump distribution date (2021-07-29) 2021-07-29 00:57:39 +00:00
Marcio T 4111d1d5ad 🐛 Fix FTDI Eve Touch UI progmem strings (#22439) 2021-07-28 18:15:01 -05:00
borland1 885c63c35f 🐛 Fix LCD Menu MBL Z-Offset Adjustment (#22450) 2021-07-28 17:45:32 -05:00
charlespick eacf1e33c4 M76 Host Pause Feature (#21738) 2021-07-28 16:09:33 -05:00
Keith Bennett d5a9a04abe 🐛 Fix SKR Pro bad directive (#22438) 2021-07-28 14:56:26 -05:00
vyacheslav-shubin 4ca5f6da3f 🐛 Reset workDirDepth in cdroot() (#22441) 2021-07-28 14:55:04 -05:00
Tanguy Pruvot 296d0d495c 🐛 Fix Longer3D SDSS / SD_SS (#22444) 2021-07-27 23:30:41 -05:00
ellensp 4942cb796c 🐛 SAV_3DGLCD conditionals (#22447) 2021-07-27 23:28:15 -05:00
thinkyhead 284d0bf5a0 [cron] Bump distribution date (2021-07-28) 2021-07-28 01:01:06 +00:00
ellensp bf39c66d34 💚 Specify compatible Teensy @4.12 (#22448) 2021-07-27 16:05:44 -05:00
thinkyhead 70038a9961 [cron] Bump distribution date (2021-07-27) 2021-07-27 01:00:06 +00:00
thinkyhead fc4f4ab5f5 [cron] Bump distribution date (2021-07-26) 2021-07-26 00:58:34 +00:00
Scott Lahteine 52718f3385 🎨 Add DWIN_StatusChanged_P 2021-07-25 03:59:01 -05:00
George Fu 91db603893 🔨 Fix FYSETC S6 envs (#22421)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-25 03:40:43 -05:00
Scott Lahteine b1bc2e8003 🌐 Level Corners => Bed Tramming 2021-07-25 02:25:35 -05:00
Scott Lahteine 3b57c3316a Misc. Cleanup 2021-07-25 02:25:32 -05:00
Scott Lahteine a76d8c70dd 🐛 Fix some board names 2021-07-25 02:07:34 -05:00
Scott Lahteine e1907a99e2 🎨 Fix some formatting, F() versus PSTR() 2021-07-24 22:07:26 -05:00
thinkyhead 4b94fb7558 [cron] Bump distribution date (2021-07-25) 2021-07-25 01:00:36 +00:00
InsanityAutomation a66d85c7e5 🐛 Fix delta calibrate manual move scale (#22430) 2021-07-24 16:08:47 -05:00
Scott Lahteine 27f5e64acf 🎨 NULL => nullptr 2021-07-24 15:55:45 -05:00
thinkyhead c56109c7a4 [cron] Bump distribution date (2021-07-24) 2021-07-24 05:00:51 +00:00
Marcio T b925130db1 📺 Fix and optimize FTDI Eve Touch Interface (#22427) 2021-07-23 17:02:39 -05:00
tome9111991 78be63b8a4 📝 SKR E3 Turbo custom cable description (#22426) 2021-07-23 16:47:38 -05:00
chendo 2c49283e97 D576 Buffer Monitoring (#19674) 2021-07-22 22:53:00 -05:00
thinkyhead 283d70bfd3 [cron] Bump distribution date (2021-07-23) 2021-07-23 01:14:46 +00:00
thinkyhead 6bc9c09c1f [cron] Bump distribution date (2021-07-22) 2021-07-22 01:00:19 +00:00
Chris Pepper 21011eefa8 Simulator HAL and build targets (#22418) 2021-07-21 19:01:23 -05:00
ellensp d819de46d3 🎨 MKS Hardware Test followup (#22414)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-21 16:31:11 -05:00
Luke Harrison eb2f086522 🔧 Octopus SPI display pins, fix USB build env (#22412) 2021-07-21 00:43:33 -05:00
Scott Lahteine af4c281af5 🔧 Clean up PTC_PROBE_HEATING_OFFSET 2021-07-21 00:12:26 -05:00
Scott Lahteine eb3ad3e4fe 🎨 BTT SKR Pro pins auto-assign (#22411)
Co-authored-by: MarkusThur <83773817+MarkusThur@users.noreply.github.com>
2021-07-20 23:35:56 -05:00
VTXtruder 50ada44e7e Chitu3D V9 board (#22401)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-20 22:27:19 -05:00
thinkyhead 909834683a [cron] Bump distribution date (2021-07-21) 2021-07-21 01:00:14 +00:00
Katelyn Schiesser 86feddb75f 🐛 Fix BTC_SAMPLE_RES sanity check (#22394) 2021-07-20 15:13:25 -05:00
vyacheslav-shubin e4ac55089e 🩹 Init var to suppress invalid warning (#22396) 2021-07-20 15:12:08 -05:00
Malderin a90968b0ce 🎨 MKS hardware test followup (#22395)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-20 15:07:32 -05:00
Keith Bennett 2d4be74db9 🎨 Fix unused lambda warning (#22399) 2021-07-20 14:54:02 -05:00
Yash 497541e199 🐛 Fix G2/G3 angular motion calculation (#22407) 2021-07-20 14:51:41 -05:00
ellensp 178f9a77a8 🐛 Fix STATUS_COMBINE_HEATERS compile (#22405) 2021-07-20 14:44:15 -05:00
Katelyn Schiesser da0450605a ♻️ Refactor STM32 ini files (#22377)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-20 14:20:28 -05:00
thinkyhead 3fdf40fd29 [cron] Bump distribution date (2021-07-20) 2021-07-20 01:04:54 +00:00
Roxy-3D 154decfc66 Update vector_3.cpp
Fix the regression for G29 J in UBL
2021-07-19 18:59:06 -06:00
Serhiy-K c2f72cde10 Laser support for TFT GLCD (#22391) 2021-07-18 21:39:01 -05:00
Malderin 67019bc277 Fix MKS UI compile (#22388)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-18 21:21:51 -05:00
Katelyn Schiesser 273ff6fedc 🐛 Ensure Software SPI pins for Max Thermocouple (#22389) 2021-07-18 20:24:27 -05:00
Mike La Spina 286f6ba0bd 🐛 Fix Ammeter display on DOGM (#22384) 2021-07-18 20:11:24 -05:00
thinkyhead 1a0103d276 [cron] Bump distribution date (2021-07-19) 2021-07-19 01:03:15 +00:00
Scott Lahteine b34a009bb1 🐛 Change font for selected language (#22381) 2021-07-18 19:56:28 -05:00
Katelyn Schiesser e55427aaa2 🎨 Prefer DELAY_NS over DELAY_CYCLES (#22382) 2021-07-18 01:10:13 -05:00
squiddity 49da4ee4e2 🐛 Fix M913 typos (#22385) 2021-07-18 00:50:39 -05:00
Scott Lahteine 9d86241d30 🐛 No translated serial strings 2021-07-18 00:46:06 -05:00
thinkyhead be5dec9795 [cron] Bump distribution date (2021-07-18) 2021-07-18 01:00:12 +00:00
Tanguy Pruvot cb461b5daf 🐛 Fix Longer3D build environment (#22378) 2021-07-17 17:16:57 -05:00
Scott Lahteine be1801703c 🎨 Add MMU2 enabled() accessor 2021-07-17 03:10:54 -05:00
thinkyhead 7b64bbf384 [cron] Bump distribution date (2021-07-17) 2021-07-17 00:56:52 +00:00
bilsef 665cb5ea10 M115: Axis Count (#22219) 2021-07-15 20:59:52 -05:00
mks-viva 5d63173297 MKS Mini12864 v3 for Robin E3/E3D (#22368) 2021-07-15 20:57:34 -05:00
Tanguy Pruvot 5b43795f54 🐛 Followup to HAL/STM32 targets (Longer3D timers) (#22369) 2021-07-15 20:40:05 -05:00
thinkyhead 0207569ca6 [cron] Bump distribution date (2021-07-16) 2021-07-16 00:59:11 +00:00
Taylor Talkington aec4a82a99 🐛 Fix Filament Change menu (#22370)
Followup to #22277
2021-07-15 16:32:40 -05:00
Marcio T 3be35a6bd6 📺 Fix Makefile build, improve Touch UI button titles (#22361) 2021-07-14 22:34:49 -05:00
ellensp 7e50d8761d 🔨 More HAL/STM32 targets (#22358) 2021-07-14 22:34:49 -05:00
thinkyhead 2b828446fd [cron] Bump distribution date (2021-07-15) 2021-07-14 22:34:49 -05:00
Scott Lahteine 5ca9ebfa6b 🔨 Consolidate STM32 extra_scripts (#22365) 2021-07-14 22:34:49 -05:00
Katelyn Schiesser 972b1e2f00 🎨 Call millis() once in manage_inactivity (#22363) 2021-07-14 18:56:02 -05:00
Scott Lahteine 3bc1d2dd85 🎨 Minor cleanup of TFT/FSMC pins 2021-07-14 18:51:58 -05:00
Keith Bennett a13d90093d 🩹 FLYmaker FLY Mini followup (#22364)
Followup to #22355, #22356.
2021-07-14 17:55:24 -05:00
Scott Lahteine 826a34b0b1 🎨 Remove extraneous pin defs 2021-07-14 02:21:26 -05:00
Scott Lahteine 082c61ebb9 🐛 Fix SD pins for MKS Robin Lite 2021-07-14 02:14:55 -05:00
Keith Bennett 7f5c9d273e 💡 Update FLYmaker comments, URL (#22355) 2021-07-14 02:03:24 -05:00
ellensp f479a2ef6f FLY Mini for stm32duino (#22356) 2021-07-14 01:57:26 -05:00
Victor Oliveira 65cfbc0741 MSC Support for STM32 + SDIO boards -> SKR 2 (#22354) 2021-07-14 00:34:18 -05:00
thinkyhead 9a0d4d666f [cron] Bump distribution date (2021-07-14) 2021-07-14 00:54:43 +00:00
ellensp 88dad3a164 🐛 Define MT_DET_PIN_INVERTING for MKS_ROBIN_NANO_V3 (#22348) 2021-07-13 19:32:21 -05:00
mks-viva 4ac32b1993 🐛 Fix Robin Nano V3 X_DIAG_PIN (#22340) 2021-07-13 19:14:34 -05:00
Katelyn Schiesser 9a7727e61c 🎨 Define temp sensor conditionals earlier (#22342) 2021-07-13 19:13:06 -05:00
Keith Bennett 3797549e7e 🐛 Board Temp Sensor followup (#22350) 2021-07-13 19:08:04 -05:00
Katelyn Schiesser 4479b0222b 🐛 Followup to TEMP_SENSOR_BOARD (#22343, #22344)
Followup to #22279
2021-07-12 23:01:29 -05:00
Scott Lahteine 315a722b42 🐛 TM3D fixes and improvements
Co-Authored-By: InsanityAutomation <38436470+InsanityAutomation@users.noreply.github.com>
2021-07-12 22:52:17 -05:00
thinkyhead d95e32f950 [cron] Bump distribution date (2021-07-13) 2021-07-13 00:59:56 +00:00
Marcio T fa6b01c677 ️ Fixes to FTDI Eve Touch UI (#22347) 2021-07-12 19:35:00 -05:00
lujios 05ebde3812 ️ Improve Sensorless homing/probing for G28, G33 (#21899) 2021-07-12 19:19:29 -05:00
MKS-Sean 4febb23521 MKS Robin Nano v3 + TFT_LVGL_UI + WiFi module (#22109) 2021-07-12 19:17:28 -05:00
Mike La Spina c0ecc6625f 🏗️ Allow headless Flow Meter (#22234) 2021-07-12 00:22:08 -05:00
ellensp 2c6a053ce1 🎨 Optional Custom Button description (#22336) 2021-07-12 00:15:48 -05:00
Katelyn Schiesser c8ee056cc6 ♻️ Consolidate PSU_CONTROL (#22304) 2021-07-12 00:13:58 -05:00
Mike La Spina 37cf94b888 🔨 Update LPC176x platform to 0.2.8 (#22333) 2021-07-11 20:45:47 -05:00
Katelyn Schiesser 2f6c8e1176 Add TEMP_SENSOR_BOARD (#22279) 2021-07-11 20:41:33 -05:00
thinkyhead 4b63578a10 [cron] Bump distribution date (2021-07-12) 2021-07-12 00:56:59 +00:00
Scott Lahteine 01ae1ced38 🚸 M666: Fix value filter, add report (#22337)
In reference to #22325
2021-07-11 18:25:51 -05:00
Scott Lahteine ec84770c22 🚸 Limit LCD delta endstop adjustment like M666
In reference to #22325
2021-07-11 13:18:16 -05:00
thinkyhead 95f96fec13 [cron] Bump distribution date (2021-07-11) 2021-07-11 01:03:04 +00:00
Scott Lahteine bd60d77904 🎨 Strip trailing whitespace 2021-07-09 22:24:43 -05:00
thinkyhead 6547b16c45 [cron] Bump distribution date (2021-07-10) 2021-07-10 00:56:46 +00:00
Skruppy e487900069 🐛 Fix HAS_KILL && SOFT_RESET_ON_KILL soft reset button logic (#22269) 2021-07-09 18:25:47 -05:00
InsanityAutomation 3ba5eda0b2 📺 ExtUI pause state response (#22164) 2021-07-09 18:24:14 -05:00
mks-viva 938d86d1c5 MKS MINI12864 V3 for MKS Robin Nano V2/3 (#22285) 2021-07-09 17:59:36 -05:00
Scott Lahteine 26bfc26797 🎨 Check flags without ENABLED 2021-07-09 17:09:58 -05:00
Tanguy Pruvot 6cbd21d0d4 🌐 Update French language (#22323) 2021-07-09 16:07:55 -05:00
Scott Lahteine cd55b5f5cc 📌 Require U8glib-HAL@~0.5.0 (#22324) 2021-07-09 16:02:27 -05:00
BigTreeTech e7e1c51402 🐛 Fixes for BTT Octopus (#22314) 2021-07-09 15:06:10 -05:00
Katelyn Schiesser 79405ce2af 🐛 Fix manage_heaters recursion on servo move (#22313)
Followup to e297748b22
2021-07-08 23:48:11 -05:00
Scott Lahteine 2fa24a637d Revert FLASH_EEPROM_EMULATION include 2021-07-08 23:02:43 -05:00
Skruppy cc1145302b 🐛 Fix AVR DELAY_US int overflow (#22268) 2021-07-08 21:55:34 -05:00
thinkyhead edc037355f [cron] Bump distribution date (2021-07-09) 2021-07-09 00:58:56 +00:00
Scott Lahteine de0fc08744 👽️ Update FLASH_EEPROM_EMULATION include 2021-07-08 00:22:10 -05:00
Scott Lahteine 504c569f9c 🐛 Followup to M20 L
- Fix `printListing` after #22271
2021-07-08 00:22:01 -05:00
Katelyn Schiesser a90b864a3b 🐛 Fix Einsy RAMBo FAN1_PIN (#22305) 2021-07-07 23:45:15 -05:00
Zs.Antal 20b3403ee8 🌐 Update Hungarian language (#22307) 2021-07-07 23:44:07 -05:00
InsanityAutomation 0d5db6aa75 🐛 Fix redundant heater / sensor pin assignments (#22309) 2021-07-07 23:41:33 -05:00
thinkyhead 9642a36895 [cron] Bump distribution date (2021-07-08) 2021-07-08 00:56:59 +00:00
Mihai 094caadf94 Enable 'M20 L' with LONG_FILENAME_HOST_SUPPORT (#22271) 2021-07-06 23:10:35 -05:00
Krzysztof Błażewicz 82193b0923 DWIN LCD for BTT SKR Mini E3 (#22288) 2021-07-06 21:10:40 -05:00
Marcio T e5e939bb4c 📺 Assorted small FTDI Eve Touch UI fixes (#22273) 2021-07-06 20:32:08 -05:00
thinkyhead 3c746645cc [cron] Bump distribution date (2021-07-07) 2021-07-07 01:18:25 +00:00
Serhiy-K bec2c50d29 🌐 Update Russian and Ukrainian (#22290) 2021-07-06 19:55:31 -05:00
Scott Lahteine 3d333c4e5d ♻️ Fix up and use YESNO_ITEM macros 2021-07-06 19:54:02 -05:00
ldursw 0595b87d9a 🐛 Fix Maple / STM32 serial buffer (#22292) 2021-07-06 19:50:01 -05:00
George Fu 1093224ba2 🔨 FYSETC S6 small bootloader target (#22207)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-06 19:40:11 -05:00
Katelyn Schiesser b2f0913083 🐛 Redundant Temp Sensor followup (#22196) 2021-07-06 19:36:41 -05:00
thinkyhead 9eb5444c20 [cron] Bump distribution date (2021-07-06) 2021-07-06 01:00:11 +00:00
thinkyhead de38cae00c [cron] Bump distribution date (2021-07-05) 2021-07-05 00:56:12 +00:00
thinkyhead cff2d16be6 [cron] Bump distribution date (2021-07-04) 2021-07-04 00:58:37 +00:00
thinkyhead ee4c1839d4 [cron] Bump distribution date (2021-07-03) 2021-07-03 00:55:59 +00:00
thinkyhead 2566f5e0f3 [cron] Bump distribution date (2021-07-02) 2021-07-02 01:01:44 +00:00
Cytown 71bf61901c 🚸 Filament Change add confirm step (#22277) 2021-07-01 19:37:44 -05:00
ellensp e96720c076 🐛 Fix Arduino IDE build (TOUCH_UI_FTDI_EVE includes) (#22276)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-07-01 16:27:27 -05:00
Scott Lahteine 03a469724a 📝 Update Z_SAFE_HOMING description 2021-06-30 21:59:58 -05:00
thinkyhead 106eee071b [cron] Bump distribution date (2021-07-01) 2021-07-01 01:00:20 +00:00
thinkyhead 415166e02c [cron] Bump distribution date (2021-06-30) 2021-06-30 01:00:32 +00:00
Scott Lahteine b90de62197 🔨 Clean up build scripts (#22264)
* Add 10K to marlin_blackSTM32F407VET6 (typo?)
* Document custom build scripts.
* Add a Robin common build script.
* Extraneous .ldscript specifiers
2021-06-29 16:25:37 -05:00
Cytown 61c48b8513 🚸 Retain power during Pause (#22227) 2021-06-29 15:36:08 -05:00
Glought 0a655c84bf 🚸 Sanity-check Slim LCD menus with Probe Offset Wizard (#22259) 2021-06-29 15:36:08 -05:00
Katelyn Schiesser a5b2498de9 🐛 Fix ExtUI 'lcd_clicked' definition (#22257) 2021-06-29 12:30:55 -05:00
Katelyn Schiesser c15d9e5b42 🐛 Fix PTC/BTC whole number tests (#22255) 2021-06-28 20:43:05 -05:00
thinkyhead 93c2f9607e [cron] Bump distribution date (2021-06-29) 2021-06-29 00:54:53 +00:00
tome9111991 e00407d820 Ender-3 V2 Display for SKR E3 Turbo (#22229) 2021-06-28 12:08:37 -05:00
Scott Lahteine ff12ea4ab1 🔖 Update configurations version 2021-06-28 01:36:55 -05:00
Katelyn Schiesser 7888584fec 🐛 Use setTargetHotend in menus (#22247) 2021-06-28 01:00:55 -05:00
Katelyn Schiesser 1f6768a87e 🐛 No HOTEND_LOOP with EXTRUDERS 0 (#22245) 2021-06-27 23:02:11 -05:00
thinkyhead f66a771e71 [cron] Bump distribution date (2021-06-28) 2021-06-28 00:58:55 +00:00
Sébastien Gariépy 81ca2dd273 🌐 MSG_MOVE_100MM (#22242) 2021-06-27 16:44:49 -05:00
Cytown d32feb7cd5 🐛 Fix wide glyph characters display (#22237) 2021-06-27 12:39:09 -05:00
Scott Lahteine f9051e5469 ♻️ Refactor status screen timeout 2021-06-27 00:33:44 -05:00
thinkyhead 761d7b77d8 [cron] Bump distribution date (2021-06-27) 2021-06-27 01:03:53 +00:00
Scott Lahteine a789cb4fb6 🎨 Small tweak, ms => now 2021-06-26 14:28:50 -05:00
Scott Lahteine ecb727c3ef 🎨 Format onboard_sd.cpp 2021-06-26 14:01:47 -05:00
ellensp d882a16b80 🐛 Fix Z_MULTI_ENDSTOPS + NUM_Z_STEPPER_DRIVERS 4 compile (#22203) 2021-06-26 13:28:56 -05:00
cr20-123 33185b090e Update/extend Quiet Probing (#22205) 2021-06-26 13:17:18 -05:00
ellensp 7328a6e3a7 🔧 Fix E.S.T. sanity-check errors (#22224) 2021-06-26 11:32:51 -05:00
Cytown 5ceeb8b5ff 🚸 Expand box in draw_boxed_string (#22209) 2021-06-26 11:21:34 -05:00
Marcio T a37cc76cb9 🎨 Fix and improve FTDI Eve Touch UI (#22223) 2021-06-25 23:38:27 -05:00
thinkyhead 696d878b5e [cron] Bump distribution date (2021-06-26) 2021-06-26 00:55:17 +00:00
Keith Bennett e5f06c814b 📝 Update TMC SPI endstops comment (#22221) 2021-06-25 16:12:21 -05:00
Cytown f399706911 🎨 Power-off tone followup (#22222) 2021-06-25 14:50:09 -05:00
Scott Lahteine 500b7872fb 🐛 Trigger existing endstops on G38 hit 2021-06-25 14:44:51 -05:00
thinkyhead 8eee94dbca [cron] Bump distribution date (2021-06-25) 2021-06-25 01:02:43 +00:00
bwspath ba26e902b2 🐛 Fix Octopus build on case-sensitive FS (#22206) 2021-06-24 15:27:54 -05:00
thinkyhead b3b1dbaceb [cron] Bump distribution date (2021-06-24) 2021-06-24 00:44:58 +00:00
Cytown 0bd113b944 Power-off confirm / beep options (#22191) 2021-06-23 11:40:32 -05:00
thinkyhead 48161cf091 [cron] Bump distribution date (2021-06-23) 2021-06-23 00:50:45 +00:00
Serhiy-K b5085bbd1d 🌐 Update Russian language (#22193) 2021-06-22 13:48:56 -05:00
ellensp 41daf63768 🚸 MarlinUI Move Z >= 1000 (#22192) 2021-06-22 13:42:24 -05:00
thinkyhead 5326fdc382 [cron] Bump distribution date (2021-06-22) 2021-06-22 00:54:36 +00:00
Marcio T 0f5126acb2 🎨 Fix and enhance FTDI Eve Touch UI (#22189) 2021-06-21 16:38:28 -05:00
Scott Lahteine b6d8fec6cc 🐛🌐 Fix extra axis translations 2021-06-21 16:31:41 -05:00
Scott Lahteine e5991f786f 🎨 Cosmetic cleanup 2021-06-21 16:24:50 -05:00
Katelyn Schiesser de4b3498c7 🐛 Fix IJK axis references, E stepper indices (#22176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-21 15:36:06 -05:00
Grumpy 59f01b417a 🐛 Fix dual Neopixels (#22174) 2021-06-21 15:12:39 -05:00
ellensp 6bf6973e9d 🐛 Fix heater display options/compile (#22185) 2021-06-21 15:09:21 -05:00
Scott Lahteine 44c41ce54f 🐛 Fix compact sensitive pins array (#22184) 2021-06-20 22:49:57 -05:00
Serhiy-K fb97e43ca3 🌐 Update Ukrainian language (#22183) 2021-06-20 22:48:06 -05:00
Giuliano Zaro 0713862719 🌐 Update Italian language (#22182) 2021-06-20 22:45:26 -05:00
thinkyhead 4d386fdeb5 [cron] Bump distribution date (2021-06-21) 2021-06-21 01:01:00 +00:00
Scott Lahteine a006752fc2 🐛 Fix LCD define typos 2021-06-20 01:19:09 -05:00
thinkyhead 84e50f5fda [cron] Bump distribution date (2021-06-20) 2021-06-20 00:59:38 +00:00
Scott Lahteine 5ce6d8aa1f Cosmetic changes for G28 2021-06-19 14:09:09 -05:00
Katelyn Schiesser f944ec3ac6 🐛 Redundant Temp Sensor followup (#22173) 2021-06-19 13:44:28 -05:00
thinkyhead 758d495d08 [cron] Bump distribution date (2021-06-19) 2021-06-19 00:57:37 +00:00
ellensp ad1ad93ea9 🚸 Manual Move coordinates >= 1000 (#22165) 2021-06-18 14:59:44 -05:00
Scott Lahteine 55feb8ac8d 🐛 Define 'HEAD' axes for Markforged
Fixes #22167
2021-06-18 13:12:55 -05:00
Mike La Spina 135801d9a6 🐛 Fix Air Assist (#22159)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-17 22:46:59 -05:00
thinkyhead ab7e622e4a [cron] Bump distribution date (2021-06-18) 2021-06-18 01:08:37 +00:00
Keith Bennett 34c7b6ddae 🐛 TFT encoder pin for BTT GTR (#22162) 2021-06-17 19:39:48 -05:00
gjdodd a2be93c541 🩹 Extruders 0 patch for PWM Motor Current (#22163) 2021-06-17 19:37:27 -05:00
Ari-SSO aeb21a3516 🚸 Include 'H' value in M412 report (#22138)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-17 19:34:40 -05:00
Katelyn Schiesser d0df8bc3cb 💡 Add G28 L description (#22144) 2021-06-17 01:15:16 -05:00
Victor Oliveira dd9f91f0f0 🐛 Fix env validation for 1280/2560 boards (#22150)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-17 00:58:48 -05:00
Victor Oliveira d4943a607e 🐛 Fix MKS Robin E3 build (#22149) 2021-06-17 00:49:42 -05:00
thinkyhead 43771842d6 [cron] Bump distribution date (2021-06-17) 2021-06-17 00:55:23 +00:00
thinkyhead 9d1e370534 [cron] Bump distribution date (2021-06-16) 2021-06-16 00:57:35 +00:00
thinkyhead 8e06e9ca40 [cron] Bump distribution date (2021-06-15) 2021-06-15 00:59:53 +00:00
ellensp d436c93f37 Redundant Part Cooling Fan (#21888)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2021-06-14 18:45:54 -05:00
Scott Lahteine 6b3dc80b55 🐛 Prevent stepper sleep during long UBL idle (#22137) 2021-06-14 18:44:27 -05:00
qwewer0 6bdd0fcda1 ️ Home Z (and maybe XY) at the start of G35 (#22060) 2021-06-14 17:02:21 -05:00
ellensp a9eff3597d 🚑️ Prevent BFT unaligned compressed data corruption (#22134) 2021-06-14 16:43:50 -05:00
Bo Herrmannsen 3d0e8346be Extruder with Dual Stepper Drivers (#21403) 2021-06-14 04:28:13 -05:00
Victor Oliveira e130aa39c0 🔥 Remove Chitu default Touch Calibration (#22133) 2021-06-14 02:24:49 -05:00
Victor Oliveira d6a7ebce6c MULTI_VOLUME for Color UI and MarlinUI (#22004) 2021-06-14 00:39:16 -05:00
InsanityAutomation a3e8bb99e4 🎨 ExtUI "user click" and other tweaks (#22122)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-06-13 22:08:46 -05:00
Victor Oliveira ef321cb723 🐛 Include common TFT driver macros (#22125) 2021-06-13 20:47:38 -05:00
Katelyn Schiesser 3a03f76f3c 🐛 Fix UBL 'R' parameter and adjust 'P' (#22129) 2021-06-13 20:43:43 -05:00
Sola b87e2ceda1 🐛 Fix ExtUI/DGUS Celsius display (#22121) 2021-06-13 20:31:38 -05:00
Scott Lahteine d5510ea519 🎨 General cleanup of extui/dgus
In relation to #22121
2021-06-13 20:19:43 -05:00
thinkyhead 82ac7da0a7 [cron] Bump distribution date (2021-06-14) 2021-06-14 00:55:40 +00:00
Victor Oliveira 0669053b78 🔨 Fix Serial+MSC for _USB envs (#22116) 2021-06-13 19:01:53 -05:00
Katelyn Schiesser 31d84bac4c 🐛 Use whole PROBE_TEMP_COMPENSATION values (#22130) 2021-06-13 16:56:18 -05:00
Scott Lahteine 90dc41139f 🏗️ Refactor build encrypt / rename (#22124) 2021-06-13 15:43:33 -05:00
thinkyhead a9faf9effa [cron] Bump distribution date (2021-06-13) 2021-06-13 00:59:15 +00:00
Scott Lahteine 9bf5cddb46 🩹 Use #pragma once in pins files 2021-06-12 16:28:30 -05:00
Scott Lahteine c221ee1144 📝 Number SKR EXP headers 2021-06-12 12:42:17 -05:00
Scott Lahteine fd3f7b3473 🎨 Clean up LPC1768 SPI init 2021-06-12 12:42:17 -05:00
Scott Lahteine 87344ae7f3 🔨 Remove obsolete ON_BOARD_SPI_DEVICE 2021-06-12 11:40:35 -05:00
mrv96 4eecc20ebc 🔨 Robin Nano V3 overridable POWER_LOSS_PIN (#22123) 2021-06-12 11:19:37 -05:00
thinkyhead cc100429f2 [cron] Bump distribution date (2021-06-12) 2021-06-12 00:52:56 +00:00
Scott Lahteine 799a4ecab9 📝 Describe G12 XYZ 2021-06-11 19:29:59 -05:00
Scott Lahteine 72b9f84723 🐛 Fix Z endstop enum
Followup to 92dea8e6cc
2021-06-11 18:33:07 -05:00
Victor Oliveira 221bec5ce8 🐛 Fix boot / SD for STM32 (F103Rx) boards (#22087) 2021-06-11 16:13:22 -05:00
DerAndere c2f67cf8ee ✏️ Six Linear Axes followup (Fix M503) (#22112) 2021-06-11 15:53:23 -05:00
Katelyn Schiesser 629551d9bc More flexible redundant temp sensor (#22085) 2021-06-11 15:51:29 -05:00
thinkyhead 1daee11db9 [cron] Bump distribution date (2021-06-11) 2021-06-11 00:57:12 +00:00
Keith Bennett 673bccef3e 🔨 Envs for BTT SKR Mini with RET6 (512K) (#22050) 2021-06-10 16:09:29 -05:00
Zs.Antal 8d54f9b847 🌐 Update Hungarian language (#22083) 2021-06-10 16:05:07 -05:00
grauerfuchs eac0f6be3e 🔨 MightyBoard envs for A.B.M. (#22100) 2021-06-10 16:04:18 -05:00
Radek ded1b0c26f 🔧 EEPROM options for BTT SKR 1.4 (#22092) 2021-06-10 12:51:07 -05:00
Marcio T 6d2c7aa227 🎨 Fix and improve FTDI Eve Touch UI (#22093) 2021-06-10 03:24:04 -05:00
Marcio T 9ca121bc5a ✏️ Six Linear Axes followup (typos) (#22094) 2021-06-10 03:08:42 -05:00
ellensp 54d526f6b6 🔧 Enforce BLTouch settings (#22086) 2021-06-10 02:09:52 -05:00
Scott Lahteine 0e1e159187 🎨 Adjust some conditionals 2021-06-10 02:05:04 -05:00
thinkyhead d27d86d596 [cron] Bump distribution date (2021-06-10) 2021-06-10 01:03:10 +00:00
thinkyhead 403b366744 [cron] Bump distribution date (2021-06-09) 2021-06-09 01:05:08 +00:00
Scott Lahteine 77496c8235 ️ Optimize Sensitive Pins array (except STM32) (#22080) 2021-06-08 19:55:27 -05:00
Kyle Repinski 7c5e3b9071 🐛 Fix small/huge I2C EEPROM address (#22081) 2021-06-08 18:56:16 -05:00
ellensp 70b80fcd16 🎨 IJK auto-allocation (#22075) 2021-06-08 17:43:39 -05:00
Scott Lahteine d320545066 🎨 Laser Ammeter followup (#22079)
Followup to #21835
2021-06-08 07:51:28 -05:00
thinkyhead 420d5b0b41 [cron] Bump distribution date (2021-06-08) 2021-06-08 01:26:19 +00:00
Mike La Spina 002e1d49fe Add Laser Based I2C Ammeter Feature (#21835) 2021-06-07 14:15:09 -05:00
ellensp 588a74fd9d expose hidden BLTOUCH setting changes (#22069) 2021-06-07 14:09:12 -05:00
Marcio T 209c44b803 🎨 Reorganize FTDI Touch UI variants (#22066) 2021-06-06 23:26:42 -05:00
DerAndere e31c267481 ✏️ Six Linear Axes followup (Hybrid Threshold init) (#22068) 2021-06-06 23:23:23 -05:00
thinkyhead fa94fc5f35 [cron] Bump distribution date (2021-06-07) 2021-06-07 01:29:19 +00:00
ellensp 3c522fff31 🩹 Fallback ID for MKS TS35 V2.0 (#22031) 2021-06-06 04:21:14 -05:00
Scott Lahteine 0e40d47c72 👷 Add caching to CI workflow 2021-06-06 03:58:24 -05:00
7FM e7e60a50d8 👽️ Include <EEPROM.h> in STM32 (for now) (#22054) 2021-06-06 02:56:24 -05:00
ellensp bc6d8f99b2 📦️ Malyan M200 with HAL/STM32 (#22052) 2021-06-06 02:50:14 -05:00
George Fu 21739f41c2 📌 Update FYSETC E4 to espressif32@2.1.0 (#22049) 2021-06-06 01:37:52 -05:00
DerAndere ba4fa49834 ✏️ Followup to Six Linear Axes (#22056) 2021-06-06 01:30:39 -05:00
Victor Oliveira ce5dece3b5 ⚰️ Remove obsolete CUSTOM_SPI_PINS (#22058) 2021-06-06 00:59:19 -05:00
thinkyhead b4114553c8 [cron] Bump distribution date (2021-06-06) 2021-06-06 01:27:16 +00:00
ellensp 493e6c2cba 🔧 Check G29_RETRY_AND_RECOVER requirements (#21921) 2021-06-05 19:16:40 -05:00
Scott Lahteine daab75b7ea 🔧 FOAMCUTTER_XYUV moved to custom config 2021-06-05 17:08:10 -05:00
1831 changed files with 157988 additions and 46749 deletions
+29 -12
View File
@@ -58,15 +58,16 @@ jobs:
#- STM32F103RC_btt_maple
- STM32F103RC_btt_USB_maple
- STM32F103RC_fysetc
- STM32F103RC_fysetc_maple
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103VE_longer
- jgaurora_a5s_a1_maple
- STM32F103VE_longer_maple
#- mks_robin_maple
- mks_robin_lite
- mks_robin_pro
- mks_robin_lite_maple
- mks_robin_pro_maple
#- mks_robin_nano35_maple
#- STM32F103RET6_creality_maple
#- STM32F103RE_creality_maple
- STM32F103VE_ZM3E4V2_USB_maple
# STM32 (ST) Environments
@@ -74,7 +75,8 @@ jobs:
#- STM32F103RC_btt_USB
- STM32F103RE_btt
- STM32F103RE_btt_USB
- STM32F103RET6_creality
- STM32F103RE_creality
- STM32F103VE_longer
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
@@ -95,6 +97,7 @@ jobs:
- REMRAM_V1
- BTT_SKR_SE_BX
- chitu_f103
- Index_Mobo_Rev03
# Put lengthy tests last
@@ -109,20 +112,34 @@ jobs:
steps:
- name: Check out the PR
uses: actions/checkout@v3
- name: Cache pip
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Cache PlatformIO
uses: actions/cache@v3
with:
path: ~/.platformio
key: ${{ runner.os }}-${{ hashFiles('**/lockfiles') }}
- name: Select Python 3.7
uses: actions/setup-python@v1
uses: actions/setup-python@v3
with:
python-version: '3.7' # Version range or exact version of a Python version to use, using semvers version range syntax.
architecture: 'x64' # optional x64 or x86. Defaults to x64 if not specified
- name: Install PlatformIO
run: |
pip install -U https://github.com/platformio/platformio-core/archive/develop.zip
pip install -U https://github.com/platformio/platformio-core/archive/v5.2.5.zip
platformio update
- name: Check out the PR
uses: actions/checkout@v2
- name: Run ${{ matrix.test-platform }} Tests
run: |
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}
+14 -12
View File
@@ -22,12 +22,16 @@
# Generated files
_Version.h
bdf2u8g
marlin_config.json
mczip.h
*.gen
*.sublime-workspace
#
# OS
#
applet/
*.DS_Store
.DS_Store
#
# Misc
@@ -37,7 +41,6 @@ applet/
*.rej
*.bak
*.idea
*.s
*.i
*.ii
*.swp
@@ -137,16 +140,19 @@ __vm/
vc-fileutils.settings
# Visual Studio Code
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/*.db
.vscode/*
!.vscode/extensions.json
# cmake
#Simulation
imgui.ini
eeprom.dat
spi_flash.bin
#cmake
CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
build/
# CLion
cmake-build-*
@@ -163,7 +169,3 @@ __pycache__
# IOLogger logs
*_log.csv
# Simulation / Native
eeprom.dat
imgui.ini
+11
View File
@@ -0,0 +1,11 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"marlinfirmware.auto-build",
"platformio.platformio-ide"
],
"unwantedRecommendations": [
"ms-vscode.cpptools-extension-pack"
]
}
+415 -167
View File
File diff suppressed because it is too large Load Diff
+596 -240
View File
File diff suppressed because it is too large Load Diff
+160 -9
View File
@@ -110,7 +110,7 @@ LIQUID_TWI2 ?= 0
WIRE ?= 0
# This defines if Tone is needed (i.e SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximatively 350 bytes of memory.
# Disabling this (and SPEAKER) saves approximately 350 bytes of memory.
TONE ?= 1
# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
@@ -132,7 +132,7 @@ CC_MIN:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_MINOR__ | cut -f3 -d\ )
CC_PATCHLEVEL:=$(shell $(CC) -dM -E - < /dev/null | grep __GNUC_PATCHLEVEL__ | cut -f3 -d\ )
CC_VER:=$(shell echo $$(( $(CC_MAJ) * 10000 + $(CC_MIN) * 100 + $(CC_PATCHLEVEL) )))
ifeq ($(shell test $(CC_VER) -lt 40901 && echo 1),1)
@echo This version of GCC is likely broken. Enabling relocation workaround.
$(warning This GCC version $(CC_VER) is likely broken. Enabling relocation workaround.)
RELOC_WORKAROUND = 1
endif
@@ -191,6 +191,134 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1034)
# RAMPS Derivatives - ATmega1280, ATmega2560
#
# 3Drag Controller
else ifeq ($(HARDWARE_MOTHERBOARD),1100)
# Velleman K8200 Controller (derived from 3Drag Controller)
else ifeq ($(HARDWARE_MOTHERBOARD),1101)
# Velleman K8400 Controller (derived from 3Drag Controller)
else ifeq ($(HARDWARE_MOTHERBOARD),1102)
# Velleman K8600 Controller (Vertex Nano)
else ifeq ($(HARDWARE_MOTHERBOARD),1103)
# Velleman K8800 Controller (Vertex Delta)
else ifeq ($(HARDWARE_MOTHERBOARD),1104)
# 2PrintBeta BAM&DICE with STK drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1105)
# 2PrintBeta BAM&DICE Due with STK drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1106)
# MKS BASE v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1107)
# MKS BASE v1.4 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1108)
# MKS BASE v1.5 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1109)
# MKS BASE v1.6 with Allegro A4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1110)
# MKS BASE 1.0 with Heroic HR4982 stepper drivers
else ifeq ($(HARDWARE_MOTHERBOARD),1111)
# MKS GEN v1.3 or 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1112)
# MKS GEN L
else ifeq ($(HARDWARE_MOTHERBOARD),1113)
# BigTreeTech or BIQU KFB2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1114)
# zrib V2.0 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1115)
# zrib V5.2 (Chinese RAMPS replica)
else ifeq ($(HARDWARE_MOTHERBOARD),1116)
# Felix 2.0+ Electronics Board (RAMPS like)
else ifeq ($(HARDWARE_MOTHERBOARD),1117)
# Invent-A-Part RigidBoard
else ifeq ($(HARDWARE_MOTHERBOARD),1118)
# Invent-A-Part RigidBoard V2
else ifeq ($(HARDWARE_MOTHERBOARD),1119)
# Sainsmart 2-in-1 board
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1123)
# Azteeg X3 Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1124)
# Ultimainboard 2.x (Uses TEMP_SENSOR 20)
else ifeq ($(HARDWARE_MOTHERBOARD),1125)
# Rumba
else ifeq ($(HARDWARE_MOTHERBOARD),1126)
# Raise3D N series Rumba derivative
else ifeq ($(HARDWARE_MOTHERBOARD),1127)
# Rapide Lite 200 (v1, low-cost RUMBA clone with drv)
else ifeq ($(HARDWARE_MOTHERBOARD),1128)
# Formbot T-Rex 2 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1129)
# Formbot T-Rex 3
else ifeq ($(HARDWARE_MOTHERBOARD),1130)
# Formbot Raptor
else ifeq ($(HARDWARE_MOTHERBOARD),1131)
# Formbot Raptor 2
else ifeq ($(HARDWARE_MOTHERBOARD),1132)
# bq ZUM Mega 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1133)
# MakeBoard Mini v2.1.2 by MicroMake
else ifeq ($(HARDWARE_MOTHERBOARD),1134)
# TriGorilla Anycubic version 1.3-based on RAMPS EFB
else ifeq ($(HARDWARE_MOTHERBOARD),1135)
# ... Ver 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1136)
# ... Rev 1.1 (new servo pin order)
else ifeq ($(HARDWARE_MOTHERBOARD),1137)
# Creality: Ender-4, CR-8
else ifeq ($(HARDWARE_MOTHERBOARD),1138)
# Creality: CR10S, CR20, CR-X
else ifeq ($(HARDWARE_MOTHERBOARD),1139)
# Dagoma F5
else ifeq ($(HARDWARE_MOTHERBOARD),1140)
# FYSETC F6 1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1141)
# FYSETC F6 1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1142)
# Wanhao Duplicator i3 Plus
else ifeq ($(HARDWARE_MOTHERBOARD),1143)
# VORON Design
else ifeq ($(HARDWARE_MOTHERBOARD),1144)
# Tronxy TRONXY-V3-1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1145)
# Z-Bolt X Series
else ifeq ($(HARDWARE_MOTHERBOARD),1146)
# TT OSCAR
else ifeq ($(HARDWARE_MOTHERBOARD),1147)
# Overlord/Overlord Pro
else ifeq ($(HARDWARE_MOTHERBOARD),1148)
# ADIMLab Gantry v1
else ifeq ($(HARDWARE_MOTHERBOARD),1149)
# ADIMLab Gantry v2
else ifeq ($(HARDWARE_MOTHERBOARD),1150)
# BIQU Tango V1
else ifeq ($(HARDWARE_MOTHERBOARD),1151)
# MKS GEN L V2
else ifeq ($(HARDWARE_MOTHERBOARD),1152)
# MKS GEN L V2.1
else ifeq ($(HARDWARE_MOTHERBOARD),1153)
# Copymaster 3D
else ifeq ($(HARDWARE_MOTHERBOARD),1154)
# Ortur 4
else ifeq ($(HARDWARE_MOTHERBOARD),1155)
# Tenlog D3 Hero IDEX printer
else ifeq ($(HARDWARE_MOTHERBOARD),1156)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Fan, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1157)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend0, Hotend1, Hotend2, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1158)
# Ramps S 1.2 by Sakul.cz (Power outputs: Hotend, Fan0, Fan1, Bed)
else ifeq ($(HARDWARE_MOTHERBOARD),1159)
# Longer LK1 PRO / Alfawise U20 Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1160)
# Longer LKx PRO / Alfawise Uxx Pro (PRO version)
else ifeq ($(HARDWARE_MOTHERBOARD),1161)
# 3Drag Controller
else ifeq ($(HARDWARE_MOTHERBOARD),1100)
# Velleman K8200 Controller (derived from 3Drag Controller)
@@ -358,20 +486,38 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1311)
else ifeq ($(HARDWARE_MOTHERBOARD),1312)
# Mega controller
else ifeq ($(HARDWARE_MOTHERBOARD),1313)
# Geeetech GT2560 Rev B for Mecreator2
# Geeetech GT2560 Rev A
else ifeq ($(HARDWARE_MOTHERBOARD),1314)
# Geeetech GT2560 Rev. A
# Geeetech GT2560 Rev A+ (with auto level probe)
else ifeq ($(HARDWARE_MOTHERBOARD),1315)
# Geeetech GT2560 Rev. A+ (with auto level probe)
# Geeetech GT2560 Rev B
else ifeq ($(HARDWARE_MOTHERBOARD),1316)
# Geeetech GT2560 Rev B for A10(M/D)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1317)
# Geeetech GT2560 Rev B for A20(M/D)
# Geeetech GT2560 Rev B for A10(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1318)
# Einstart retrofit
# Geeetech GT2560 Rev B for Mecreator2
else ifeq ($(HARDWARE_MOTHERBOARD),1319)
# Wanhao 0ne+ i3 Mini
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1320)
# Einstart retrofit
else ifeq ($(HARDWARE_MOTHERBOARD),1321)
# Wanhao 0ne+ i3 Mini
else ifeq ($(HARDWARE_MOTHERBOARD),1322)
# Leapfrog Xeed 2015
else ifeq ($(HARDWARE_MOTHERBOARD),1323)
# PICA Shield (original version)
else ifeq ($(HARDWARE_MOTHERBOARD),1324)
# PICA Shield (rev C or later)
else ifeq ($(HARDWARE_MOTHERBOARD),1325)
# Intamsys 4.0 (Funmat HT)
else ifeq ($(HARDWARE_MOTHERBOARD),1326)
# Malyan M180 Mainboard Version 2 (no display function, direct gcode only)
else ifeq ($(HARDWARE_MOTHERBOARD),1327)
# Geeetech GT2560 Rev B for A20(M/T/D)
else ifeq ($(HARDWARE_MOTHERBOARD),1328)
# Mega controller & Protoneer CNC Shield V3.00
else ifeq ($(HARDWARE_MOTHERBOARD),1329)
#
# ATmega1281, ATmega2561
@@ -445,6 +591,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1510)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# ZoneStar ZMIB V2
else ifeq ($(HARDWARE_MOTHERBOARD),1511)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
#
# Other ATmega644P, ATmega644, ATmega1284P
+1 -1
View File
@@ -41,7 +41,7 @@
* here we define this default string as the date where the latest release
* version was tagged.
*/
//#define STRING_DISTRIBUTION_DATE "2019-07-10"
//#define STRING_DISTRIBUTION_DATE "2022-04-05"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
+36 -15
View File
@@ -35,13 +35,32 @@
// Public Variables
// ------------------------
//uint8_t MCUSR;
// Don't initialize/override variable (which would happen in .init4)
uint8_t MarlinHAL::reset_reason __attribute__((section(".noinit")));
// ------------------------
// Public functions
// ------------------------
void HAL_init() {
__attribute__((naked)) // Don't output function pro- and epilogue
__attribute__((used)) // Output the function, even if "not used"
__attribute__((section(".init3"))) // Put in an early user definable section
void save_reset_reason() {
#if ENABLED(OPTIBOOT_RESET_REASON)
__asm__ __volatile__(
A("STS %0, r2")
: "=m"(hal.reset_reason)
);
#else
hal.reset_reason = MCUSR;
#endif
// Clear within 16ms since WDRF bit enables a 16ms watchdog timer -> Boot loop
hal.clear_reset_source();
wdt_disable();
}
void MarlinHAL::init() {
// Init Servo Pins
#define INIT_SERVO(N) OUT_WRITE(SERVO##N##_PIN, LOW)
#if HAS_SERVO_0
@@ -56,9 +75,11 @@ void HAL_init() {
#if HAS_SERVO_3
INIT_SERVO(3);
#endif
init_pwm_timers(); // Init user timers to default frequency - 1000HZ
}
void HAL_reboot() {
void MarlinHAL::reboot() {
#if ENABLED(USE_WATCHDOG)
while (1) { /* run out the watchdog */ }
#else
@@ -74,20 +95,20 @@ void HAL_reboot() {
#else // !SDSUPPORT
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
extern "C" {
extern char __bss_end;
extern char __heap_start;
extern void* __brkval;
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
int freeMemory() {
int free_memory;
if ((int)__brkval == 0)
free_memory = ((int)&free_memory) - ((int)&__bss_end);
else
free_memory = ((int)&free_memory) - ((int)__brkval);
return free_memory;
}
}
}
#endif // !SDSUPPORT
+132 -78
View File
@@ -39,6 +39,19 @@
#include <avr/interrupt.h>
#include <avr/io.h>
//
// Default graphical display delays
//
#if F_CPU >= 20000000
#define CPU_ST7920_DELAY_1 150
#define CPU_ST7920_DELAY_2 0
#define CPU_ST7920_DELAY_3 150
#elif F_CPU == 16000000
#define CPU_ST7920_DELAY_1 125
#define CPU_ST7920_DELAY_2 0
#define CPU_ST7920_DELAY_3 188
#endif
#ifndef pgm_read_ptr
// Compatibility for avr-libc 1.8.0-4.1 included with Ubuntu for
// Windows Subsystem for Linux on Windows 10 as of 10/18/2019
@@ -61,9 +74,9 @@
#define CRITICAL_SECTION_START() unsigned char _sreg = SREG; cli()
#define CRITICAL_SECTION_END() SREG = _sreg
#endif
#define ISRS_ENABLED() TEST(SREG, SREG_I)
#define ENABLE_ISRS() sei()
#define DISABLE_ISRS() cli()
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
#define PWM_FREQUENCY 1000 // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
// ------------------------
// Types
@@ -71,16 +84,15 @@
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
// ------------------------
// Public Variables
// ------------------------
//extern uint8_t MCUSR;
// Serial ports
// ------------------------
#ifdef USBCON
#include "../../core/serial_hook.h"
typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
@@ -129,64 +141,20 @@ typedef int8_t pin_t;
#endif
#endif
// ------------------------
// Public functions
// ------------------------
void HAL_init();
//void cli();
//void _delay_ms(const int delay);
inline void HAL_clear_reset_source() { MCUSR = 0; }
inline uint8_t HAL_get_reset_source() { return MCUSR; }
void HAL_reboot();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
extern "C" int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
//
// ADC
#ifdef DIDR2
#define HAL_ANALOG_SELECT(ind) do{ if (ind < 8) SBI(DIDR0, ind); else SBI(DIDR2, ind & 0x07); }while(0)
#else
#define HAL_ANALOG_SELECT(ind) SBI(DIDR0, ind);
#endif
inline void HAL_adc_init() {
ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07;
DIDR0 = 0;
#ifdef DIDR2
DIDR2 = 0;
#endif
}
#define SET_ADMUX_ADCSRA(ch) ADMUX = _BV(REFS0) | (ch & 0x07); SBI(ADCSRA, ADSC)
#ifdef MUX5
#define HAL_START_ADC(ch) if (ch > 7) ADCSRB = _BV(MUX5); else ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#else
#define HAL_START_ADC(ch) ADCSRB = 0; SET_ADMUX_ADCSRA(ch)
#endif
//
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
#define HAL_READ_ADC() ADC
#define HAL_ADC_READY() !TEST(ADCSRA, ADSC)
//
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
#define HAL_SENSITIVE_PINS 0, 1
#define HAL_SENSITIVE_PINS 0, 1,
#ifdef __AVR_AT90USB1286__
#define JTAG_DISABLE() do{ MCUCR = 0x80; MCUCR = 0x80; }while(0)
@@ -195,23 +163,109 @@ inline void HAL_adc_init() {
// AVR compatibility
#define strtof strtod
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
// ------------------------
// Class Utilities
// ------------------------
/**
* set_pwm_frequency
* Sets the frequency of the timer corresponding to the provided pin
* as close as possible to the provided desired frequency. Internally
* calculates the required waveform generation mode, prescaler and
* resolution values required and sets the timer registers accordingly.
* NOTE that the frequency is applied to all pins on the timer (Ex OC3A, OC3B and OC3B)
* NOTE that there are limitations, particularly if using TIMER2. (see Configuration_adv.h -> FAST FAN PWM Settings)
*/
void set_pwm_frequency(const pin_t pin, int f_desired);
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
/**
* set_pwm_duty
* Sets the PWM duty cycle of the provided pin to the provided value
* Optionally allows inverting the duty cycle [default = false]
* Optionally allows changing the maximum size of the provided value to enable finer PWM duty control [default = 255]
*/
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
extern "C" int freeMemory();
#pragma GCC diagnostic pop
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
static void init(); // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Restart the firmware from 0x0
// Interrupts
static bool isr_state() { return TEST(SREG, SREG_I); }
static void isr_on() { sei(); }
static void isr_off() { cli(); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask() {}
// Reset
static uint8_t reset_reason;
static uint8_t get_reset_source() { return reset_reason; }
static void clear_reset_source() { MCUSR = 0; }
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
// Called by Temperature::init once at startup
static void adc_init() {
ADCSRA = _BV(ADEN) | _BV(ADSC) | _BV(ADIF) | 0x07;
DIDR0 = 0;
#ifdef DIDR2
DIDR2 = 0;
#endif
}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {
#ifdef DIDR2
if (ch > 7) { SBI(DIDR2, ch & 0x07); return; }
#endif
SBI(DIDR0, ch);
}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) {
#ifdef MUX5
ADCSRB = ch > 7 ? _BV(MUX5) : 0;
#else
ADCSRB = 0;
#endif
ADMUX = _BV(REFS0) | (ch & 0x07);
SBI(ADCSRA, ADSC);
}
// Is the ADC ready for reading?
static bool adc_ready() { return !TEST(ADCSRA, ADSC); }
// The current value of the ADC register
static __typeof__(ADC) adc_value() { return ADC; }
/**
* init_pwm_timers
* Set the default frequency for timers 2-5 to 1000HZ
*/
static void init_pwm_timers();
/**
* Set the PWM duty cycle for the pin to the given value.
* Optionally invert the duty cycle [default = false]
* Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
/**
* Set the frequency of the timer for the given pin as close as
* possible to the provided desired frequency. Internally calculate
* the required waveform generation mode, prescaler, and resolution
* values and set timer registers accordingly.
* NOTE that the frequency is applied to all pins on the timer (Ex OC3A, OC3B and OC3B)
* NOTE that there are limitations, particularly if using TIMER2. (see Configuration_adv.h -> FAST_PWM_FAN Settings)
*/
static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
};
+13 -12
View File
@@ -34,21 +34,21 @@
#include "../../inc/MarlinConfig.h"
void spiBegin() {
OUT_WRITE(SD_SS_PIN, HIGH);
#if PIN_EXISTS(SD_SS)
// Do not init HIGH for boards with pin 4 used as Fans or Heaters or otherwise, not likely to have multiple SPI devices anyway.
#if defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || defined(__AVR_ATmega644PA__) || defined(__AVR_ATmega1284P__)
// SS must be in output mode even it is not chip select
SET_OUTPUT(SD_SS_PIN);
#else
// set SS high - may be chip select for another SPI device
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
#endif
SET_OUTPUT(SD_SCK_PIN);
SET_INPUT(SD_MISO_PIN);
SET_OUTPUT(SD_MOSI_PIN);
#if DISABLED(SOFTWARE_SPI)
// SS must be in output mode even it is not chip select
//SET_OUTPUT(SD_SS_PIN);
// set SS high - may be chip select for another SPI device
//#if SET_SPI_SS_HIGH
//WRITE(SD_SS_PIN, HIGH);
//#endif
// set a default rate
spiInit(1);
#endif
IF_DISABLED(SOFTWARE_SPI, spiInit(SPI_HALF_SPEED));
}
#if NONE(SOFTWARE_SPI, FORCE_SOFT_SPI)
@@ -74,7 +74,8 @@ void spiBegin() {
#elif defined(PRR0)
PRR0
#endif
, PRSPI);
, PRSPI
);
SPCR = _BV(SPE) | _BV(MSTR) | (spiRate >> 1);
SPSR = spiRate & 1 || spiRate == 6 ? 0 : _BV(SPI2X);
+26
View File
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;
+2 -2
View File
@@ -486,7 +486,7 @@ void MarlinSerial<Cfg>::write(const uint8_t c) {
const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Make room by polling if it is possible to transmit, and do so!
while (i == tx_buffer.tail) {
@@ -534,7 +534,7 @@ void MarlinSerial<Cfg>::flushTX() {
if (!_written) return;
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Wait until everything was transmitted - We must do polling, as interrupts are disabled
while (tx_buffer.head != tx_buffer.tail || !B_TXC) {
+4 -4
View File
@@ -191,13 +191,13 @@
rx_framing_errors;
static ring_buffer_pos_t rx_max_enqueued;
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_head();
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_head();
static volatile bool rx_tail_value_not_stable;
static volatile uint16_t rx_tail_value_backup;
static FORCE_INLINE void atomic_set_rx_tail(ring_buffer_pos_t value);
static FORCE_INLINE ring_buffer_pos_t atomic_read_rx_tail();
FORCE_INLINE static void atomic_set_rx_tail(ring_buffer_pos_t value);
FORCE_INLINE static ring_buffer_pos_t atomic_read_rx_tail();
public:
FORCE_INLINE static void store_rxd_char();
@@ -217,7 +217,7 @@
#endif
enum { HasEmergencyParser = Cfg::EMERGENCYPARSER };
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
+46
View File
@@ -213,6 +213,51 @@ void setup_endstop_interrupts() {
pciSetup(K_MIN_PIN);
#endif
#endif
#if HAS_U_MAX
#if (digitalPinToInterrupt(U_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(U_MAX_PIN), "U_MAX_PIN is not interrupt-capable");
pciSetup(U_MAX_PIN);
#endif
#elif HAS_U_MIN
#if (digitalPinToInterrupt(U_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(U_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(U_MIN_PIN), "U_MIN_PIN is not interrupt-capable");
pciSetup(U_MIN_PIN);
#endif
#endif
#if HAS_V_MAX
#if (digitalPinToInterrupt(V_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(V_MAX_PIN), "V_MAX_PIN is not interrupt-capable");
pciSetup(V_MAX_PIN);
#endif
#elif HAS_V_MIN
#if (digitalPinToInterrupt(V_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(V_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(V_MIN_PIN), "V_MIN_PIN is not interrupt-capable");
pciSetup(V_MIN_PIN);
#endif
#endif
#if HAS_W_MAX
#if (digitalPinToInterrupt(W_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(W_MAX_PIN), "W_MAX_PIN is not interrupt-capable");
pciSetup(W_MAX_PIN);
#endif
#elif HAS_W_MIN
#if (digitalPinToInterrupt(W_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(W_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(W_MIN_PIN), "W_MIN_PIN is not interrupt-capable");
pciSetup(W_MIN_PIN);
#endif
#endif
#if HAS_X2_MAX
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
@@ -301,5 +346,6 @@ void setup_endstop_interrupts() {
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
// If we arrive here without raising an assertion, each pin has either an EXT-interrupt or a PCI.
}
+135 -195
View File
@@ -21,11 +21,7 @@
*/
#ifdef __AVR__
#include "../../inc/MarlinConfigPre.h"
#if NEEDS_HARDWARE_PWM // Specific meta-flag for features that mandate PWM
#include "HAL.h"
#include "../../inc/MarlinConfig.h"
struct Timer {
volatile uint8_t* TCCRnQ[3]; // max 3 TCCR registers per timer
@@ -33,250 +29,194 @@ struct Timer {
volatile uint16_t* ICRn; // max 1 ICR register per timer
uint8_t n; // the timer number [0->5]
uint8_t q; // the timer output [0->2] (A->C)
bool isPWM; // True if pin is a "hardware timer"
bool isProtected; // True if timer is protected
};
// Macros for the Timer structure
#define _SET_WGMnQ(T, V) do{ \
*(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
*(T.TCCRnQ)[1] = (*(T.TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
}while(0)
// Set TCCR CS bits
#define _SET_CSn(T, V) (*(T.TCCRnQ)[1] = (*(T.TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0))
// Set TCCR COM bits
#define _SET_COMnQ(T, Q, V) (*(T.TCCRnQ)[0] = (*(T.TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q))))
// Set OCRnQ register
#define _SET_OCRnQ(T, Q, V) (*(T.OCRnQ)[Q] = int(V) & 0xFFFF)
// Set ICRn register (one per timer)
#define _SET_ICRn(T, V) (*(T.ICRn) = int(V) & 0xFFFF)
/**
* get_pwm_timer
* Get the timer information and register of the provided pin.
* Return a Timer struct containing this information.
* Used by set_pwm_frequency, set_pwm_duty
* Return a Timer struct describing a pin's timer.
*/
Timer get_pwm_timer(const pin_t pin) {
const Timer get_pwm_timer(const pin_t pin) {
uint8_t q = 0;
switch (digitalPinToTimer(pin)) {
// Protect reserved timers (TIMER0 & TIMER1)
#ifdef TCCR0A
#if !AVR_AT90USB1286_FAMILY
case TIMER0A:
#endif
case TIMER0B:
IF_DISABLED(AVR_AT90USB1286_FAMILY, case TIMER0A:)
#endif
#ifdef TCCR1A
case TIMER1A: case TIMER1B:
#endif
break;
#if defined(TCCR2) || defined(TCCR2A)
#ifdef TCCR2
case TIMER2: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2, nullptr, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2, nullptr, nullptr },
/*ICRn*/ nullptr,
/*n, q*/ 2, 0
};
}
#elif defined(TCCR2A)
#if ENABLED(USE_OCR2A_AS_TOP)
case TIMER2A: break; // protect TIMER2A
case TIMER2B: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
/*ICRn*/ nullptr,
/*n, q*/ 2, 1
};
return timer;
}
#else
case TIMER2B: ++q;
case TIMER2A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR2A, &TCCR2B, nullptr },
/*OCRnQ*/ { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr },
/*ICRn*/ nullptr,
2, q
};
return timer;
}
#endif
#endif
break; // Protect reserved timers (TIMER0 & TIMER1)
#ifdef TCCR0A
case TIMER0B: // Protected timer, but allow setting the duty cycle on OCR0B for pin D4 only
return Timer({ { &TCCR0A, nullptr, nullptr }, { (uint16_t*)&OCR0A, (uint16_t*)&OCR0B, nullptr }, nullptr, 0, 1, true, true });
#endif
#if HAS_TCCR2
case TIMER2:
return Timer({ { &TCCR2, nullptr, nullptr }, { (uint16_t*)&OCR2, nullptr, nullptr }, nullptr, 2, 0, true, false });
#elif ENABLED(USE_OCR2A_AS_TOP)
case TIMER2A: break; // Protect TIMER2A since its OCR is used by TIMER2B
case TIMER2B:
return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, 1, true, false });
#elif defined(TCCR2A)
case TIMER2B: ++q; case TIMER2A:
return Timer({ { &TCCR2A, &TCCR2B, nullptr }, { (uint16_t*)&OCR2A, (uint16_t*)&OCR2B, nullptr }, nullptr, 2, q, true, false });
#endif
#ifdef OCR3C
case TIMER3C: ++q;
case TIMER3B: ++q;
case TIMER3A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR3A, &TCCR3B, &TCCR3C },
/*OCRnQ*/ { &OCR3A, &OCR3B, &OCR3C },
/*ICRn*/ &ICR3,
/*n, q*/ 3, q
};
return timer;
}
case TIMER3C: ++q; case TIMER3B: ++q; case TIMER3A:
return Timer({ { &TCCR3A, &TCCR3B, &TCCR3C }, { &OCR3A, &OCR3B, &OCR3C }, &ICR3, 3, q, true, false });
#elif defined(OCR3B)
case TIMER3B: ++q;
case TIMER3A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR3A, &TCCR3B, nullptr },
/*OCRnQ*/ { &OCR3A, &OCR3B, nullptr },
/*ICRn*/ &ICR3,
/*n, q*/ 3, q
};
return timer;
}
case TIMER3B: ++q; case TIMER3A:
return Timer({ { &TCCR3A, &TCCR3B, nullptr }, { &OCR3A, &OCR3B, nullptr }, &ICR3, 3, q, true, false });
#endif
#ifdef TCCR4A
case TIMER4C: ++q;
case TIMER4B: ++q;
case TIMER4A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR4A, &TCCR4B, &TCCR4C },
/*OCRnQ*/ { &OCR4A, &OCR4B, &OCR4C },
/*ICRn*/ &ICR4,
/*n, q*/ 4, q
};
return timer;
}
case TIMER4C: ++q; case TIMER4B: ++q; case TIMER4A:
return Timer({ { &TCCR4A, &TCCR4B, &TCCR4C }, { &OCR4A, &OCR4B, &OCR4C }, &ICR4, 4, q, true, false });
#endif
#ifdef TCCR5A
case TIMER5C: ++q;
case TIMER5B: ++q;
case TIMER5A: {
Timer timer = {
/*TCCRnQ*/ { &TCCR5A, &TCCR5B, &TCCR5C },
/*OCRnQ*/ { &OCR5A, &OCR5B, &OCR5C },
/*ICRn*/ &ICR5,
/*n, q*/ 5, q
};
return timer;
}
case TIMER5C: ++q; case TIMER5B: ++q; case TIMER5A:
return Timer({ { &TCCR5A, &TCCR5B, &TCCR5C }, { &OCR5A, &OCR5B, &OCR5C }, &ICR5, 5, q, true, false });
#endif
}
Timer timer = {
/*TCCRnQ*/ { nullptr, nullptr, nullptr },
/*OCRnQ*/ { nullptr, nullptr, nullptr },
/*ICRn*/ nullptr,
0, 0
};
return timer;
return Timer();
}
void set_pwm_frequency(const pin_t pin, int f_desired) {
Timer timer = get_pwm_timer(pin);
if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
uint16_t size;
if (timer.n == 2) size = 255; else size = 65535;
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
const Timer timer = get_pwm_timer(pin);
if (timer.isProtected || !timer.isPWM) return; // Don't proceed if protected timer or not recognized
uint16_t res = 255; // resolution (TOP value)
uint8_t j = 0; // prescaler index
uint8_t wgm = 1; // waveform generation mode
const bool is_timer2 = timer.n == 2;
const uint16_t maxtop = is_timer2 ? 0xFF : 0xFFFF;
uint16_t res = 0xFF; // resolution (TOP value)
uint8_t j = CS_NONE; // prescaler index
uint8_t wgm = WGM_PWM_PC_8; // waveform generation mode
// Calculating the prescaler and resolution to use to achieve closest frequency
if (f_desired != 0) {
int f = (F_CPU) / (2 * 1024 * size) + 1; // Initialize frequency as lowest (non-zero) achievable
uint16_t prescaler[] = { 0, 1, 8, /*TIMER2 ONLY*/32, 64, /*TIMER2 ONLY*/128, 256, 1024 };
constexpr uint16_t prescaler[] = { 1, 8, (32), 64, (128), 256, 1024 }; // (*) are Timer 2 only
uint16_t f = (F_CPU) / (2 * 1024 * maxtop) + 1; // Start with the lowest non-zero frequency achievable (1 or 31)
// loop over prescaler values
LOOP_S_L_N(i, 1, 8) {
uint16_t res_temp_fast = 255, res_temp_phase_correct = 255;
if (timer.n == 2) {
// No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
#if ENABLED(USE_OCR2A_AS_TOP)
const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
res_temp_fast = rtf - 1;
res_temp_phase_correct = rtf / 2;
LOOP_L_N(i, COUNT(prescaler)) { // Loop through all prescaler values
const uint16_t p = prescaler[i];
uint16_t res_fast_temp, res_pc_temp;
if (is_timer2) {
#if ENABLED(USE_OCR2A_AS_TOP) // No resolution calculation for TIMER2 unless enabled USE_OCR2A_AS_TOP
const uint16_t rft = (F_CPU) / (p * f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
#else
res_fast_temp = res_pc_temp = maxtop;
#endif
}
else {
// Skip TIMER2 specific prescalers when not TIMER2
if (i == 3 || i == 5) continue;
const uint16_t rtf = (F_CPU) / (prescaler[i] * f_desired);
res_temp_fast = rtf - 1;
res_temp_phase_correct = rtf / 2;
if (p == 32 || p == 128) continue; // Skip TIMER2 specific prescalers when not TIMER2
const uint16_t rft = (F_CPU) / (p * f_desired);
res_fast_temp = rft - 1;
res_pc_temp = rft / 2;
}
LIMIT(res_temp_fast, 1U, size);
LIMIT(res_temp_phase_correct, 1U, size);
LIMIT(res_fast_temp, 1U, maxtop);
LIMIT(res_pc_temp, 1U, maxtop);
// Calculate frequencies of test prescaler and resolution values
const int f_temp_fast = (F_CPU) / (prescaler[i] * (1 + res_temp_fast)),
f_temp_phase_correct = (F_CPU) / (2 * prescaler[i] * res_temp_phase_correct),
f_diff = ABS(f - f_desired),
f_fast_diff = ABS(f_temp_fast - f_desired),
f_phase_diff = ABS(f_temp_phase_correct - f_desired);
const uint32_t f_diff = _MAX(f, f_desired) - _MIN(f, f_desired),
f_fast_temp = (F_CPU) / (p * (1 + res_fast_temp)),
f_fast_diff = _MAX(f_fast_temp, f_desired) - _MIN(f_fast_temp, f_desired),
f_pc_temp = (F_CPU) / (2 * p * res_pc_temp),
f_pc_diff = _MAX(f_pc_temp, f_desired) - _MIN(f_pc_temp, f_desired);
// If FAST values are closest to desired f
if (f_fast_diff < f_diff && f_fast_diff <= f_phase_diff) {
// Remember this combination
f = f_temp_fast;
res = res_temp_fast;
j = i;
if (f_fast_diff < f_diff && f_fast_diff <= f_pc_diff) { // FAST values are closest to desired f
// Set the Wave Generation Mode to FAST PWM
if (timer.n == 2) {
wgm = (
#if ENABLED(USE_OCR2A_AS_TOP)
WGM2_FAST_PWM_OCR2A
#else
WGM2_FAST_PWM
#endif
);
}
else wgm = WGM_FAST_PWM_ICRn;
wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_FAST_PWM_OCR2A, WGM2_FAST_PWM)) : uint8_t(WGM_FAST_PWM_ICRn);
// Remember this combination
f = f_fast_temp; res = res_fast_temp; j = i + 1;
}
// If PHASE CORRECT values are closes to desired f
else if (f_phase_diff < f_diff) {
f = f_temp_phase_correct;
res = res_temp_phase_correct;
j = i;
else if (f_pc_diff < f_diff) { // PHASE CORRECT values are closes to desired f
// Set the Wave Generation Mode to PWM PHASE CORRECT
if (timer.n == 2) {
wgm = (
#if ENABLED(USE_OCR2A_AS_TOP)
WGM2_PWM_PC_OCR2A
#else
WGM2_PWM_PC
#endif
);
}
else wgm = WGM_PWM_PC_ICRn;
wgm = is_timer2 ? uint8_t(TERN(USE_OCR2A_AS_TOP, WGM2_PWM_PC_OCR2A, WGM2_PWM_PC)) : uint8_t(WGM_PWM_PC_ICRn);
f = f_pc_temp; res = res_pc_temp; j = i + 1;
}
}
}
_SET_WGMnQ(timer.TCCRnQ, wgm);
_SET_CSn(timer.TCCRnQ, j);
if (timer.n == 2) {
#if ENABLED(USE_OCR2A_AS_TOP)
_SET_OCRnQ(timer.OCRnQ, 0, res); // Set OCR2A value (TOP) = res
#endif
_SET_WGMnQ(timer, wgm);
_SET_CSn(timer, j);
if (is_timer2) {
TERN_(USE_OCR2A_AS_TOP, _SET_OCRnQ(timer, 0, res)); // Set OCR2A value (TOP) = res
}
else
_SET_ICRn(timer.ICRn, res); // Set ICRn value (TOP) = res
_SET_ICRn(timer, res); // Set ICRn value (TOP) = res
}
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
// If v is 0 or v_size (max), digitalWrite to LOW or HIGH.
// Note that digitalWrite also disables pwm output for us (sets COM bit to 0)
// Note that digitalWrite also disables PWM output for us (sets COM bit to 0)
if (v == 0)
digitalWrite(pin, invert);
else if (v == v_size)
digitalWrite(pin, !invert);
else {
Timer timer = get_pwm_timer(pin);
if (timer.n == 0) return; // Don't proceed if protected timer or not recognised
// Set compare output mode to CLEAR -> SET or SET -> CLEAR (if inverted)
_SET_COMnQ(timer.TCCRnQ, (timer.q
#ifdef TCCR2
+ (timer.q == 2) // COM20 is on bit 4 of TCCR2, thus requires q + 1 in the macro
#endif
), COM_CLEAR_SET + invert
);
uint16_t top;
if (timer.n == 2) { // if TIMER2
top = (
#if ENABLED(USE_OCR2A_AS_TOP)
*timer.OCRnQ[0] // top = OCR2A
#else
255 // top = 0xFF (max)
#endif
);
const Timer timer = get_pwm_timer(pin);
if (timer.isPWM) {
if (timer.n == 0) {
_SET_COMnQ(timer, timer.q, COM_CLEAR_SET); // Only allow a TIMER0B select...
_SET_OCRnQ(timer, timer.q, v); // ...and OCR0B duty update. For output pin D4 no frequency changes are permitted.
}
else if (!timer.isProtected) {
const uint16_t top = timer.n == 2 ? TERN(USE_OCR2A_AS_TOP, *timer.OCRnQ[0], 255) : *timer.ICRn;
_SET_COMnQ(timer, SUM_TERN(HAS_TCCR2, timer.q, timer.q == 2), COM_CLEAR_SET + invert); // COM20 is on bit 4 of TCCR2, so +1 for q==2
_SET_OCRnQ(timer, timer.q, uint16_t(uint32_t(v) * top / v_size)); // Scale 8/16-bit v to top value
}
}
else
top = *timer.ICRn; // top = ICRn
_SET_OCRnQ(timer.OCRnQ, timer.q, v * float(top) / float(v_size)); // Scale 8/16-bit v to top value
digitalWrite(pin, v < v_size / 2 ? LOW : HIGH);
}
}
#endif // NEEDS_HARDWARE_PWM
void MarlinHAL::init_pwm_timers() {
// Init some timer frequencies to a default 1KHz
const pin_t pwm_pin[] = {
#ifdef __AVR_ATmega2560__
10, 5, 6, 46
#elif defined(__AVR_ATmega1280__)
12, 31
#elif defined(__AVR_ATmega644__) || defined(__AVR_ATmega1284__)
15, 6
#elif defined(__AVR_AT90USB1286__) || defined(__AVR_mega64) || defined(__AVR_mega128)
16, 24
#endif
};
LOOP_L_N(i, COUNT(pwm_pin))
set_pwm_frequency(pwm_pin[i], 1000);
}
#endif // __AVR__
+8 -8
View File
@@ -245,7 +245,7 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
float count = 0;
if (hz > 0 && (dca || dcb || dcc)) {
count = float(F_CPU) / hz; // 1x prescaler, TOP for 16MHz base freq.
uint16_t prescaler; // Range of 30.5Hz (65535) 64.5KHz (>31)
uint16_t prescaler; // Range of 30.5Hz (65535) 64.5kHz (>31)
if (count >= 255. * 256.) { prescaler = 1024; SET_CS(5, PRESCALER_1024); }
else if (count >= 255. * 64.) { prescaler = 256; SET_CS(5, PRESCALER_256); }
@@ -257,7 +257,7 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
const float pwm_top = round(count); // Get the rounded count
ICR5 = (uint16_t)pwm_top - 1; // Subtract 1 for TOP
OCR5A = pwm_top * ABS(dca); // Update and scale DCs
OCR5A = pwm_top * ABS(dca); // Update and scale DCs
OCR5B = pwm_top * ABS(dcb);
OCR5C = pwm_top * ABS(dcc);
_SET_COM(5, A, dca ? (dca < 0 ? COM_SET_CLEAR : COM_CLEAR_SET) : COM_NORMAL); // Set compare modes
@@ -267,17 +267,17 @@ uint16_t set_pwm_frequency_hz(const_float_t hz, const float dca, const float dcb
SET_WGM(5, FAST_PWM_ICRn); // Fast PWM with ICR5 as TOP
//SERIAL_ECHOLNPGM("Timer 5 Settings:");
//SERIAL_ECHOLNPAIR(" Prescaler=", prescaler);
//SERIAL_ECHOLNPAIR(" TOP=", ICR5);
//SERIAL_ECHOLNPAIR(" OCR5A=", OCR5A);
//SERIAL_ECHOLNPAIR(" OCR5B=", OCR5B);
//SERIAL_ECHOLNPAIR(" OCR5C=", OCR5C);
//SERIAL_ECHOLNPGM(" Prescaler=", prescaler);
//SERIAL_ECHOLNPGM(" TOP=", ICR5);
//SERIAL_ECHOLNPGM(" OCR5A=", OCR5A);
//SERIAL_ECHOLNPGM(" OCR5B=", OCR5B);
//SERIAL_ECHOLNPGM(" OCR5C=", OCR5C);
}
else {
// Restore the default for Timer 5
SET_WGM(5, PWM_PC_8); // PWM 8-bit (Phase Correct)
SET_COMS(5, NORMAL, NORMAL, NORMAL); // Do nothing
SET_CS(5, PRESCALER_64); // 16MHz / 64 = 250KHz
SET_CS(5, PRESCALER_64); // 16MHz / 64 = 250kHz
OCR5A = OCR5B = OCR5C = 0;
}
return round(count);
+22 -45
View File
@@ -118,7 +118,7 @@
*/
// Waveform Generation Modes
enum WaveGenMode : char {
enum WaveGenMode : uint8_t {
WGM_NORMAL, // 0
WGM_PWM_PC_8, // 1
WGM_PWM_PC_9, // 2
@@ -138,19 +138,19 @@ enum WaveGenMode : char {
};
// Wavefore Generation Modes (Timer 2 only)
enum WaveGenMode2 : char {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
enum WaveGenMode2 : uint8_t {
WGM2_NORMAL, // 0
WGM2_PWM_PC, // 1
WGM2_CTC_OCR2A, // 2
WGM2_FAST_PWM, // 3
WGM2_reserved_1, // 4
WGM2_PWM_PC_OCR2A, // 5
WGM2_reserved_2, // 6
WGM2_FAST_PWM_OCR2A, // 7
};
// Compare Modes
enum CompareMode : char {
enum CompareMode : uint8_t {
COM_NORMAL, // 0
COM_TOGGLE, // 1 Non-PWM: OCnx ... Both PWM (WGM 9,11,14,15): OCnA only ... else NORMAL
COM_CLEAR_SET, // 2 Non-PWM: OCnx ... Fast PWM: OCnx/Bottom ... PF-FC: OCnx Up/Down
@@ -158,7 +158,7 @@ enum CompareMode : char {
};
// Clock Sources
enum ClockSource : char {
enum ClockSource : uint8_t {
CS_NONE, // 0
CS_PRESCALER_1, // 1
CS_PRESCALER_8, // 2
@@ -170,7 +170,7 @@ enum ClockSource : char {
};
// Clock Sources (Timer 2 only)
enum ClockSource2 : char {
enum ClockSource2 : uint8_t {
CS2_NONE, // 0
CS2_PRESCALER_1, // 1
CS2_PRESCALER_8, // 2
@@ -203,40 +203,33 @@ enum ClockSource2 : char {
TCCR##T##B = (TCCR##T##B & ~(0x3 << WGM##T##2)) | (((int(V) >> 2) & 0x3) << WGM##T##2); \
}while(0)
#define SET_WGM(T,V) _SET_WGM(T,WGM_##V)
// Runtime (see set_pwm_frequency):
#define _SET_WGMnQ(TCCRnQ, V) do{ \
*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << 0)) | (( int(V) & 0x3) << 0); \
*(TCCRnQ)[1] = (*(TCCRnQ)[1] & ~(0x3 << 3)) | (((int(V) >> 2) & 0x3) << 3); \
}while(0)
// Set Clock Select bits
// Ex: SET_CS3(PRESCALER_64);
#ifdef TCCR2
#define HAS_TCCR2 1
#endif
#define _SET_CS(T,V) (TCCR##T##B = (TCCR##T##B & ~(0x7 << CS##T##0)) | ((int(V) & 0x7) << CS##T##0))
#define _SET_CS0(V) _SET_CS(0,V)
#define _SET_CS1(V) _SET_CS(1,V)
#ifdef TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#else
#define _SET_CS2(V) _SET_CS(2,V)
#endif
#define _SET_CS3(V) _SET_CS(3,V)
#define _SET_CS4(V) _SET_CS(4,V)
#define _SET_CS5(V) _SET_CS(5,V)
#define SET_CS0(V) _SET_CS0(CS_##V)
#define SET_CS1(V) _SET_CS1(CS_##V)
#ifdef TCCR2
#if HAS_TCCR2
#define _SET_CS2(V) (TCCR2 = (TCCR2 & ~(0x7 << CS20)) | (int(V) << CS20))
#define SET_CS2(V) _SET_CS2(CS2_##V)
#else
#define _SET_CS2(V) _SET_CS(2,V)
#define SET_CS2(V) _SET_CS2(CS_##V)
#endif
#define SET_CS3(V) _SET_CS3(CS_##V)
#define SET_CS4(V) _SET_CS4(CS_##V)
#define SET_CS5(V) _SET_CS5(CS_##V)
#define SET_CS(T,V) SET_CS##T(V)
// Runtime (see set_pwm_frequency)
#define _SET_CSn(TCCRnQ, V) do{ \
(*(TCCRnQ)[1] = (*(TCCRnQ[1]) & ~(0x7 << 0)) | ((int(V) & 0x7) << 0)); \
}while(0)
// Set Compare Mode bits
// Ex: SET_COMS(4,CLEAR_SET,CLEAR_SET,CLEAR_SET);
@@ -246,22 +239,6 @@ enum ClockSource2 : char {
#define SET_COMB(T,V) SET_COM(T,B,V)
#define SET_COMC(T,V) SET_COM(T,C,V)
#define SET_COMS(T,V1,V2,V3) do{ SET_COMA(T,V1); SET_COMB(T,V2); SET_COMC(T,V3); }while(0)
// Runtime (see set_pwm_duty)
#define _SET_COMnQ(TCCRnQ, Q, V) do{ \
(*(TCCRnQ)[0] = (*(TCCRnQ)[0] & ~(0x3 << (6-2*(Q)))) | (int(V) << (6-2*(Q)))); \
}while(0)
// Set OCRnQ register
// Runtime (see set_pwm_duty):
#define _SET_OCRnQ(OCRnQ, Q, V) do{ \
(*(OCRnQ)[(Q)] = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set ICRn register (one per timer)
// Runtime (see set_pwm_frequency)
#define _SET_ICRn(ICRn, V) do{ \
(*(ICRn) = (0x0000) | (int(V) & 0xFFFF)); \
}while(0)
// Set Noise Canceler bit
// Ex: SET_ICNC(2,1)
@@ -284,7 +261,7 @@ enum ClockSource2 : char {
* PWM availability macros
*/
// Determine which harware PWMs are already in use
// Determine which hardware PWMs are already in use
#define _PWM_CHK_FAN_B(P) (P == E0_AUTO_FAN_PIN || P == E1_AUTO_FAN_PIN || P == E2_AUTO_FAN_PIN || P == E3_AUTO_FAN_PIN || P == E4_AUTO_FAN_PIN || P == E5_AUTO_FAN_PIN || P == E6_AUTO_FAN_PIN || P == E7_AUTO_FAN_PIN || P == CHAMBER_AUTO_FAN_PIN || P == COOLER_AUTO_FAN_PIN)
#if PIN_EXISTS(CONTROLLER_FAN)
#define PWM_CHK_FAN_B(P) (_PWM_CHK_FAN_B(P) || P == CONTROLLER_FAN_PIN)
+17 -5
View File
@@ -28,22 +28,30 @@
/**
* Checks for FAST PWM
*/
#if ENABLED(FAST_PWM_FAN) && (ENABLED(USE_OCR2A_AS_TOP) && defined(TCCR2))
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2"
#if ALL(FAST_PWM_FAN, USE_OCR2A_AS_TOP, HAS_TCCR2)
#error "USE_OCR2A_AS_TOP does not apply to devices with a single output TIMER2."
#endif
/**
* Checks for SOFT PWM
*/
#if HAS_FAN0 && FAN_PIN == 9 && DISABLED(FAN_SOFT_PWM) && ENABLED(SPEAKER)
#error "FAN_PIN 9 Hardware PWM uses Timer 2 which conflicts with Arduino AVR Tone Timer (for SPEAKER)."
#error "Disable SPEAKER or enable FAN_SOFT_PWM."
#endif
/**
* Sanity checks for Spindle / Laser PWM
*/
#if ENABLED(SPINDLE_LASER_PWM)
#if ENABLED(SPINDLE_LASER_USE_PWM)
#include "../ServoTimers.h" // Needed to check timer availability (_useTimer3)
#if SPINDLE_LASER_PWM_PIN == 4 || WITHIN(SPINDLE_LASER_PWM_PIN, 11, 13)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by a system interrupt."
#elif NUM_SERVOS > 0 && defined(_useTimer3) && (WITHIN(SPINDLE_LASER_PWM_PIN, 2, 3) || SPINDLE_LASER_PWM_PIN == 5)
#error "Counter/Timer for SPINDLE_LASER_PWM_PIN is used by the servo system."
#endif
#elif defined(SPINDLE_LASER_FREQUENCY)
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_PWM."
#elif SPINDLE_LASER_FREQUENCY
#error "SPINDLE_LASER_FREQUENCY requires SPINDLE_LASER_USE_PWM."
#endif
/**
@@ -63,3 +71,7 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not supported on AVR boards."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on AVR boards."
#endif
+2 -2
View File
@@ -35,7 +35,7 @@
// C B A is longIn1
// D C B A is longIn2
//
static FORCE_INLINE uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
FORCE_INLINE static uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2) {
uint8_t tmp1;
uint8_t tmp2;
uint16_t intRes;
@@ -89,7 +89,7 @@ static FORCE_INLINE uint16_t MultiU24X32toH16(uint32_t longIn1, uint32_t longIn2
// uses:
// r26 to store 0
// r27 to store the byte 1 of the 24 bit result
static FORCE_INLINE uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
FORCE_INLINE static uint16_t MultiU16X8toH16(uint8_t charIn1, uint16_t intIn2) {
uint8_t tmp;
uint16_t intRes;
__asm__ __volatile__ (
+35 -30
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -71,7 +74,7 @@
#define MULTI_NAME_PAD 26 // space needed to be pretty if not first name assigned to a pin
void PRINT_ARRAY_NAME(uint8_t x) {
char *name_mem_pointer = (char*)pgm_read_ptr(&pin_array[x].name);
char *name_mem_pointer = (PGM_P)pgm_read_ptr(&pin_array[x].name);
LOOP_L_N(y, MAX_NAME_LENGTH) {
char temp_char = pgm_read_byte(name_mem_pointer + y);
if (temp_char != 0)
@@ -99,7 +102,7 @@ void PRINT_ARRAY_NAME(uint8_t x) {
return true; \
} else return false
#define ABTEST(N) defined(TCCR##N##A) && defined(COM##N##A1)
/**
* Print a pin's PWM status.
@@ -110,7 +113,7 @@ static bool pwm_status(uint8_t pin) {
switch (digitalPinToTimer_DEBUG(pin)) {
#if defined(TCCR0A) && defined(COM0A1)
#if ABTEST(0)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
PWM_CASE(0, A);
@@ -119,20 +122,20 @@ static bool pwm_status(uint8_t pin) {
PWM_CASE(0, B);
#endif
#if defined(TCCR1A) && defined(COM1A1)
#if ABTEST(1)
PWM_CASE(1, A);
PWM_CASE(1, B);
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#if defined(COM1C1) && defined(TIMER1C)
PWM_CASE(1, C);
#endif
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
PWM_CASE(2, A);
PWM_CASE(2, B);
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
PWM_CASE(3, A);
PWM_CASE(3, B);
#ifdef COM3C1
@@ -146,7 +149,7 @@ static bool pwm_status(uint8_t pin) {
PWM_CASE(4, C);
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
PWM_CASE(5, A);
PWM_CASE(5, B);
PWM_CASE(5, C);
@@ -163,16 +166,16 @@ static bool pwm_status(uint8_t pin) {
const volatile uint8_t* const PWM_other[][3] PROGMEM = {
{ &TCCR0A, &TCCR0B, &TIMSK0 },
{ &TCCR1A, &TCCR1B, &TIMSK1 },
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
{ &TCCR2A, &TCCR2B, &TIMSK2 },
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
{ &TCCR3A, &TCCR3B, &TIMSK3 },
#endif
#ifdef TCCR4A
{ &TCCR4A, &TCCR4B, &TIMSK4 },
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
{ &TCCR5A, &TCCR5B, &TIMSK5 },
#endif
};
@@ -192,11 +195,11 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR1A, (const uint8_t*)&OCR1B, 0 },
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
{ &OCR2A, &OCR2B, 0 },
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
#ifdef COM3C1
{ (const uint8_t*)&OCR3A, (const uint8_t*)&OCR3B, (const uint8_t*)&OCR3C },
#else
@@ -208,7 +211,7 @@ const volatile uint8_t* const PWM_OCR[][3] PROGMEM = {
{ (const uint8_t*)&OCR4A, (const uint8_t*)&OCR4B, (const uint8_t*)&OCR4C },
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
{ (const uint8_t*)&OCR5A, (const uint8_t*)&OCR5B, (const uint8_t*)&OCR5C },
#endif
};
@@ -235,9 +238,9 @@ static void print_is_also_tied() { SERIAL_ECHOPGM(" is also tied to this pin");
inline void com_print(const uint8_t N, const uint8_t Z) {
const uint8_t *TCCRA = (uint8_t*)TCCR_A(N);
SERIAL_ECHOPAIR(" COM", AS_CHAR('0' + N));
SERIAL_ECHOPGM(" COM", AS_DIGIT(N));
SERIAL_CHAR(Z);
SERIAL_ECHOPAIR(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
SERIAL_ECHOPGM(": ", int((*TCCRA >> (6 - Z * 2)) & 0x03));
}
void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N - WGM bit layout
@@ -247,7 +250,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
uint8_t WGM = (((*TCCRB & _BV(WGM_2)) >> 1) | (*TCCRA & (_BV(WGM_0) | _BV(WGM_1))));
if (N == 4) WGM |= ((*TCCRB & _BV(WGM_3)) >> 1);
SERIAL_ECHOPAIR(" TIMER", AS_CHAR(T + '0'));
SERIAL_ECHOPGM(" TIMER", AS_DIGIT(T));
SERIAL_CHAR(L);
SERIAL_ECHO_SP(3);
@@ -259,14 +262,14 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
const uint16_t *OCRVAL16 = (uint16_t*)OCR_VAL(T, L - 'A');
PWM_PRINT(*OCRVAL16);
}
SERIAL_ECHOPAIR(" WGM: ", WGM);
SERIAL_ECHOPGM(" WGM: ", WGM);
com_print(T,L);
SERIAL_ECHOPAIR(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "A: ", *TCCRA);
SERIAL_ECHOPAIR(" TCCR", AS_CHAR(T + '0'), "B: ", *TCCRB);
SERIAL_ECHOPGM(" CS: ", (*TCCRB & (_BV(CS_0) | _BV(CS_1) | _BV(CS_2)) ));
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "A: ", *TCCRA);
SERIAL_ECHOPGM(" TCCR", AS_DIGIT(T), "B: ", *TCCRB);
const uint8_t *TMSK = (uint8_t*)TIMSK(T);
SERIAL_ECHOPAIR(" TIMSK", AS_CHAR(T + '0'), ": ", *TMSK);
SERIAL_ECHOPGM(" TIMSK", AS_DIGIT(T), ": ", *TMSK);
const uint8_t OCIE = L - 'A' + 1;
if (N == 3) { if (WGM == 0 || WGM == 2 || WGM == 4 || WGM == 6) err_is_counter(); }
@@ -278,7 +281,7 @@ void timer_prefix(uint8_t T, char L, uint8_t N) { // T - timer L - pwm N -
static void pwm_details(uint8_t pin) {
switch (digitalPinToTimer_DEBUG(pin)) {
#if defined(TCCR0A) && defined(COM0A1)
#if ABTEST(0)
#ifdef TIMER0A
#if !AVR_AT90USB1286_FAMILY // not available in Teensyduino type IDEs
case TIMER0A: timer_prefix(0, 'A', 3); break;
@@ -287,7 +290,7 @@ static void pwm_details(uint8_t pin) {
case TIMER0B: timer_prefix(0, 'B', 3); break;
#endif
#if defined(TCCR1A) && defined(COM1A1)
#if ABTEST(1)
case TIMER1A: timer_prefix(1, 'A', 4); break;
case TIMER1B: timer_prefix(1, 'B', 4); break;
#if defined(COM1C1) && defined(TIMER1C)
@@ -295,12 +298,12 @@ static void pwm_details(uint8_t pin) {
#endif
#endif
#if defined(TCCR2A) && defined(COM2A1)
#if ABTEST(2)
case TIMER2A: timer_prefix(2, 'A', 3); break;
case TIMER2B: timer_prefix(2, 'B', 3); break;
#endif
#if defined(TCCR3A) && defined(COM3A1)
#if ABTEST(3)
case TIMER3A: timer_prefix(3, 'A', 4); break;
case TIMER3B: timer_prefix(3, 'B', 4); break;
#ifdef COM3C1
@@ -314,7 +317,7 @@ static void pwm_details(uint8_t pin) {
case TIMER4C: timer_prefix(4, 'C', 4); break;
#endif
#if defined(TCCR5A) && defined(COM5A1)
#if ABTEST(5)
case TIMER5A: timer_prefix(5, 'A', 4); break;
case TIMER5B: timer_prefix(5, 'B', 4); break;
case TIMER5C: timer_prefix(5, 'C', 4); break;
@@ -348,7 +351,6 @@ static void pwm_details(uint8_t pin) {
#endif
} // pwm_details
#ifndef digitalRead_mod // Use Teensyduino's version of digitalRead - it doesn't disable the PWMs
int digitalRead_mod(const int8_t pin) { // same as digitalRead except the PWM stop section has been removed
const uint8_t port = digitalPinToPort_DEBUG(pin);
@@ -393,3 +395,6 @@ static void pwm_details(uint8_t pin) {
#endif
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#undef ABTEST
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
+3
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
+22 -22
View File
@@ -34,14 +34,14 @@ typedef uint16_t hal_timer_t;
#define HAL_TIMER_RATE ((F_CPU) / 8) // i.e., 2MHz or 2.5MHz
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 1
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 1
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 0
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 0
#endif
#define TEMP_TIMER_FREQUENCY ((F_CPU) / 64.0 / 256.0)
@@ -58,13 +58,13 @@ typedef uint16_t hal_timer_t;
#define DISABLE_STEPPER_DRIVER_INTERRUPT() CBI(TIMSK1, OCIE1A)
#define STEPPER_ISR_ENABLED() TEST(TIMSK1, OCIE1A)
#define ENABLE_TEMPERATURE_INTERRUPT() SBI(TIMSK0, OCIE0B)
#define DISABLE_TEMPERATURE_INTERRUPT() CBI(TIMSK0, OCIE0B)
#define TEMPERATURE_ISR_ENABLED() TEST(TIMSK0, OCIE0B)
#define ENABLE_TEMPERATURE_INTERRUPT() SBI(TIMSK0, OCIE0A)
#define DISABLE_TEMPERATURE_INTERRUPT() CBI(TIMSK0, OCIE0A)
#define TEMPERATURE_ISR_ENABLED() TEST(TIMSK0, OCIE0A)
FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
switch (timer_num) {
case STEP_TIMER_NUM:
case MF_TIMER_STEP:
// waveform generation = 0100 = CTC
SET_WGM(1, CTC_OCRnA);
@@ -84,10 +84,10 @@ FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
TCNT1 = 0;
break;
case TEMP_TIMER_NUM:
case MF_TIMER_TEMP:
// Use timer0 for temperature measurement
// Interleave temperature interrupt with millies interrupt
OCR0B = 128;
OCR0A = 128;
break;
}
}
@@ -109,12 +109,12 @@ FORCE_INLINE void HAL_timer_start(const uint8_t timer_num, const uint32_t) {
* (otherwise, characters will be lost due to UART overflow).
* Then: Stepper, Endstops, Temperature, and -finally- all others.
*/
#define HAL_timer_isr_prologue(TIMER_NUM)
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_prologue(T) NOOP
#define HAL_timer_isr_epilogue(T) NOOP
/* 18 cycles maximum latency */
#ifndef HAL_STEP_TIMER_ISR
/* 18 cycles maximum latency */
#define HAL_STEP_TIMER_ISR() \
extern "C" void TIMER1_COMPA_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER1_COMPA_vect_bottom() asm ("TIMER1_COMPA_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
@@ -180,7 +180,7 @@ void TIMER1_COMPA_vect() { \
: \
: [timsk0] "i" ((uint16_t)&TIMSK0), \
[timsk1] "i" ((uint16_t)&TIMSK1), \
[msk0] "M" ((uint8_t)(1<<OCIE0B)),\
[msk0] "M" ((uint8_t)(1<<OCIE0A)),\
[msk1] "M" ((uint8_t)(1<<OCIE1A)) \
: \
); \
@@ -193,9 +193,9 @@ void TIMER1_COMPA_vect_bottom()
/* 14 cycles maximum latency */
#define HAL_TEMP_TIMER_ISR() \
extern "C" void TIMER0_COMPB_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER0_COMPB_vect_bottom() asm ("TIMER0_COMPB_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
void TIMER0_COMPB_vect() { \
extern "C" void TIMER0_COMPA_vect() __attribute__ ((signal, naked, used, externally_visible)); \
extern "C" void TIMER0_COMPA_vect_bottom() asm ("TIMER0_COMPA_vect_bottom") __attribute__ ((used, externally_visible, noinline)); \
void TIMER0_COMPA_vect() { \
__asm__ __volatile__ ( \
A("push r16") /* 2 Save R16 */ \
A("in r16, __SREG__") /* 1 Get SREG */ \
@@ -223,7 +223,7 @@ void TIMER0_COMPB_vect() { \
A("push r30") \
A("push r31") \
A("clr r1") /* C runtime expects this register to be 0 */ \
A("call TIMER0_COMPB_vect_bottom") /* Call the bottom handler - No inlining allowed, otherwise registers used are not saved */ \
A("call TIMER0_COMPA_vect_bottom") /* Call the bottom handler - No inlining allowed, otherwise registers used are not saved */ \
A("pop r31") \
A("pop r30") \
A("pop r27") \
@@ -251,10 +251,10 @@ void TIMER0_COMPB_vect() { \
A("reti") /* 4 Return from interrupt */ \
: \
: [timsk0] "i"((uint16_t)&TIMSK0), \
[msk0] "M" ((uint8_t)(1<<OCIE0B)) \
[msk0] "M" ((uint8_t)(1<<OCIE0A)) \
: \
); \
} \
void TIMER0_COMPB_vect_bottom()
void TIMER0_COMPA_vect_bottom()
#endif // HAL_TEMP_TIMER_ISR
@@ -62,10 +62,10 @@
#include "../shared/Marduino.h"
#include "../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
volatile uint8_t *u8g_outData, *u8g_outClock;
static uint8_t u8g_bitData, u8g_bitNotData, u8g_bitClock, u8g_bitNotClock;
static volatile uint8_t *u8g_outData, *u8g_outClock;
static void u8g_com_arduino_init_shift_out(uint8_t dataPin, uint8_t clockPin) {
u8g_outData = portOutputRegister(digitalPinToPort(dataPin));
+9 -34
View File
@@ -34,7 +34,7 @@
// Public Variables
// ------------------------
uint16_t HAL_adc_result;
uint16_t MarlinHAL::adc_result;
// ------------------------
// Public functions
@@ -42,8 +42,7 @@ uint16_t HAL_adc_result;
TERN_(POSTMORTEM_DEBUGGING, extern void install_min_serial());
// HAL initialization task
void HAL_init() {
void MarlinHAL::init() {
// Initialize the USB stack
#if ENABLED(SDSUPPORT)
OUT_WRITE(SDSS, HIGH); // Try to set SDSS inactive before any other SPI users start up
@@ -52,21 +51,15 @@ void HAL_init() {
TERN_(POSTMORTEM_DEBUGGING, install_min_serial()); // Install the min serial handler
}
// HAL idle task
void HAL_idletask() {
// Perform USB stack housekeeping
usb_task_idle();
void MarlinHAL::init_board() {
#ifdef BOARD_INIT
BOARD_INIT();
#endif
}
// Disable interrupts
void cli() { noInterrupts(); }
void MarlinHAL::idletask() { usb_task_idle(); } // Perform USB stack housekeeping
// Enable interrupts
void sei() { interrupts(); }
void HAL_clear_reset_source() { }
uint8_t HAL_get_reset_source() {
uint8_t MarlinHAL::get_reset_source() {
switch ((RSTC->RSTC_SR >> 8) & 0x07) {
case 0: return RST_POWER_ON;
case 1: return RST_BACKUP;
@@ -77,12 +70,7 @@ uint8_t HAL_get_reset_source() {
}
}
void HAL_reboot() { rstc_start_software_reset(RSTC); }
void _delay_ms(const int delay_ms) {
// Todo: port for Due?
delay(delay_ms);
}
void MarlinHAL::reboot() { rstc_start_software_reset(RSTC); }
extern "C" {
extern unsigned int _ebss; // end of bss section
@@ -94,19 +82,6 @@ int freeMemory() {
return (int)&free_memory - (heap_end ?: (int)&_ebss);
}
// ------------------------
// ADC
// ------------------------
void HAL_adc_start_conversion(const uint8_t ch) {
HAL_adc_result = analogRead(ch);
}
uint16_t HAL_adc_get_result() {
// nop
return HAL_adc_result;
}
// Forward the default serial ports
#if USING_HW_SERIAL0
DefaultSerial1 MSerial0(false, Serial);
+89 -47
View File
@@ -38,6 +38,10 @@
#include "../../core/serial_hook.h"
// ------------------------
// Serial ports
// ------------------------
typedef ForwardSerial1Class< decltype(Serial) > DefaultSerial1;
typedef ForwardSerial1Class< decltype(Serial1) > DefaultSerial2;
typedef ForwardSerial1Class< decltype(Serial2) > DefaultSerial3;
@@ -97,55 +101,38 @@ extern DefaultSerial4 MSerial3;
#include "MarlinSerial.h"
#include "MarlinSerialUSB.h"
// On AVR this is in math.h?
#define square(x) ((x)*(x))
// ------------------------
// Types
// ------------------------
typedef int8_t pin_t;
#define SHARED_SERVOS HAS_SERVOS
#define HAL_SERVO_LIB Servo
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
class Servo;
typedef Servo hal_servo_t;
//
// Interrupts
//
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (!primask) __enable_irq()
#define ISRS_ENABLED() (!__get_PRIMASK())
#define ENABLE_ISRS() __enable_irq()
#define DISABLE_ISRS() __disable_irq()
#define sei() noInterrupts()
#define cli() interrupts()
void cli(); // Disable interrupts
void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
void HAL_reboot();
#define CRITICAL_SECTION_START() const bool _irqon = hal.isr_state(); hal.isr_off()
#define CRITICAL_SECTION_END() if (_irqon) hal.isr_on()
//
// ADC
//
extern uint16_t HAL_adc_result; // result of last ADC conversion
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define HAL_ANALOG_SELECT(ch)
inline void HAL_adc_init() {}//todo
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t ch);
uint16_t HAL_adc_get_result();
//
// Pin Map
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
@@ -154,30 +141,19 @@ uint16_t HAL_adc_get_result();
//
// Tone
//
void toneInit();
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
void HAL_idletask();
void HAL_init();
//
// Utility functions
//
void _delay_ms(const int delay);
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#pragma GCC diagnostic pop
#ifdef __cplusplus
extern "C" {
@@ -186,3 +162,69 @@ char *dtostrf(double __val, signed char __width, unsigned char __prec, char *__s
#ifdef __cplusplus
}
#endif
// Return free RAM between end of heap (or end bss) and whatever is current
int freeMemory();
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
static void init(); // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Software reset
// Interrupts
static bool isr_state() { return !__get_PRIMASK(); }
static void isr_on() { __enable_irq(); }
static void isr_off() { __disable_irq(); }
static void delay_ms(const int ms) { delay(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t ch) {}
// Begin ADC sampling on the given channel. Called from Temperature::isr!
static void adc_start(const uint8_t ch) { adc_result = analogRead(ch); }
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* Set the PWM duty cycle for the pin to the given value.
* No inverting the duty cycle in this HAL.
* No changing the maximum size of the provided value to enable finer PWM duty control in this HAL.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
};
+11 -15
View File
@@ -240,7 +240,7 @@
}
// all the others
static uint32_t spiDelayCyclesX4 = 4 * (F_CPU) / 1000000; // 4µs => 125khz
static uint16_t spiDelayNS = 4000; // 4000ns => 125khz
static uint8_t spiTransferX(uint8_t b) { // using Mode 0
int bits = 8;
@@ -249,12 +249,12 @@
b <<= 1; // little setup time
WRITE(SD_SCK_PIN, HIGH);
DELAY_CYCLES(spiDelayCyclesX4);
DELAY_NS(spiDelayNS);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SD_SCK_PIN, LOW);
DELAY_CYCLES(spiDelayCyclesX4);
DELAY_NS(spiDelayNS);
} while (--bits);
return b;
}
@@ -437,7 +437,7 @@
} while (--todo);
}
// Pointers to generic functions for block tranfers
// Pointers to generic functions for block transfers
static pfnSpiTxBlock spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
static pfnSpiRxBlock spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
@@ -510,7 +510,7 @@
spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
break;
default:
spiDelayCyclesX4 = ((F_CPU) / 1000000) >> (6 - spiRate) << 2; // spiRate of 2 gives the maximum error with current CPU
spiDelayNS = 4000 >> (6 - spiRate); // spiRate of 2 gives the maximum error with current CPU
spiTransferTx = (pfnSpiTransfer)spiTransferX;
spiTransferRx = (pfnSpiTransfer)spiTransferX;
spiTxBlock = (pfnSpiTxBlock)spiTxBlockX;
@@ -594,18 +594,14 @@
SPI_Configure(SPI0, ID_SPI0, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_MR_PS);
SPI_Enable(SPI0);
SET_OUTPUT(DAC0_SYNC);
SET_OUTPUT(DAC0_SYNC_PIN);
#if HAS_MULTI_EXTRUDER
SET_OUTPUT(DAC1_SYNC);
WRITE(DAC1_SYNC, HIGH);
OUT_WRITE(DAC1_SYNC_PIN, HIGH);
#endif
SET_OUTPUT(SPI_EEPROM1_CS);
SET_OUTPUT(SPI_EEPROM2_CS);
SET_OUTPUT(SPI_FLASH_CS);
WRITE(DAC0_SYNC, HIGH);
WRITE(SPI_EEPROM1_CS, HIGH);
WRITE(SPI_EEPROM2_CS, HIGH);
WRITE(SPI_FLASH_CS, HIGH);
WRITE(DAC0_SYNC_PIN, HIGH);
OUT_WRITE(SPI_EEPROM1_CS_PIN, HIGH);
OUT_WRITE(SPI_EEPROM2_CS_PIN, HIGH);
OUT_WRITE(SPI_FLASH_CS_PIN, HIGH);
WRITE(SD_SS_PIN, HIGH);
OUT_WRITE(SDSS, LOW);
+26
View File
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;
+2 -2
View File
@@ -406,7 +406,7 @@ size_t MarlinSerial<Cfg>::write(const uint8_t c) {
const uint8_t i = (tx_buffer.head + 1) & (Cfg::TX_SIZE - 1);
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Make room by polling if it is possible to transmit, and do so!
while (i == tx_buffer.tail) {
@@ -454,7 +454,7 @@ void MarlinSerial<Cfg>::flushTX() {
if (!_written) return;
// If global interrupts are disabled (as the result of being called from an ISR)...
if (!ISRS_ENABLED()) {
if (!hal.isr_state()) {
// Wait until everything was transmitted - We must do polling, as interrupts are disabled
while (tx_buffer.head != tx_buffer.tail || !(HWUART->UART_SR & UART_SR_TXEMPTY)) {
+1 -1
View File
@@ -118,7 +118,7 @@ public:
static size_t write(const uint8_t c);
static void flushTX();
static inline bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
static bool emergency_parser_enabled() { return Cfg::EMERGENCYPARSER; }
FORCE_INLINE static uint8_t dropped() { return Cfg::DROPPED_RX ? rx_dropped_bytes : 0; }
FORCE_INLINE static uint8_t buffer_overruns() { return Cfg::RX_OVERRUNS ? rx_buffer_overruns : 0; }
+1 -1
View File
@@ -41,7 +41,7 @@ extern "C" {
int udi_cdc_getc();
bool udi_cdc_is_tx_ready();
int udi_cdc_putc(int value);
};
}
// Pending character
static int pending_char = -1;
+4 -4
View File
@@ -35,20 +35,20 @@
static pin_t tone_pin;
volatile static int32_t toggles;
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration) {
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration/*=0*/) {
tone_pin = _pin;
toggles = 2 * frequency * duration / 1000;
HAL_timer_start(TONE_TIMER_NUM, 2 * frequency);
HAL_timer_start(MF_TIMER_TONE, 2 * frequency);
}
void noTone(const pin_t _pin) {
HAL_timer_disable_interrupt(TONE_TIMER_NUM);
HAL_timer_disable_interrupt(MF_TIMER_TONE);
extDigitalWrite(_pin, LOW);
}
HAL_TONE_TIMER_ISR() {
static uint8_t pin_state = 0;
HAL_timer_isr_prologue(TONE_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_TONE);
if (toggles) {
toggles--;
@@ -20,7 +20,6 @@
*
*/
/**
* Based on u8g_com_msp430_hw_spi.c
*
@@ -60,7 +59,7 @@
#if HAS_MARLINUI_U8GLIB
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "../../../MarlinCore.h"
@@ -57,12 +57,12 @@
#include "../../../inc/MarlinConfigPre.h"
#if ENABLED(U8GLIB_ST7920)
#if IS_U8GLIB_ST7920
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
@@ -182,5 +182,5 @@ uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va
}
#endif // LIGHTWEIGHT_UI
#endif // U8GLIB_ST7920
#endif // IS_U8GLIB_ST7920
#endif // ARDUINO_ARCH_SAM
@@ -57,14 +57,14 @@
#include "../../../inc/MarlinConfigPre.h"
#if HAS_MARLINUI_U8GLIB && DISABLED(U8GLIB_ST7920)
#if HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
#include "../../shared/Marduino.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#if ENABLED(FYSETC_MINI_12864)
#define SPISEND_SW_DUE u8g_spiSend_sw_DUE_mode_3
@@ -141,5 +141,5 @@ uint8_t u8g_com_HAL_DUE_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void
return 1;
}
#endif // HAS_MARLINUI_U8GLIB && !U8GLIB_ST7920
#endif // HAS_MARLINUI_U8GLIB && !IS_U8GLIB_ST7920
#endif // ARDUINO_ARCH_SAM
@@ -62,7 +62,7 @@
#include "../../../inc/MarlinConfig.h"
#include "../../shared/Delay.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
@@ -23,7 +23,7 @@
#include "../../../inc/MarlinConfigPre.h"
#include "../../shared/Marduino.h"
#include <U8glib.h>
#include <U8glib-HAL.h>
void u8g_SetPIOutput_DUE(u8g_t *u8g, uint8_t pin_index);
void u8g_SetPILevel_DUE(u8g_t *u8g, uint8_t pin_index, uint8_t level);
+17 -17
View File
@@ -200,9 +200,9 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
pageContents[i] = (((uint32_t*)data)[i]) | (~(pageContents[i] ^ ((uint32_t*)data)[i]));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageWrite ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_ECHOLNPGM("EEPROM PageWrite ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -246,7 +246,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ", page);
DEBUG_ECHOLNPGM("EEPROM Unlock failure for page ", page);
return false;
}
@@ -271,7 +271,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Write failure for page ", page);
DEBUG_ECHOLNPGM("EEPROM Write failure for page ", page);
return false;
}
@@ -287,7 +287,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
#ifdef EE_EMU_DEBUG
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Write failure for page ", page);
DEBUG_ECHOLNPGM("EEPROM Verify Write failure for page ", page);
ee_Dump( page, (uint32_t *)addrflash);
ee_Dump(-page, data);
@@ -306,7 +306,7 @@ static bool ee_PageWrite(uint16_t page, const void *data) {
}
}
}
DEBUG_ECHOLNPAIR("--> Differing bits: ", count);
DEBUG_ECHOLNPGM("--> Differing bits: ", count);
#endif
return false;
@@ -326,9 +326,9 @@ static bool ee_PageErase(uint16_t page) {
uint32_t addrflash = uint32_t(getFlashStorage(page));
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM PageErase ", page);
DEBUG_ECHOLNPAIR(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPAIR(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_ECHOLNPGM("EEPROM PageErase ", page);
DEBUG_ECHOLNPGM(" in FLASH address ", (uint32_t)addrflash);
DEBUG_ECHOLNPGM(" base address ", (uint32_t)getFlashStorage(0));
DEBUG_FLUSH();
// Get the page relative to the start of the EFC controller, and the EFC controller to use
@@ -371,7 +371,7 @@ static bool ee_PageErase(uint16_t page) {
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Unlock failure for page ",page);
DEBUG_ECHOLNPGM("EEPROM Unlock failure for page ",page);
return false;
}
@@ -395,7 +395,7 @@ static bool ee_PageErase(uint16_t page) {
__enable_irq();
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Erase failure for page ",page);
DEBUG_ECHOLNPGM("EEPROM Erase failure for page ",page);
return false;
}
@@ -411,7 +411,7 @@ static bool ee_PageErase(uint16_t page) {
for (i = 0; i < PageSize >> 2; i++) {
if (*aligned_src++ != 0xFFFFFFFF) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Verify Erase failure for page ",page);
DEBUG_ECHOLNPGM("EEPROM Verify Erase failure for page ",page);
ee_Dump(page, (uint32_t *)addrflash);
return false;
}
@@ -922,7 +922,7 @@ static void ee_Init() {
if (curGroup >= GroupCount) curGroup = 0;
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Current Group: ",curGroup);
DEBUG_ECHOLNPGM("EEPROM Current Group: ",curGroup);
DEBUG_FLUSH();
// Now, validate that all the other group pages are empty
@@ -932,7 +932,7 @@ static void ee_Init() {
for (int page = 0; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(grp * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_ECHOLNPGM("EEPROM Page ", page, " not clean on group ", grp);
DEBUG_FLUSH();
ee_PageErase(grp * PagesPerGroup + page);
}
@@ -949,14 +949,14 @@ static void ee_Init() {
}
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Active page: ", curPage);
DEBUG_ECHOLNPGM("EEPROM Active page: ", curPage);
DEBUG_FLUSH();
// Make sure the pages following the first clean one are also clean
for (int page = curPage + 1; page < PagesPerGroup; page++) {
if (!ee_IsPageClean(curGroup * PagesPerGroup + page)) {
DEBUG_ECHO_START();
DEBUG_ECHOLNPAIR("EEPROM Page ", page, " not clean on active group ", curGroup);
DEBUG_ECHOLNPGM("EEPROM Page ", page, " not clean on active group ", curGroup);
DEBUG_FLUSH();
ee_Dump(curGroup * PagesPerGroup + page, getFlashStorage(curGroup * PagesPerGroup + page));
ee_PageErase(curGroup * PagesPerGroup + page);
+6
View File
@@ -70,4 +70,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
}
+1 -1
View File
@@ -25,7 +25,7 @@
* is NOT used to directly toggle pins. The ISR writes to the pin assigned to
* that interrupt.
*
* All PWMs use the same repetition rate. The G2 needs about 10KHz min in order to
* All PWMs use the same repetition rate. The G2 needs about 10kHz min in order to
* not have obvious ripple on the Vref signals.
*
* The data structures are setup to minimize the computation done by the ISR which
+4
View File
@@ -59,3 +59,7 @@
#if HAS_TMC_SW_SERIAL
#error "TMC220x Software Serial is not supported on the DUE platform."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on DUE boards."
#endif
+6 -2
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -50,7 +53,7 @@
* The net result is that both the g_pinStatus[pin] array and the PIO_OSR register
* needs to be looked at when determining if a pin is an input or an output.
*
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1KHz
* b) Due has only pins 6, 7, 8 & 9 enabled for PWMs. FYI - they run at 1kHz
*
* c) NUM_DIGITAL_PINS does not include the analog pins
*
@@ -64,6 +67,7 @@
#define PRINT_PORT(p)
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%02d"), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define GET_ARRAY_IS_DIGITAL(p) pin_array[p].is_digital
#define VALID_PIN(pin) (pin >= 0 && pin < (int8_t)NUMBER_PINS_TOTAL ? 1 : 0)
@@ -86,7 +90,7 @@ bool GET_PINMODE(int8_t pin) { // 1: output, 0: input
void pwm_details(int32_t pin) {
if (pwm_status(pin)) {
uint32_t chan = g_APinDescription[pin].ulPWMChannel;
SERIAL_ECHOPAIR("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
SERIAL_ECHOPGM("PWM = ", PWM_INTERFACE->PWM_CH_NUM[chan].PWM_CDTY);
}
}
+8 -8
View File
@@ -42,7 +42,7 @@
// Private Variables
// ------------------------
const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ TC0, 0, TC0_IRQn, 3}, // 0 - [servo timer5]
{ TC0, 1, TC1_IRQn, 0}, // 1
{ TC0, 2, TC2_IRQn, 2}, // 2 - stepper
@@ -66,9 +66,9 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
*/
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
Tc *tc = TimerConfig[timer_num].pTimerRegs;
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
uint32_t channel = TimerConfig[timer_num].channel;
Tc *tc = timer_config[timer_num].pTimerRegs;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
uint32_t channel = timer_config[timer_num].channel;
// Disable interrupt, just in case it was already enabled
NVIC_DisableIRQ(irq);
@@ -86,7 +86,7 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
pmc_set_writeprotect(false);
pmc_enable_periph_clk((uint32_t)irq);
NVIC_SetPriority(irq, TimerConfig [timer_num].priority);
NVIC_SetPriority(irq, timer_config[timer_num].priority);
// wave mode, reset counter on match with RC,
TC_Configure(tc, channel, TC_CMR_WAVE | TC_CMR_WAVSEL_UP_RC | TC_CMR_TCCLKS_TIMER_CLOCK1);
@@ -105,12 +105,12 @@ void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
}
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
NVIC_EnableIRQ(irq);
}
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
NVIC_DisableIRQ(irq);
// We NEED memory barriers to ensure Interrupts are actually disabled!
@@ -125,7 +125,7 @@ static bool NVIC_GetEnabledIRQ(IRQn_Type IRQn) {
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
IRQn_Type irq = TimerConfig[timer_num].IRQ_Id;
IRQn_Type irq = timer_config[timer_num].IRQ_Id;
return NVIC_GetEnabledIRQ(irq);
}
+25 -25
View File
@@ -37,35 +37,35 @@ typedef uint32_t hal_timer_t;
#define HAL_TIMER_RATE ((F_CPU) / 2) // frequency of timers peripherals
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 2 // Timer Index for Stepper
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 2 // Timer Index for Stepper
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 4 // Timer Index for Temperature
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 4 // Timer Index for Temperature
#endif
#ifndef TONE_TIMER_NUM
#define TONE_TIMER_NUM 6 // index of timer to use for beeper tones
#ifndef MF_TIMER_TONE
#define MF_TIMER_TONE 6 // index of timer to use for beeper tones
#endif
#define TEMP_TIMER_FREQUENCY 1000 // temperature interrupt frequency
#define STEPPER_TIMER_RATE HAL_TIMER_RATE // frequency of stepper timer (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE)
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // stepper timer ticks per µs
#define STEPPER_TIMER_PRESCALE (CYCLES_PER_MICROSECOND / STEPPER_TIMER_TICKS_PER_US)
#define STEPPER_TIMER_RATE HAL_TIMER_RATE // frequency of stepper timer (HAL_TIMER_RATE / STEPPER_TIMER_PRESCALE)
#define STEPPER_TIMER_TICKS_PER_US ((STEPPER_TIMER_RATE) / 1000000) // stepper timer ticks per µs
#define STEPPER_TIMER_PRESCALE (CYCLES_PER_MICROSECOND / STEPPER_TIMER_TICKS_PER_US)
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define PULSE_TIMER_RATE STEPPER_TIMER_RATE // frequency of pulse timer
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#ifndef HAL_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() void TC2_Handler()
@@ -92,7 +92,7 @@ typedef struct {
// Public Variables
// ------------------------
extern const tTimerConfig TimerConfig[];
extern const tTimerConfig timer_config[];
// ------------------------
// Public functions
@@ -101,17 +101,17 @@ extern const tTimerConfig TimerConfig[];
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
FORCE_INLINE static void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t compare) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_RC = compare;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
return pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_RC;
}
FORCE_INLINE static hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
return pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_CV;
}
@@ -120,9 +120,9 @@ void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
FORCE_INLINE static void HAL_timer_isr_prologue(const uint8_t timer_num) {
const tTimerConfig * const pConfig = &TimerConfig[timer_num];
const tTimerConfig * const pConfig = &timer_config[timer_num];
// Reading the status register clears the interrupt flag
pConfig->pTimerRegs->TC_CHANNEL[pConfig->channel].TC_SR;
}
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_epilogue(T) NOOP
+10 -9
View File
@@ -4,15 +4,16 @@
# Windows: bossac.exe
# Other: leave unchanged
#
import pioutil
if pioutil.is_pio_build():
import platform
current_OS = platform.system()
import platform
current_OS = platform.system()
if current_OS == 'Windows':
if current_OS == 'Windows':
Import("env")
Import("env")
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)
# Use bossac.exe on Windows
env.Replace(
UPLOADCMD="bossac --info --unlock --write --verify --reset --erase -U false --boot $SOURCE"
)
+1 -1
View File
@@ -71,7 +71,7 @@
/* ------------------------------------------------------------------------ */
/**
* \page arduino_due_x_board_info "Arduino Due/X - Board informations"
* \page arduino_due_x_board_info "Arduino Due/X - Board information"
* This page lists several definition related to the board description.
*
*/
+1 -1
View File
@@ -10,7 +10,7 @@
#include "../../../sd/cardreader.h"
extern "C" {
#include "sd_mmc_spi_mem.h"
#include "sd_mmc_spi_mem.h"
}
#define SD_MMC_BLOCK_SIZE 512
+2 -2
View File
@@ -74,7 +74,7 @@
#define SD_MMC_REMOVING 2
//---- CONTROL FONCTIONS ----
//---- CONTROL FUNCTIONS ----
//!
//! @brief This function initializes the hw/sw resources required to drive the SD_MMC_SPI.
//!/
@@ -134,7 +134,7 @@ extern bool sd_mmc_spi_wr_protect(void);
extern bool sd_mmc_spi_removal(void);
//---- ACCESS DATA FONCTIONS ----
//---- ACCESS DATA FUNCTIONS ----
#if ACCESS_USB == true
// Standard functions for open in read/write mode the device
+4 -4
View File
@@ -90,7 +90,7 @@ typedef struct {
//! This buffer must be word align for DATA IN phase (use prefix COMPILER_WORD_ALIGNED for buffer)
uint8_t *payload;
//! Size of buffer to send or fill, and content the number of byte transfered
//! Size of buffer to send or fill, and content the number of byte transferred
uint16_t payload_size;
//! Callback called after reception of ZLP from setup request
@@ -132,10 +132,10 @@ typedef void (*udd_callback_halt_cleared_t)(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is complete
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param n number of data transfered
* \param n number of data transferred
*/
typedef void (*udd_callback_trans_t) (udd_ep_status_t status,
iram_size_t nb_transfered, udd_ep_id_t ep);
iram_size_t nb_transferred, udd_ep_id_t ep);
/**
* \brief Authorizes the VBUS event
@@ -303,7 +303,7 @@ bool udd_ep_wait_stall_clear(udd_ep_id_t ep,
* The driver uses a specific DMA USB to transfer data
* from internal RAM to endpoint, if this one is available.
* When the transfer is finished or aborted (stall, reset, ...), the \a callback is called.
* The \a callback returns the transfer status and eventually the number of byte transfered.
* The \a callback returns the transfer status and eventually the number of byte transferred.
* Note: The control endpoint is not authorized.
*
* \param ep The ID of the endpoint to use
+2 -2
View File
@@ -162,7 +162,7 @@ static void udi_cdc_ctrl_state_notify(uint8_t port, udd_ep_id_t ep);
*
* \param status UDD_EP_TRANSFER_OK, if transfer finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param n number of data transfered
* \param n number of data transferred
*/
static void udi_cdc_serial_state_msg_sent(udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep);
@@ -200,7 +200,7 @@ static void udi_cdc_data_received(udd_ep_status_t status, iram_size_t n, udd_ep_
*
* \param status UDD_EP_TRANSFER_OK, if transfer finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param n number of data transfered
* \param n number of data transferred
*/
static void udi_cdc_data_sent(udd_ep_status_t status, iram_size_t n, udd_ep_id_t ep);
+1 -1
View File
@@ -106,7 +106,7 @@ extern "C" {
*/
//@{
# if UDI_CDC_PORT_NB > 2
# error USBB, UDP, UDPHS and UOTGHS interfaces have not enought endpoints.
# error USBB, UDP, UDPHS and UOTGHS interfaces have not enough endpoints.
# endif
#define UDI_CDC_DATA_EP_IN_0 (1 | USB_EP_DIR_IN) // TX
#define UDI_CDC_DATA_EP_OUT_0 (2 | USB_EP_DIR_OUT) // RX
+5 -5
View File
@@ -173,7 +173,7 @@ static void udi_msc_cbw_wait(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param nb_received number of data transfered
* \param nb_received number of data transferred
*/
static void udi_msc_cbw_received(udd_ep_status_t status,
iram_size_t nb_received, udd_ep_id_t ep);
@@ -211,7 +211,7 @@ static void udi_msc_data_send(uint8_t * buffer, uint8_t buf_size);
*
* \param status UDD_EP_TRANSFER_OK, if transfer finish
* \param status UDD_EP_TRANSFER_ABORT, if transfer aborted
* \param nb_sent number of data transfered
* \param nb_sent number of data transferred
*/
static void udi_msc_data_sent(udd_ep_status_t status, iram_size_t nb_sent,
udd_ep_id_t ep);
@@ -244,7 +244,7 @@ void udi_msc_csw_send(void);
*
* \param status UDD_EP_TRANSFER_OK, if transfer is finished
* \param status UDD_EP_TRANSFER_ABORT, if transfer is aborted
* \param nb_sent number of data transfered
* \param nb_sent number of data transferred
*/
static void udi_msc_csw_sent(udd_ep_status_t status, iram_size_t nb_sent,
udd_ep_id_t ep);
@@ -463,7 +463,7 @@ uint8_t udi_msc_getsetting(void)
static void udi_msc_cbw_invalid(void)
{
if (!udi_msc_b_cbw_invalid)
return; // Don't re-stall endpoint if error reseted by setup
return; // Don't re-stall endpoint if error reset by setup
udd_ep_set_halt(UDI_MSC_EP_OUT);
// If stall cleared then re-stall it. Only Setup MSC Reset can clear it
udd_ep_wait_stall_clear(UDI_MSC_EP_OUT, udi_msc_cbw_invalid);
@@ -472,7 +472,7 @@ static void udi_msc_cbw_invalid(void)
static void udi_msc_csw_invalid(void)
{
if (!udi_msc_b_cbw_invalid)
return; // Don't re-stall endpoint if error reseted by setup
return; // Don't re-stall endpoint if error reset by setup
udd_ep_set_halt(UDI_MSC_EP_IN);
// If stall cleared then re-stall it. Only Setup MSC Reset can clear it
udd_ep_wait_stall_clear(UDI_MSC_EP_IN, udi_msc_csw_invalid);
+23 -23
View File
@@ -325,7 +325,7 @@ static void udd_sleep_mode(bool b_idle)
/**
* \name Control endpoint low level management routine.
*
* This function performs control endpoint mangement.
* This function performs control endpoint management.
* It handle the SETUP/DATA/HANDSHAKE phases of a control transaction.
*/
//@{
@@ -397,9 +397,9 @@ static void udd_ctrl_endofrequest(void);
/**
* \brief Main interrupt routine for control endpoint
*
* This switchs control endpoint events to correct sub function.
* This switches control endpoint events to correct sub function.
*
* \return \c 1 if an event about control endpoint is occured, otherwise \c 0.
* \return \c 1 if an event about control endpoint is occurred, otherwise \c 0.
*/
static bool udd_ctrl_interrupt(void);
@@ -410,7 +410,7 @@ static bool udd_ctrl_interrupt(void);
* \name Management of bulk/interrupt/isochronous endpoints
*
* The UDD manages the data transfer on endpoints:
* - Start data tranfer on endpoint with USB Device DMA
* - Start data transfer on endpoint with USB Device DMA
* - Send a ZLP packet if requested
* - Call callback registered to signal end of transfer
* The transfer abort and stall feature are supported.
@@ -431,7 +431,7 @@ typedef struct {
uint8_t *buf;
//! Size of buffer to send or fill
iram_size_t buf_size;
//!< Size of data transfered
//!< Size of data transferred
iram_size_t buf_cnt;
//!< Size of data loaded (or prepared for DMA) last time
iram_size_t buf_load;
@@ -486,7 +486,7 @@ static void udd_ep_finish_job(udd_ep_job_t * ptr_job, bool b_abort, uint8_t ep_n
#ifdef UDD_EP_DMA_SUPPORTED
/**
* \brief Start the next transfer if necessary or complet the job associated.
* \brief Start the next transfer if necessary or complete the job associated.
*
* \param ep endpoint number without direction flag
*/
@@ -496,9 +496,9 @@ static void udd_ep_finish_job(udd_ep_job_t * ptr_job, bool b_abort, uint8_t ep_n
/**
* \brief Main interrupt routine for bulk/interrupt/isochronous endpoints
*
* This switchs endpoint events to correct sub function.
* This switches endpoint events to correct sub function.
*
* \return \c 1 if an event about bulk/interrupt/isochronous endpoints has occured, otherwise \c 0.
* \return \c 1 if an event about bulk/interrupt/isochronous endpoints has occurred, otherwise \c 0.
*/
static bool udd_ep_interrupt(void);
@@ -520,7 +520,7 @@ static bool udd_ep_interrupt(void);
*
* Note:
* Here, the global interrupt mask is not clear when an USB interrupt is enabled
* because this one can not be occured during the USB ISR (=during INTX is masked).
* because this one can not be occurred during the USB ISR (=during INTX is masked).
* See Technical reference $3.8.3 Masking interrupt requests in peripheral modules.
*/
#ifdef UHD_ENABLE
@@ -787,7 +787,7 @@ void udd_attach(void)
udd_sleep_mode(true);
otg_unfreeze_clock();
// This section of clock check can be improved with a chek of
// This section of clock check can be improved with a check of
// USB clock source via sysclk()
// Check USB clock because the source can be a PLL
while (!Is_otg_clock_usable());
@@ -803,7 +803,7 @@ void udd_attach(void)
#ifdef USB_DEVICE_HS_SUPPORT
udd_enable_msof_interrupt();
#endif
// Reset following interupts flag
// Reset following interrupts flag
udd_ack_reset();
udd_ack_sof();
udd_ack_msof();
@@ -902,7 +902,7 @@ bool udd_ep_alloc(udd_ep_id_t ep, uint8_t bmAttributes,
}
dbg_print("alloc(%x, %d) ", ep, MaxEndpointSize);
// Bank choise
// Bank choice
switch (bmAttributes & USB_EP_TYPE_MASK) {
case USB_EP_TYPE_ISOCHRONOUS:
nb_bank = UDD_ISOCHRONOUS_NB_BANK(ep);
@@ -1228,7 +1228,7 @@ bool udd_ep_wait_stall_clear(udd_ep_id_t ep,
if (Is_udd_endpoint_stall_requested(ep)
|| ptr_job->stall_requested) {
// Endpoint halted then registes the callback
// Endpoint halted then registers the callback
ptr_job->busy = true;
ptr_job->call_nohalt = callback;
} else {
@@ -1386,7 +1386,7 @@ static void udd_ctrl_setup_received(void)
// Decode setup request
if (udc_process_setup() == false) {
// Setup request unknow then stall it
// Setup request unknown then stall it
udd_ctrl_stall_data();
udd_ack_setup_received(0);
return;
@@ -1447,7 +1447,7 @@ static void udd_ctrl_in_sent(void)
udd_ctrl_prev_payload_buf_cnt += udd_ctrl_payload_buf_cnt;
if ((udd_g_ctrlreq.req.wLength == udd_ctrl_prev_payload_buf_cnt)
|| b_shortpacket) {
// All data requested are transfered or a short packet has been sent
// All data requested are transferred or a short packet has been sent
// then it is the end of data phase.
// Generate an OUT ZLP for handshake phase.
udd_ctrl_send_zlp_out();
@@ -1516,7 +1516,7 @@ static void udd_ctrl_out_received(void)
// End of SETUP request:
// - Data IN Phase aborted,
// - or last Data IN Phase hidden by ZLP OUT sending quiclky,
// - or ZLP OUT received normaly.
// - or ZLP OUT received normally.
udd_ctrl_endofrequest();
} else {
// Protocol error during SETUP request
@@ -1544,7 +1544,7 @@ static void udd_ctrl_out_received(void)
(udd_ctrl_prev_payload_buf_cnt +
udd_ctrl_payload_buf_cnt))) {
// End of reception because it is a short packet
// Before send ZLP, call intermediat calback
// Before send ZLP, call intermediate callback
// in case of data receiv generate a stall
udd_g_ctrlreq.payload_size = udd_ctrl_payload_buf_cnt;
if (NULL != udd_g_ctrlreq.over_under_run) {
@@ -1565,7 +1565,7 @@ static void udd_ctrl_out_received(void)
if (udd_g_ctrlreq.payload_size == udd_ctrl_payload_buf_cnt) {
// Overrun then request a new payload buffer
if (!udd_g_ctrlreq.over_under_run) {
// No callback availabled to request a new payload buffer
// No callback available to request a new payload buffer
udd_ctrl_stall_data();
// Ack reception of OUT to replace NAK by a STALL
udd_ack_out_received(0);
@@ -1805,7 +1805,7 @@ static void udd_ep_trans_done(udd_ep_id_t ep)
// transfer size of UDD_ENDPOINT_MAX_TRANS Bytes
next_trans = UDD_ENDPOINT_MAX_TRANS;
// Set 0 to tranfer the maximum
// Set 0 to transfer the maximum
udd_dma_ctrl = UOTGHS_DEVDMACONTROL_BUFF_LENGTH(0);
} else {
udd_dma_ctrl = UOTGHS_DEVDMACONTROL_BUFF_LENGTH(next_trans);
@@ -1850,7 +1850,7 @@ static void udd_ep_trans_done(udd_ep_id_t ep)
}
cpu_irq_restore(flags);
// Here a ZLP has been recieved
// Here a ZLP has been received
// and the DMA transfer must be not started.
// It is the end of transfer
ptr_job->buf_size = ptr_job->buf_cnt;
@@ -1991,13 +1991,13 @@ static bool udd_ep_interrupt(void)
}
dbg_print("dma%x: ", ep);
udd_disable_endpoint_dma_interrupt(ep);
// Save number of data no transfered
// Save number of data no transferred
nb_remaining = (udd_endpoint_dma_get_status(ep) &
UOTGHS_DEVDMASTATUS_BUFF_COUNT_Msk)
>> UOTGHS_DEVDMASTATUS_BUFF_COUNT_Pos;
if (nb_remaining) {
// Transfer no complete (short packet or ZLP) then:
// Update number of data transfered
// Update number of data transferred
ptr_job->buf_cnt -= nb_remaining;
// Set transfer complete to stop the transfer
ptr_job->buf_size = ptr_job->buf_cnt;
@@ -2056,7 +2056,7 @@ static bool udd_ep_interrupt(void)
udd_disable_endpoint_interrupt(ep);
Assert(ptr_job->stall_requested);
// A stall has been requested during backgound transfer
// A stall has been requested during background transfer
ptr_job->stall_requested = false;
udd_disable_endpoint_bank_autoswitch(ep);
udd_enable_stall_handshake(ep);
+1 -1
View File
@@ -130,7 +130,7 @@ struct usb_msc_cbw {
struct usb_msc_csw {
le32_t dCSWSignature; //!< Must contain 'USBS'
le32_t dCSWTag; //!< Same as dCBWTag
le32_t dCSWDataResidue; //!< Number of bytes not transfered
le32_t dCSWDataResidue; //!< Number of bytes not transferred
uint8_t bCSWStatus; //!< Status code
};
+142 -47
View File
@@ -28,6 +28,10 @@
#include <esp_adc_cal.h>
#include <HardwareSerial.h>
#if ENABLED(USE_ESP32_TASK_WDT)
#include <esp_task_wdt.h>
#endif
#if ENABLED(WIFISUPPORT)
#include <ESPAsyncWebServer.h>
#include "wifi.h"
@@ -48,7 +52,7 @@
// Externs
// ------------------------
portMUX_TYPE spinlock = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE MarlinHAL::spinlock = portMUX_INITIALIZER_UNLOCKED;
// ------------------------
// Local defines
@@ -60,7 +64,7 @@ portMUX_TYPE spinlock = portMUX_INITIALIZER_UNLOCKED;
// Public Variables
// ------------------------
uint16_t HAL_adc_result;
uint16_t MarlinHAL::adc_result;
// ------------------------
// Private Variables
@@ -69,9 +73,16 @@ uint16_t HAL_adc_result;
esp_adc_cal_characteristics_t characteristics[ADC_ATTEN_MAX];
adc_atten_t attenuations[ADC1_CHANNEL_MAX] = {};
uint32_t thresholds[ADC_ATTEN_MAX];
volatile int numPWMUsed = 0,
pwmPins[MAX_PWM_PINS],
pwmValues[MAX_PWM_PINS];
volatile int numPWMUsed = 0;
volatile struct { pin_t pin; int value; } pwmState[MAX_PWM_PINS];
pin_t chan_pin[CHANNEL_MAX_NUM + 1] = { 0 }; // PWM capable IOpins - not 0 or >33 on ESP32
struct {
uint32_t freq; // ledcReadFreq doesn't work if a duty hasn't been set yet!
uint16_t res;
} pwmInfo[(CHANNEL_MAX_NUM + 1) / 2];
// ------------------------
// Public functions
@@ -90,8 +101,26 @@ volatile int numPWMUsed = 0,
#endif
void HAL_init_board() {
#if ENABLED(USE_ESP32_EXIO)
HardwareSerial YSerial2(2);
void Write_EXIO(uint8_t IO, uint8_t v) {
if (hal.isr_state()) {
hal.isr_off();
YSerial2.write(0x80 | (((char)v) << 5) | (IO - 100));
hal.isr_on();
}
else
YSerial2.write(0x80 | (((char)v) << 5) | (IO - 100));
}
#endif
void MarlinHAL::init_board() {
#if ENABLED(USE_ESP32_TASK_WDT)
esp_task_wdt_init(10, true);
#endif
#if ENABLED(ESP3D_WIFISUPPORT)
esp3dlib.init();
#elif ENABLED(WIFISUPPORT)
@@ -127,30 +156,33 @@ void HAL_init_board() {
// Initialize the i2s peripheral only if the I2S stepper stream is enabled.
// The following initialization is performed after Serial1 and Serial2 are defined as
// their native pins might conflict with the i2s stream even when they are remapped.
TERN_(I2S_STEPPER_STREAM, i2s_init());
#if ENABLED(USE_ESP32_EXIO)
YSerial2.begin(460800 * 3, SERIAL_8N1, 16, 17);
#elif ENABLED(I2S_STEPPER_STREAM)
i2s_init();
#endif
}
void HAL_idletask() {
void MarlinHAL::idletask() {
#if BOTH(WIFISUPPORT, OTASUPPORT)
OTA_handle();
#endif
TERN_(ESP3D_WIFISUPPORT, esp3dlib.idletask());
}
void HAL_clear_reset_source() { }
uint8_t MarlinHAL::get_reset_source() { return rtc_get_reset_reason(1); }
uint8_t HAL_get_reset_source() { return rtc_get_reset_reason(1); }
void HAL_reboot() { ESP.restart(); }
void MarlinHAL::reboot() { ESP.restart(); }
void _delay_ms(int delay_ms) { delay(delay_ms); }
// return free memory between end of heap (or end bss) and whatever is current
int freeMemory() { return ESP.getFreeHeap(); }
int MarlinHAL::freeMemory() { return ESP.getFreeHeap(); }
// ------------------------
// ADC
// ------------------------
#define ADC1_CHANNEL(pin) ADC1_GPIO ## pin ## _CHANNEL
adc1_channel_t get_channel(int pin) {
@@ -172,22 +204,24 @@ void adc1_set_attenuation(adc1_channel_t chan, adc_atten_t atten) {
}
}
void HAL_adc_init() {
void MarlinHAL::adc_init() {
// Configure ADC
adc1_config_width(ADC_WIDTH_12Bit);
// Configure channels only if used as (re-)configuring a pin for ADC that is used elsewhere might have adverse effects
TERN_(HAS_TEMP_ADC_0, adc1_set_attenuation(get_channel(TEMP_0_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_1, adc1_set_attenuation(get_channel(TEMP_1_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_2, adc1_set_attenuation(get_channel(TEMP_2_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_3, adc1_set_attenuation(get_channel(TEMP_3_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_4, adc1_set_attenuation(get_channel(TEMP_4_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_5, adc1_set_attenuation(get_channel(TEMP_5_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_6, adc2_set_attenuation(get_channel(TEMP_6_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_7, adc3_set_attenuation(get_channel(TEMP_7_PIN), ADC_ATTEN_11db));
TERN_(HAS_HEATED_BED, adc1_set_attenuation(get_channel(TEMP_BED_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_CHAMBER, adc1_set_attenuation(get_channel(TEMP_CHAMBER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_COOLER, adc1_set_attenuation(get_channel(TEMP_COOLER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_0, adc1_set_attenuation(get_channel(TEMP_0_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_1, adc1_set_attenuation(get_channel(TEMP_1_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_2, adc1_set_attenuation(get_channel(TEMP_2_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_3, adc1_set_attenuation(get_channel(TEMP_3_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_4, adc1_set_attenuation(get_channel(TEMP_4_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_5, adc1_set_attenuation(get_channel(TEMP_5_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_6, adc2_set_attenuation(get_channel(TEMP_6_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_ADC_7, adc3_set_attenuation(get_channel(TEMP_7_PIN), ADC_ATTEN_11db));
TERN_(HAS_HEATED_BED, adc1_set_attenuation(get_channel(TEMP_BED_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_CHAMBER, adc1_set_attenuation(get_channel(TEMP_CHAMBER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_PROBE, adc1_set_attenuation(get_channel(TEMP_PROBE_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_COOLER, adc1_set_attenuation(get_channel(TEMP_COOLER_PIN), ADC_ATTEN_11db));
TERN_(HAS_TEMP_BOARD, adc1_set_attenuation(get_channel(TEMP_BOARD_PIN), ADC_ATTEN_11db));
TERN_(FILAMENT_WIDTH_SENSOR, adc1_set_attenuation(get_channel(FILWIDTH_PIN), ADC_ATTEN_11db));
// Note that adc2 is shared with the WiFi module, which has higher priority, so the conversion may fail.
@@ -202,11 +236,16 @@ void HAL_adc_init() {
}
}
void HAL_adc_start_conversion(const uint8_t adc_pin) {
const adc1_channel_t chan = get_channel(adc_pin);
#ifndef ADC_REFERENCE_VOLTAGE
#define ADC_REFERENCE_VOLTAGE 3.3
#endif
void MarlinHAL::adc_start(const pin_t pin) {
const adc1_channel_t chan = get_channel(pin);
uint32_t mv;
esp_adc_cal_get_voltage((adc_channel_t)chan, &characteristics[attenuations[chan]], &mv);
HAL_adc_result = mv * 1023.0 / 3300.0;
adc_result = mv * isr_float_t(1023) / isr_float_t(ADC_REFERENCE_VOLTAGE) / isr_float_t(1000);
// Change the attenuation level based on the new reading
adc_atten_t atten;
@@ -223,25 +262,81 @@ void HAL_adc_start_conversion(const uint8_t adc_pin) {
adc1_set_attenuation(chan, atten);
}
void analogWrite(pin_t pin, int value) {
// Use ledc hardware for internal pins
if (pin < 34) {
static int cnt_channel = 1, pin_to_channel[40] = { 0 };
if (pin_to_channel[pin] == 0) {
ledcAttachPin(pin, cnt_channel);
ledcSetup(cnt_channel, 490, 8);
ledcWrite(cnt_channel, value);
pin_to_channel[pin] = cnt_channel++;
// ------------------------
// PWM
// ------------------------
int8_t channel_for_pin(const uint8_t pin) {
for (int i = 0; i <= CHANNEL_MAX_NUM; i++)
if (chan_pin[i] == pin) return i;
return -1;
}
// get PWM channel for pin - if none then attach a new one
// return -1 if fail or invalid pin#, channel # (0-15) if success
int8_t get_pwm_channel(const pin_t pin, const uint32_t freq, const uint16_t res) {
if (!WITHIN(pin, 1, MAX_PWM_IOPIN)) return -1; // Not a hardware PWM pin!
int8_t cid = channel_for_pin(pin);
if (cid >= 0) return cid;
// Find an empty adjacent channel (same timer & freq/res)
for (int i = 0; i <= CHANNEL_MAX_NUM; i++) {
if (chan_pin[i] == 0) {
if (chan_pin[i ^ 0x1] != 0) {
if (pwmInfo[i / 2].freq == freq && pwmInfo[i / 2].res == res) {
chan_pin[i] = pin; // Allocate PWM to this channel
ledcAttachPin(pin, i);
return i;
}
}
else if (cid == -1) // Pair of empty channels?
cid = i & 0xFE; // Save lower channel number
}
ledcWrite(pin_to_channel[pin], value);
}
// not attached, is an empty timer slot avail?
if (cid >= 0) {
chan_pin[cid] = pin;
pwmInfo[cid / 2].freq = freq;
pwmInfo[cid / 2].res = res;
ledcSetup(cid, freq, res);
ledcAttachPin(pin, cid);
}
return cid; // -1 if no channel avail
}
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=_BV(PWM_RESOLUTION)-1*/, const bool invert/*=false*/) {
const int8_t cid = get_pwm_channel(pin, PWM_FREQUENCY, PWM_RESOLUTION);
if (cid >= 0) {
uint32_t duty = map(invert ? v_size - v : v, 0, v_size, 0, _BV(PWM_RESOLUTION)-1);
ledcWrite(cid, duty);
}
}
int8_t MarlinHAL::set_pwm_frequency(const pin_t pin, const uint32_t f_desired) {
const int8_t cid = channel_for_pin(pin);
if (cid >= 0) {
if (f_desired == ledcReadFreq(cid)) return cid; // no freq change
ledcDetachPin(chan_pin[cid]);
chan_pin[cid] = 0; // remove old freq channel
}
return get_pwm_channel(pin, f_desired, PWM_RESOLUTION); // try for new one
}
// use hardware PWM if avail, if not then ISR
void analogWrite(const pin_t pin, const uint16_t value, const uint32_t freq/*=PWM_FREQUENCY*/, const uint16_t res/*=8*/) { // always 8 bit resolution!
// Use ledc hardware for internal pins
const int8_t cid = get_pwm_channel(pin, freq, res);
if (cid >= 0) {
ledcWrite(cid, value); // set duty value
return;
}
// not a hardware PWM pin OR no PWM channels available
int idx = -1;
// Search Pin
for (int i = 0; i < numPWMUsed; ++i)
if (pwmPins[i] == pin) { idx = i; break; }
if (pwmState[i].pin == pin) { idx = i; break; }
// not found ?
if (idx < 0) {
@@ -250,34 +345,34 @@ void analogWrite(pin_t pin, int value) {
// Take new slot for pin
idx = numPWMUsed;
pwmPins[idx] = pin;
pwmState[idx].pin = pin;
// Start timer on first use
if (idx == 0) HAL_timer_start(PWM_TIMER_NUM, PWM_TIMER_FREQUENCY);
if (idx == 0) HAL_timer_start(MF_TIMER_PWM, PWM_TIMER_FREQUENCY);
++numPWMUsed;
}
// Use 7bit internal value - add 1 to have 100% high at 255
pwmValues[idx] = (value + 1) / 2;
pwmState[idx].value = (value + 1) / 2;
}
// Handle PWM timer interrupt
HAL_PWM_TIMER_ISR() {
HAL_timer_isr_prologue(PWM_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_PWM);
static uint8_t count = 0;
for (int i = 0; i < numPWMUsed; ++i) {
if (count == 0) // Start of interval
WRITE(pwmPins[i], pwmValues[i] ? HIGH : LOW);
else if (pwmValues[i] == count) // End of duration
WRITE(pwmPins[i], LOW);
digitalWrite(pwmState[i].pin, pwmState[i].value ? HIGH : LOW);
else if (pwmState[i].value == count) // End of duration
digitalWrite(pwmState[i].pin, LOW);
}
// 128 for 7 Bit resolution
count = (count + 1) & 0x7F;
HAL_timer_isr_epilogue(PWM_TIMER_NUM);
HAL_timer_isr_epilogue(MF_TIMER_PWM);
}
#endif // ARDUINO_ARCH_ESP32
+103 -55
View File
@@ -49,8 +49,6 @@
// Defines
// ------------------------
extern portMUX_TYPE spinlock;
#define MYSERIAL1 flushableSerial
#if EITHER(WIFISUPPORT, ESP3D_WIFISUPPORT)
@@ -65,24 +63,22 @@ extern portMUX_TYPE spinlock;
#define CRITICAL_SECTION_START() portENTER_CRITICAL(&spinlock)
#define CRITICAL_SECTION_END() portEXIT_CRITICAL(&spinlock)
#define ISRS_ENABLED() (spinlock.owner == portMUX_FREE_VAL)
#define ENABLE_ISRS() if (spinlock.owner != portMUX_FREE_VAL) portEXIT_CRITICAL(&spinlock)
#define DISABLE_ISRS() portENTER_CRITICAL(&spinlock)
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
#define PWM_FREQUENCY 1000u // Default PWM frequency when set_pwm_duty() is called without set_pwm_frequency()
#define PWM_RESOLUTION 10u // Default PWM bit resolution
#define CHANNEL_MAX_NUM 15u // max PWM channel # to allocate (7 to only use low speed, 15 to use low & high)
#define MAX_PWM_IOPIN 33u // hardware pwm pins < 34
// ------------------------
// Types
// ------------------------
typedef double isr_float_t; // FPU ops are used for single-precision, so use double for ISRs.
typedef int16_t pin_t;
#define HAL_SERVO_LIB Servo
// ------------------------
// Public Variables
// ------------------------
/** result of last ADC conversion */
extern uint16_t HAL_adc_result;
class Servo;
typedef Servo hal_servo_t;
// ------------------------
// Public functions
@@ -91,56 +87,21 @@ extern uint16_t HAL_adc_result;
//
// Tone
//
void toneInit();
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration=0);
void noTone(const pin_t _pin);
// clear reset reason
void HAL_clear_reset_source();
// reset reason
uint8_t HAL_get_reset_source();
void HAL_reboot();
void _delay_ms(int delay);
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
void analogWrite(pin_t pin, int value);
// ADC
#define HAL_ANALOG_SELECT(pin)
void HAL_adc_init();
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_START_ADC(pin) HAL_adc_start_conversion(pin)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
void HAL_adc_start_conversion(const uint8_t adc_pin);
void analogWrite(const pin_t pin, const uint16_t value, const uint32_t freq=PWM_FREQUENCY, const uint16_t res=8);
//
// Pin Mapping for M42, M43, M226
//
#define GET_PIN_MAP_PIN(index) index
#define GET_PIN_MAP_INDEX(pin) pin
#define PARSED_PIN_INDEX(code, dval) parser.intval(code, dval)
// Enable hooks into idle and setup for HAL
#define HAL_IDLETASK 1
#define BOARD_INIT() HAL_init_board();
void HAL_idletask();
inline void HAL_init() {}
void HAL_init_board();
#if ENABLED(USE_ESP32_EXIO)
void Write_EXIO(uint8_t IO, uint8_t v);
#endif
//
// Delay in cycles (used by DELAY_NS / DELAY_US)
@@ -182,3 +143,90 @@ FORCE_INLINE static void DELAY_CYCLES(uint32_t x) {
}
}
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
void _delay_ms(const int ms);
// ------------------------
// MarlinHAL Class
// ------------------------
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
static void init() {} // Called early in setup()
static void init_board(); // Called less early in setup()
static void reboot(); // Restart the firmware
// Interrupts
static portMUX_TYPE spinlock;
static bool isr_state() { return spinlock.owner == portMUX_FREE_VAL; }
static void isr_on() { if (spinlock.owner != portMUX_FREE_VAL) portEXIT_CRITICAL(&spinlock); }
static void isr_off() { portENTER_CRITICAL(&spinlock); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source() {}
// Free SRAM
static int freeMemory();
//
// ADC Methods
//
static uint16_t adc_result;
// Called by Temperature::init once at startup
static void adc_init();
// Called by Temperature::init for each sensor at startup
static void adc_enable(const pin_t pin) {}
// Begin ADC sampling on the given pin. Called from Temperature::isr!
static void adc_start(const pin_t pin);
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return adc_result; }
/**
* If not already allocated, allocate a hardware PWM channel
* to the pin and set the duty cycle..
* Optionally invert the duty cycle [default = false]
* Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
/**
* Allocate and set the frequency of a hardware PWM pin
* Returns -1 if no pin available.
*/
static int8_t set_pwm_frequency(const pin_t pin, const uint32_t f_desired);
};
+2 -4
View File
@@ -53,11 +53,9 @@ static SPISettings spiConfig;
// ------------------------
void spiBegin() {
#if !PIN_EXISTS(SD_SS)
#error "SD_SS_PIN not defined!"
#if ENABLED(SDSUPPORT) && PIN_EXISTS(SD_SS)
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
OUT_WRITE(SD_SS_PIN, HIGH);
}
void spiInit(uint8_t spiRate) {
+26
View File
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;
+8 -10
View File
@@ -31,20 +31,18 @@
// so we only allocate servo channels up high to avoid side effects with regards to analogWrite (fans, leds, laser pwm etc.)
int Servo::channel_next_free = 12;
Servo::Servo() {
channel = channel_next_free++;
}
Servo::Servo() {}
int8_t Servo::attach(const int inPin) {
if (channel >= CHANNEL_MAX_NUM) return -1;
if (inPin > 0) pin = inPin;
ledcSetup(channel, 50, 16); // channel X, 50 Hz, 16-bit depth
ledcAttachPin(pin, channel);
return true;
channel = get_pwm_channel(pin, 50u, 16u);
return channel; // -1 if no PWM avail.
}
void Servo::detach() { ledcDetachPin(pin); }
// leave channel connected to servo - set duty to zero
void Servo::detach() {
if (channel >= 0) ledcWrite(channel, 0);
}
int Servo::read() { return degrees; }
@@ -52,7 +50,7 @@ void Servo::write(int inDegrees) {
degrees = constrain(inDegrees, MIN_ANGLE, MAX_ANGLE);
int us = map(degrees, MIN_ANGLE, MAX_ANGLE, MIN_PULSE_WIDTH, MAX_PULSE_WIDTH);
int duty = map(us, 0, TAU_USEC, 0, MAX_COMPARE);
ledcWrite(channel, duty);
if (channel >= 0) ledcWrite(channel, duty); // don't save duty for servos!
}
void Servo::move(const int value) {
+1 -2
View File
@@ -30,8 +30,7 @@ class Servo {
MAX_PULSE_WIDTH = 2400, // Longest pulse sent to a servo
TAU_MSEC = 20,
TAU_USEC = (TAU_MSEC * 1000),
MAX_COMPARE = _BV(16) - 1, // 65535
CHANNEL_MAX_NUM = 16;
MAX_COMPARE = _BV(16) - 1; // 65535
public:
Servo();
+4 -4
View File
@@ -35,19 +35,19 @@
static pin_t tone_pin;
volatile static int32_t toggles;
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration) {
void tone(const pin_t _pin, const unsigned int frequency, const unsigned long duration/*=0*/) {
tone_pin = _pin;
toggles = 2 * frequency * duration / 1000;
HAL_timer_start(TONE_TIMER_NUM, 2 * frequency);
HAL_timer_start(MF_TIMER_TONE, 2 * frequency);
}
void noTone(const pin_t _pin) {
HAL_timer_disable_interrupt(TONE_TIMER_NUM);
HAL_timer_disable_interrupt(MF_TIMER_TONE);
WRITE(_pin, LOW);
}
HAL_TONE_TIMER_ISR() {
HAL_timer_isr_prologue(TONE_TIMER_NUM);
HAL_timer_isr_prologue(MF_TIMER_TONE);
if (toggles) {
toggles--;
@@ -65,4 +65,10 @@ void setup_endstop_interrupts() {
TERN_(HAS_J_MIN, _ATTACH(J_MIN_PIN));
TERN_(HAS_K_MAX, _ATTACH(K_MAX_PIN));
TERN_(HAS_K_MIN, _ATTACH(K_MIN_PIN));
TERN_(HAS_U_MAX, _ATTACH(U_MAX_PIN));
TERN_(HAS_U_MIN, _ATTACH(U_MIN_PIN));
TERN_(HAS_V_MAX, _ATTACH(V_MAX_PIN));
TERN_(HAS_V_MIN, _ATTACH(V_MIN_PIN));
TERN_(HAS_W_MAX, _ATTACH(W_MAX_PIN));
TERN_(HAS_W_MIN, _ATTACH(W_MIN_PIN));
}
+6
View File
@@ -0,0 +1,6 @@
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x5000,
otadata, data, ota, 0xe000, 0x2000,
app0, app, ota_0, 0x10000, 0x180000,
app1, app, ota_1, 0x190000, 0x180000,
spiffs, data, spiffs, 0x310000, 0xF0000,
1 # Name Type SubType Offset Size Flags
2 nvs data nvs 0x9000 0x5000
3 otadata data ota 0xe000 0x2000
4 app0 app ota_0 0x10000 0x180000
5 app1 app ota_1 0x190000 0x180000
6 spiffs data spiffs 0x310000 0xF0000
+12 -6
View File
@@ -40,13 +40,19 @@
// Set pin as input with pullup mode
#define _PULLUP(IO, v) pinMode(IO, v ? INPUT_PULLUP : INPUT)
// Read a pin wrapper
#define READ(IO) (IS_I2S_EXPANDER_PIN(IO) ? i2s_state(I2S_EXPANDER_PIN_INDEX(IO)) : digitalRead(IO))
#if ENABLED(USE_ESP32_EXIO)
// Read a pin wrapper
#define READ(IO) digitalRead(IO)
// Write to a pin wrapper
#define WRITE(IO, v) (IO >= 100 ? Write_EXIO(IO, v) : digitalWrite(IO, v))
#else
// Read a pin wrapper
#define READ(IO) (IS_I2S_EXPANDER_PIN(IO) ? i2s_state(I2S_EXPANDER_PIN_INDEX(IO)) : digitalRead(IO))
// Write to a pin wrapper
#define WRITE(IO, v) (IS_I2S_EXPANDER_PIN(IO) ? i2s_write(I2S_EXPANDER_PIN_INDEX(IO), v) : digitalWrite(IO, v))
#endif
// Write to a pin wrapper
#define WRITE(IO, v) (IS_I2S_EXPANDER_PIN(IO) ? i2s_write(I2S_EXPANDER_PIN_INDEX(IO), v) : digitalWrite(IO, v))
// Set pin as input wrapper
// Set pin as input wrapper (0x80 | (v << 5) | (IO - 100))
#define SET_INPUT(IO) _SET_INPUT(IO)
// Set pin as input with pullup wrapper
+17 -16
View File
@@ -23,6 +23,8 @@
#include "../../inc/MarlinConfigPre.h"
#if DISABLED(USE_ESP32_EXIO)
#include "i2s.h"
#include "../shared/Marduino.h"
@@ -62,12 +64,9 @@ uint32_t i2s_port_data = 0;
#define I2S_EXIT_CRITICAL() portEXIT_CRITICAL(&i2s_spinlock[i2s_num])
static inline void gpio_matrix_out_check(uint32_t gpio, uint32_t signal_idx, bool out_inv, bool oen_inv) {
//if pin = -1, do not need to configure
if (gpio != -1) {
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
gpio_set_direction((gpio_num_t)gpio, (gpio_mode_t)GPIO_MODE_DEF_OUTPUT);
gpio_matrix_out(gpio, signal_idx, out_inv, oen_inv);
}
PIN_FUNC_SELECT(GPIO_PIN_MUX_REG[gpio], PIN_FUNC_GPIO);
gpio_set_direction((gpio_num_t)gpio, (gpio_mode_t)GPIO_MODE_DEF_OUTPUT);
gpio_matrix_out(gpio, signal_idx, out_inv, oen_inv);
}
static esp_err_t i2s_reset_fifo(i2s_port_t i2s_num) {
@@ -254,13 +253,7 @@ int i2s_init() {
I2S0.fifo_conf.dscr_en = 0;
I2S0.conf_chan.tx_chan_mod = (
#if ENABLED(I2S_STEPPER_SPLIT_STREAM)
4
#else
0
#endif
);
I2S0.conf_chan.tx_chan_mod = TERN(I2S_STEPPER_SPLIT_STREAM, 4, 0);
I2S0.fifo_conf.tx_fifo_mod = 0;
I2S0.conf.tx_mono = 0;
@@ -311,9 +304,16 @@ int i2s_init() {
xTaskCreatePinnedToCore(stepperTask, "StepperTask", 10000, nullptr, 1, nullptr, CONFIG_ARDUINO_RUNNING_CORE); // run I2S stepper task on same core as rest of Marlin
// Route the i2s pins to the appropriate GPIO
gpio_matrix_out_check(I2S_DATA, I2S0O_DATA_OUT23_IDX, 0, 0);
gpio_matrix_out_check(I2S_BCK, I2S0O_BCK_OUT_IDX, 0, 0);
gpio_matrix_out_check(I2S_WS, I2S0O_WS_OUT_IDX, 0, 0);
// If a pin is not defined, no need to configure
#if defined(I2S_DATA) && I2S_DATA >= 0
gpio_matrix_out_check(I2S_DATA, I2S0O_DATA_OUT23_IDX, 0, 0);
#endif
#if defined(I2S_BCK) && I2S_BCK >= 0
gpio_matrix_out_check(I2S_BCK, I2S0O_BCK_OUT_IDX, 0, 0);
#endif
#if defined(I2S_WS) && I2S_WS >= 0
gpio_matrix_out_check(I2S_WS, I2S0O_WS_OUT_IDX, 0, 0);
#endif
// Start the I2S peripheral
return i2s_start(I2S_NUM_0);
@@ -340,4 +340,5 @@ void i2s_push_sample() {
dma.current[dma.rw_pos++] = i2s_port_data;
}
#endif // !USE_ESP32_EXIO
#endif // ARDUINO_ARCH_ESP32
+10 -2
View File
@@ -25,8 +25,8 @@
#error "EMERGENCY_PARSER is not yet implemented for ESP32. Disable EMERGENCY_PARSER to continue."
#endif
#if ENABLED(FAST_PWM_FAN) || SPINDLE_LASER_FREQUENCY
#error "Features requiring Hardware PWM (FAST_PWM_FAN, SPINDLE_LASER_FREQUENCY) are not yet supported on ESP32."
#if (ENABLED(SPINDLE_LASER_USE_PWM) && SPINDLE_LASER_FREQUENCY > 78125) || (ENABLED(FAST_PWM_FAN_FREQUENCY) && FAST_PWM_FAN_FREQUENCY > 78125)
#error "SPINDLE_LASER_FREQUENCY and FAST_PWM_FREQUENCY maximum value is 78125Hz for ESP32."
#endif
#if HAS_TMC_SW_SERIAL
@@ -40,3 +40,11 @@
#if ENABLED(POSTMORTEM_DEBUGGING)
#error "POSTMORTEM_DEBUGGING is not yet supported on ESP32."
#endif
#if MB(MKS_TINYBEE) && ENABLED(FAST_PWM_FAN)
#error "FAST_PWM_FAN is not available on TinyBee."
#endif
#if USING_PULLDOWNS
#error "PULLDOWN pin mode is not available on ESP32 boards."
#endif
+3
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
+10 -10
View File
@@ -41,7 +41,7 @@
static timg_dev_t *TG[2] = {&TIMERG0, &TIMERG1};
const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
const tTimerConfig timer_config[NUM_HARDWARE_TIMERS] = {
{ TIMER_GROUP_0, TIMER_0, STEPPER_TIMER_PRESCALE, stepTC_Handler }, // 0 - Stepper
{ TIMER_GROUP_0, TIMER_1, TEMP_TIMER_PRESCALE, tempTC_Handler }, // 1 - Temperature
{ TIMER_GROUP_1, TIMER_0, PWM_TIMER_PRESCALE, pwmTC_Handler }, // 2 - PWM
@@ -53,7 +53,7 @@ const tTimerConfig TimerConfig [NUM_HARDWARE_TIMERS] = {
// ------------------------
void IRAM_ATTR timer_isr(void *para) {
const tTimerConfig& timer = TimerConfig[(int)para];
const tTimerConfig& timer = timer_config[(int)para];
// Retrieve the interrupt status and the counter value
// from the timer that reported the interrupt
@@ -81,8 +81,8 @@ void IRAM_ATTR timer_isr(void *para) {
* @param timer_num timer number to initialize
* @param frequency frequency of the timer
*/
void HAL_timer_start(const uint8_t timer_num, uint32_t frequency) {
const tTimerConfig timer = TimerConfig[timer_num];
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency) {
const tTimerConfig timer = timer_config[timer_num];
timer_config_t config;
config.divider = timer.divider;
@@ -115,7 +115,7 @@ void HAL_timer_start(const uint8_t timer_num, uint32_t frequency) {
* @param count threshold at which the interrupt is triggered
*/
void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
timer_set_alarm_value(timer.group, timer.idx, count);
}
@@ -125,7 +125,7 @@ void HAL_timer_set_compare(const uint8_t timer_num, hal_timer_t count) {
* @return the timer current threshold for the alarm to be triggered
*/
hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
uint64_t alarm_value;
timer_get_alarm_value(timer.group, timer.idx, &alarm_value);
@@ -139,7 +139,7 @@ hal_timer_t HAL_timer_get_compare(const uint8_t timer_num) {
* @return the current counter of the alarm
*/
hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
uint64_t counter_value;
timer_get_counter_value(timer.group, timer.idx, &counter_value);
return counter_value;
@@ -150,7 +150,7 @@ hal_timer_t HAL_timer_get_count(const uint8_t timer_num) {
* @param timer_num timer number to enable interrupts on
*/
void HAL_timer_enable_interrupt(const uint8_t timer_num) {
//const tTimerConfig timer = TimerConfig[timer_num];
//const tTimerConfig timer = timer_config[timer_num];
//timer_enable_intr(timer.group, timer.idx);
}
@@ -159,12 +159,12 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num) {
* @param timer_num timer number to disable interrupts on
*/
void HAL_timer_disable_interrupt(const uint8_t timer_num) {
//const tTimerConfig timer = TimerConfig[timer_num];
//const tTimerConfig timer = timer_config[timer_num];
//timer_disable_intr(timer.group, timer.idx);
}
bool HAL_timer_interrupt_enabled(const uint8_t timer_num) {
const tTimerConfig timer = TimerConfig[timer_num];
const tTimerConfig timer = timer_config[timer_num];
return TG[timer.group]->int_ena.val | BIT(timer_num);
}
+19 -19
View File
@@ -32,20 +32,20 @@
typedef uint64_t hal_timer_t;
#define HAL_TIMER_TYPE_MAX 0xFFFFFFFFFFFFFFFFULL
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 0 // Timer Index for Stepper
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 0 // Timer Index for Stepper
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 1 // Timer Index for Temperature
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 1 // Timer Index for Temperature
#endif
#ifndef PWM_TIMER_NUM
#define PWM_TIMER_NUM 2 // index of timer to use for PWM outputs
#ifndef MF_TIMER_PWM
#define MF_TIMER_PWM 2 // index of timer to use for PWM outputs
#endif
#ifndef TONE_TIMER_NUM
#define TONE_TIMER_NUM 3 // index of timer for beeper tones
#ifndef MF_TIMER_TONE
#define MF_TIMER_TONE 3 // index of timer for beeper tones
#endif
#define HAL_TIMER_RATE APB_CLK_FREQ // frequency of timer peripherals
@@ -79,12 +79,12 @@ typedef uint64_t hal_timer_t;
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#ifndef HAL_TEMP_TIMER_ISR
#define HAL_TEMP_TIMER_ISR() extern "C" void tempTC_Handler()
@@ -121,13 +121,13 @@ typedef struct {
// Public Variables
// ------------------------
extern const tTimerConfig TimerConfig[];
extern const tTimerConfig timer_config[];
// ------------------------
// Public functions
// ------------------------
void HAL_timer_start (const uint8_t timer_num, uint32_t frequency);
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
void HAL_timer_set_compare(const uint8_t timer_num, const hal_timer_t count);
hal_timer_t HAL_timer_get_compare(const uint8_t timer_num);
hal_timer_t HAL_timer_get_count(const uint8_t timer_num);
@@ -136,5 +136,5 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num);
void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
#define HAL_timer_isr_prologue(TIMER_NUM)
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_prologue(T) NOOP
#define HAL_timer_isr_epilogue(T) NOOP
+100
View File
@@ -0,0 +1,100 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2022 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* Copypaste of SAMD51 HAL developed by Giuliano Zaro (AKA GMagician)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef ARDUINO_ARCH_ESP32
#include "../../inc/MarlinConfigPre.h"
#if ENABLED(FYSETC_MINI_12864_2_1)
#include <U8glib-HAL.h>
#include "Arduino.h"
#include "../shared/HAL_SPI.h"
#include "HAL.h"
#include "SPI.h"
static SPISettings spiConfig;
#define MDOGLCD_MOSI 23
#define MDOGLCD_SCK 18
#define MLCD_RESET_PIN 0
#define MLCD_PINS_DC 4
#define MDOGLCD_CS 21
#define MDOGLCD_A0 4
#ifndef LCD_SPI_SPEED
#ifdef SD_SPI_SPEED
#define LCD_SPI_SPEED SD_SPI_SPEED // Assume SPI speed shared with SD
#else
#define LCD_SPI_SPEED SPI_FULL_SPEED // Use full speed if SD speed is not supplied
#endif
#endif
uint8_t u8g_eps_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
static uint8_t msgInitCount = 2; // Ignore all messages until 2nd U8G_COM_MSG_INIT
if (msgInitCount) {
if (msg == U8G_COM_MSG_INIT) msgInitCount--;
if (msgInitCount) return -1;
}
switch (msg) {
case U8G_COM_MSG_STOP: break;
case U8G_COM_MSG_INIT:
OUT_WRITE(MDOGLCD_CS, HIGH);
OUT_WRITE(MDOGLCD_A0, HIGH);
OUT_WRITE(MLCD_RESET_PIN, HIGH);
u8g_Delay(5);
spiBegin();
spiInit(LCD_SPI_SPEED);
break;
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
WRITE(MDOGLCD_A0, arg_val ? HIGH : LOW);
break;
case U8G_COM_MSG_CHIP_SELECT: /* arg_val == 0 means HIGH level of U8G_PI_CS */
WRITE(MDOGLCD_CS, arg_val ? LOW : HIGH);
break;
case U8G_COM_MSG_RESET:
WRITE(MLCD_RESET_PIN, arg_val);
break;
case U8G_COM_MSG_WRITE_BYTE:
spiSend((uint8_t)arg_val);
break;
case U8G_COM_MSG_WRITE_SEQ:
uint8_t *ptr = (uint8_t*) arg_ptr;
while (arg_val > 0) {
spiSend(*ptr++);
arg_val--;
}
break;
}
return 1;
}
#endif // FYSETC_MINI_12864_2_1
#endif // ARDUINO_ARCH_ESP32
+1 -1
View File
@@ -25,7 +25,7 @@
extern "C" {
#endif
esp_err_t esp_task_wdt_reset();
esp_err_t esp_task_wdt_reset();
#ifdef __cplusplus
}
+1 -1
View File
@@ -59,7 +59,7 @@ void wifi_init() {
MDNS.addService("http", "tcp", 80);
SERIAL_ECHOLNPAIR("Successfully connected to WiFi with SSID '" WIFI_SSID "', hostname: '" WIFI_HOSTNAME "', IP address: ", WiFi.localIP().toString().c_str());
SERIAL_ECHOLNPGM("Successfully connected to WiFi with SSID '" WIFI_SSID "', hostname: '" WIFI_HOSTNAME "', IP address: ", WiFi.localIP().toString().c_str());
}
#endif // WIFISUPPORT
+10 -27
View File
@@ -24,6 +24,10 @@
#include "../../inc/MarlinConfig.h"
#include "../shared/Delay.h"
// ------------------------
// Serial ports
// ------------------------
MSerialT usb_serial(TERN0(EMERGENCY_PARSER, true));
// U8glib required functions
@@ -37,42 +41,21 @@ extern "C" {
//************************//
// return free heap space
int freeMemory() {
return 0;
}
int freeMemory() { return 0; }
// ------------------------
// ADC
// ------------------------
void HAL_adc_init() {
uint8_t MarlinHAL::active_ch = 0;
}
void HAL_adc_enable_channel(const uint8_t ch) {
}
uint8_t active_ch = 0;
void HAL_adc_start_conversion(const uint8_t ch) {
active_ch = ch;
}
bool HAL_adc_finished() {
return true;
}
uint16_t HAL_adc_get_result() {
pin_t pin = analogInputToDigitalPin(active_ch);
uint16_t MarlinHAL::adc_value() {
const pin_t pin = analogInputToDigitalPin(active_ch);
if (!VALID_PIN(pin)) return 0;
uint16_t data = ((Gpio::get(pin) >> 2) & 0x3FF);
const uint16_t data = ((Gpio::get(pin) >> 2) & 0x3FF);
return data; // return 10bit value as Marlin expects
}
void HAL_pwm_init() {
}
void HAL_reboot() { /* Reset the application state and GPIO */ }
void MarlinHAL::reboot() { /* Reset the application state and GPIO */ }
#endif // __PLAT_LINUX__
+100 -54
View File
@@ -21,34 +21,13 @@
*/
#pragma once
#define CPU_32_BIT
#define F_CPU 100000000UL
#define SystemCoreClock F_CPU
#include <iostream>
#include <stdint.h>
#include <stdarg.h>
#undef min
#undef max
#include <algorithm>
void _printf (const char *format, ...);
void _putc(uint8_t c);
uint8_t _getc();
//extern "C" volatile uint32_t _millis;
//arduino: Print.h
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
//arduino: binary.h (weird defines)
#define B01 1
#define B10 2
#include "hardware/Clock.h"
#include "../shared/Marduino.h"
@@ -58,58 +37,125 @@ uint8_t _getc();
#include "watchdog.h"
#include "serial.h"
#define SHARED_SERVOS HAS_SERVOS
// ------------------------
// Defines
// ------------------------
#define CPU_32_BIT
#define SHARED_SERVOS HAS_SERVOS // Use shared/servos.cpp
#define F_CPU 100000000UL
#define SystemCoreClock F_CPU
#define DELAY_CYCLES(x) Clock::delayCycles(x)
#define CPU_ST7920_DELAY_1 600
#define CPU_ST7920_DELAY_2 750
#define CPU_ST7920_DELAY_3 750
void _printf(const char *format, ...);
void _putc(uint8_t c);
uint8_t _getc();
//arduino: Print.h
#define DEC 10
#define HEX 16
#define OCT 8
#define BIN 2
//arduino: binary.h (weird defines)
#define B01 1
#define B10 2
// ------------------------
// Serial ports
// ------------------------
extern MSerialT usb_serial;
#define MYSERIAL1 usb_serial
#define ST7920_DELAY_1 DELAY_NS(600)
#define ST7920_DELAY_2 DELAY_NS(750)
#define ST7920_DELAY_3 DELAY_NS(750)
//
// Interrupts
//
#define CRITICAL_SECTION_START()
#define CRITICAL_SECTION_END()
#define ISRS_ENABLED()
#define ENABLE_ISRS()
#define DISABLE_ISRS()
inline void HAL_init() {}
// ADC
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
// Utility functions
// ------------------------
// Class Utilities
// ------------------------
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#pragma GCC diagnostic pop
// ADC
#define HAL_ADC_VREF 5.0
#define HAL_ADC_RESOLUTION 10
#define HAL_ANALOG_SELECT(ch) HAL_adc_enable_channel(ch)
#define HAL_START_ADC(ch) HAL_adc_start_conversion(ch)
#define HAL_READ_ADC() HAL_adc_get_result()
#define HAL_ADC_READY() true
// ------------------------
// MarlinHAL Class
// ------------------------
void HAL_adc_init();
void HAL_adc_enable_channel(const uint8_t ch);
void HAL_adc_start_conversion(const uint8_t ch);
uint16_t HAL_adc_get_result();
class MarlinHAL {
public:
// Reset source
inline void HAL_clear_reset_source(void) {}
inline uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; }
// Earliest possible init, before setup()
MarlinHAL() {}
void HAL_reboot(); // Reset the application state and GPIO
static void init() {} // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Reset the application state and GPIO
/* ---------------- Delay in cycles */
FORCE_INLINE static void DELAY_CYCLES(uint64_t x) {
Clock::delayCycles(x);
}
// Interrupts
static bool isr_state() { return true; }
static void isr_on() {}
static void isr_off() {}
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask() {}
// Reset
static constexpr uint8_t reset_reason = RST_POWER_ON;
static uint8_t get_reset_source() { return reset_reason; }
static void clear_reset_source() {}
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
static uint8_t active_ch;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const uint8_t) {}
// Begin ADC sampling on the given channel
static void adc_start(const uint8_t ch) { active_ch = ch; }
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value();
/**
* Set the PWM duty cycle for the pin to the given value.
* No option to change the resolution or invert the duty cycle.
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t=255, const bool=false) {
analogWrite(pin, v);
}
static void set_pwm_frequency(const pin_t, int) {}
};
+26
View File
@@ -0,0 +1,26 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2021 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#pragma once
#include <SPI.h>
using MarlinSPI = SPIClass;
+1 -3
View File
@@ -31,9 +31,7 @@ void cli() { } // Disable
void sei() { } // Enable
// Time functions
void _delay_ms(const int delay_ms) {
delay(delay_ms);
}
void _delay_ms(const int ms) { delay(ms); }
uint32_t millis() {
return (uint32_t)Clock::millis();
+1 -1
View File
@@ -40,7 +40,7 @@ struct GpioEvent {
pin_type pin_id;
GpioEvent::Type event;
GpioEvent(uint64_t timestamp, pin_type pin_id, GpioEvent::Type event){
GpioEvent(uint64_t timestamp, pin_type pin_id, GpioEvent::Type event) {
this->timestamp = timestamp;
this->pin_id = pin_id;
this->event = event;
+1 -1
View File
@@ -54,7 +54,7 @@ void Heater::update() {
}
void Heater::interrupt(GpioEvent ev) {
// ununsed
// unused
}
#endif // __PLAT_LINUX__
+1 -1
View File
@@ -51,7 +51,7 @@ void LinearAxis::update() {
}
void LinearAxis::interrupt(GpioEvent ev) {
if (ev.pin_id == step_pin && !Gpio::pin_map[enable_pin].value){
if (ev.pin_id == step_pin && !Gpio::pin_map[enable_pin].value) {
if (ev.event == GpioEvent::RISE) {
last_update = ev.timestamp;
position += -1 + 2 * Gpio::pin_map[dir_pin].value;
+1 -1
View File
@@ -52,7 +52,7 @@ public:
return (*(intptr_t*)timerid);
}
static void handler(int sig, siginfo_t *si, void *uc){
static void handler(int sig, siginfo_t *si, void *uc) {
Timer* _this = (Timer*)si->si_value.sival_ptr;
_this->avg_error += (Clock::nanos() - _this->start_time) - _this->period; //high_resolution_clock is also limited in precision, but best we have
_this->avg_error /= 2; //very crude precision analysis (actually within +-500ns usually)
+1 -1
View File
@@ -26,7 +26,7 @@
*/
// Emulating RAMPS
#if ENABLED(SPINDLE_LASER_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
#if ENABLED(SPINDLE_LASER_USE_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
#error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
#endif
+3 -4
View File
@@ -59,10 +59,9 @@ typedef uint8_t byte;
#endif
#define sq(v) ((v) * (v))
#define square(v) sq(v)
#define constrain(value, arg_min, arg_max) ((value) < (arg_min) ? (arg_min) :((value) > (arg_max) ? (arg_max) : (value)))
//Interrupts
// Interrupts
void cli(); // Disable
void sei(); // Enable
void attachInterrupt(uint32_t pin, void (*callback)(), uint32_t mode);
@@ -74,8 +73,8 @@ extern "C" {
}
// Time functions
extern "C" void delay(const int milis);
void _delay_ms(const int delay);
extern "C" void delay(const int ms);
void _delay_ms(const int ms);
void delayMicroseconds(unsigned long);
uint32_t millis();
@@ -25,43 +25,6 @@
#include "../../../gcode/parser.h"
uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin) {
return pin;
}
// Test whether the pin is valid
bool VALID_PIN(const pin_t p) {
return WITHIN(p, 0, NUM_DIGITAL_PINS);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p) {
return false;
}
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p) {
return false;
}
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind) {
return ind;
}
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
return parser.intval(code, dval);
}
+18 -12
View File
@@ -34,26 +34,32 @@ constexpr uint8_t NUM_ANALOG_INPUTS = 16;
#define HAL_SENSITIVE_PINS
constexpr uint8_t analog_offset = NUM_DIGITAL_PINS - NUM_ANALOG_INPUTS;
// Get the digital pin for an analog index
pin_t analogInputToDigitalPin(const int8_t p);
// Return the index of a pin number
int16_t GET_PIN_MAP_INDEX(const pin_t pin);
// Test whether the pin is valid
bool VALID_PIN(const pin_t p);
constexpr pin_t analogInputToDigitalPin(const int8_t p) {
return (WITHIN(p, 0, NUM_ANALOG_INPUTS) ? analog_offset + p : P_NC);
}
// Get the analog index for a digital pin
int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p);
constexpr int8_t DIGITAL_PIN_TO_ANALOG_PIN(const pin_t p) {
return (WITHIN(p, analog_offset, NUM_DIGITAL_PINS) ? p - analog_offset : P_NC);
}
// Return the index of a pin number
constexpr int16_t GET_PIN_MAP_INDEX(const pin_t pin) { return pin; }
// Test whether the pin is valid
constexpr bool VALID_PIN(const pin_t p) { return WITHIN(p, 0, NUM_DIGITAL_PINS); }
// Test whether the pin is PWM
bool PWM_PIN(const pin_t p);
constexpr bool PWM_PIN(const pin_t p) { return false; }
// Test whether the pin is interruptable
bool INTERRUPT_PIN(const pin_t p);
// Test whether the pin is interruptible
constexpr bool INTERRUPT_PIN(const pin_t p) { return false; }
// Get the pin number at the given index
pin_t GET_PIN_MAP_PIN(const int16_t ind);
constexpr pin_t GET_PIN_MAP_PIN(const int16_t ind) { return ind; }
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
+4
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -16,6 +19,7 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#ifdef __PLAT_LINUX__
//#define GPIO_LOGGING // Full GPIO and Positional Logging
+4
View File
@@ -2,6 +2,9 @@
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
@@ -34,6 +37,7 @@
#define GET_ARRAY_PIN(p) pin_array[p].pin
#define PRINT_ARRAY_NAME(x) do{ sprintf_P(buffer, PSTR("%-" STRINGIFY(MAX_NAME_LENGTH) "s"), pin_array[x].name); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PIN_ANALOG(p) do{ sprintf_P(buffer, PSTR(" (A%2d) "), DIGITAL_PIN_TO_ANALOG_PIN(pin)); SERIAL_ECHO(buffer); }while(0)
#define MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
// active ADC function/mode/code values for PINSEL registers
+13 -14
View File
@@ -37,14 +37,14 @@ typedef uint32_t hal_timer_t;
#define HAL_TIMER_RATE ((SystemCoreClock) / 4) // frequency of timers peripherals
#ifndef STEP_TIMER_NUM
#define STEP_TIMER_NUM 0 // Timer Index for Stepper
#ifndef MF_TIMER_STEP
#define MF_TIMER_STEP 0 // Timer Index for Stepper
#endif
#ifndef PULSE_TIMER_NUM
#define PULSE_TIMER_NUM STEP_TIMER_NUM
#ifndef MF_TIMER_PULSE
#define MF_TIMER_PULSE MF_TIMER_STEP
#endif
#ifndef TEMP_TIMER_NUM
#define TEMP_TIMER_NUM 1 // Timer Index for Temperature
#ifndef MF_TIMER_TEMP
#define MF_TIMER_TEMP 1 // Timer Index for Temperature
#endif
#define TEMP_TIMER_RATE 1000000
@@ -58,12 +58,12 @@ typedef uint32_t hal_timer_t;
#define PULSE_TIMER_PRESCALE STEPPER_TIMER_PRESCALE
#define PULSE_TIMER_TICKS_PER_US STEPPER_TIMER_TICKS_PER_US
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(STEP_TIMER_NUM)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(STEP_TIMER_NUM)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(STEP_TIMER_NUM)
#define ENABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_STEP)
#define DISABLE_STEPPER_DRIVER_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_STEP)
#define STEPPER_ISR_ENABLED() HAL_timer_interrupt_enabled(MF_TIMER_STEP)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(TEMP_TIMER_NUM)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(TEMP_TIMER_NUM)
#define ENABLE_TEMPERATURE_INTERRUPT() HAL_timer_enable_interrupt(MF_TIMER_TEMP)
#define DISABLE_TEMPERATURE_INTERRUPT() HAL_timer_disable_interrupt(MF_TIMER_TEMP)
#ifndef HAL_STEP_TIMER_ISR
#define HAL_STEP_TIMER_ISR() extern "C" void TIMER0_IRQHandler()
@@ -77,7 +77,6 @@ typedef uint32_t hal_timer_t;
#define HAL_PWM_TIMER_ISR() extern "C" void TIMER3_IRQHandler()
#define HAL_PWM_TIMER_IRQn
void HAL_timer_init();
void HAL_timer_start(const uint8_t timer_num, const uint32_t frequency);
@@ -93,5 +92,5 @@ void HAL_timer_enable_interrupt(const uint8_t timer_num);
void HAL_timer_disable_interrupt(const uint8_t timer_num);
bool HAL_timer_interrupt_enabled(const uint8_t timer_num);
#define HAL_timer_isr_prologue(TIMER_NUM)
#define HAL_timer_isr_epilogue(TIMER_NUM)
#define HAL_timer_isr_prologue(T) NOOP
#define HAL_timer_isr_epilogue(T) NOOP
+22 -24
View File
@@ -31,7 +31,7 @@
DefaultSerial1 USBSerial(false, UsbSerial);
uint32_t HAL_adc_reading = 0;
uint32_t MarlinHAL::adc_result = 0;
// U8glib required functions
extern "C" {
@@ -41,8 +41,6 @@ extern "C" {
void u8g_Delay(uint16_t val) { delay(val); }
}
//************************//
// return free heap space
int freeMemory() {
char stack_end;
@@ -54,7 +52,27 @@ int freeMemory() {
return result;
}
// scan command line for code
void MarlinHAL::reboot() { NVIC_SystemReset(); }
uint8_t MarlinHAL::get_reset_source() {
#if ENABLED(USE_WATCHDOG)
if (watchdog_timed_out()) return RST_WATCHDOG;
#endif
return RST_POWER_ON;
}
void MarlinHAL::clear_reset_source() {
TERN_(USE_WATCHDOG, watchdog_clear_timeout_flag());
}
void flashFirmware(const int16_t) {
delay(500); // Give OS time to disconnect
USB_Connect(false); // USB clear connection
delay(1000); // Give OS time to notice
hal.reboot();
}
// For M42/M43, scan command line for pin code
// return index into pin map array if found and the pin is valid.
// return dval if not found or not a valid pin.
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
@@ -63,24 +81,4 @@ int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) {
return ind > -1 ? ind : dval;
}
void flashFirmware(const int16_t) {
delay(500); // Give OS time to disconnect
USB_Connect(false); // USB clear connection
delay(1000); // Give OS time to notice
HAL_reboot();
}
void HAL_clear_reset_source(void) {
TERN_(USE_WATCHDOG, watchdog_clear_timeout_flag());
}
uint8_t HAL_get_reset_source(void) {
#if ENABLED(USE_WATCHDOG)
if (watchdog_timed_out()) return RST_WATCHDOG;
#endif
return RST_POWER_ON;
}
void HAL_reboot() { NVIC_SystemReset(); }
#endif // TARGET_LPC1768
+101 -70
View File
@@ -28,8 +28,6 @@
#define CPU_32_BIT
void HAL_init();
#include <stdint.h>
#include <stdarg.h>
#include <algorithm>
@@ -47,18 +45,9 @@ extern "C" volatile uint32_t _millis;
#include <pinmapping.h>
#include <CDCSerial.h>
//
// Default graphical display delays
//
#ifndef ST7920_DELAY_1
#define ST7920_DELAY_1 DELAY_NS(600)
#endif
#ifndef ST7920_DELAY_2
#define ST7920_DELAY_2 DELAY_NS(750)
#endif
#ifndef ST7920_DELAY_3
#define ST7920_DELAY_3 DELAY_NS(750)
#endif
// ------------------------
// Serial ports
// ------------------------
typedef ForwardSerial1Class< decltype(UsbSerial) > DefaultSerial1;
extern DefaultSerial1 USBSerial;
@@ -113,35 +102,19 @@ extern DefaultSerial1 USBSerial;
#error "LCD_SERIAL_PORT must be from 0 to 3. You can also use -1 if the board supports Native USB."
#endif
#if HAS_DGUS_LCD
#define SERIAL_GET_TX_BUFFER_FREE() MSerial0.available()
#define SERIAL_GET_TX_BUFFER_FREE() LCD_SERIAL.available()
#endif
#endif
//
// Interrupts
//
#define CRITICAL_SECTION_START() uint32_t primask = __get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (!primask) __enable_irq()
#define ISRS_ENABLED() (!__get_PRIMASK())
#define ENABLE_ISRS() __enable_irq()
#define DISABLE_ISRS() __disable_irq()
#define CRITICAL_SECTION_START() const bool irqon = !__get_PRIMASK(); __disable_irq()
#define CRITICAL_SECTION_END() if (irqon) __enable_irq()
//
// Utility functions
//
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
//
// ADC API
// ADC
//
#define ADC_MEDIAN_FILTER_SIZE (23) // Higher values increase step delay (phase shift),
@@ -160,20 +133,9 @@ int freeMemory();
#define HAL_ADC_RESOLUTION 12 // 15 bit maximum, raw temperature is stored as int16_t
#define HAL_ADC_FILTERED // Disable oversampling done in Marlin as ADC values already filtered in HAL
using FilteredADC = LPC176x::ADC<ADC_LOWPASS_K_VALUE, ADC_MEDIAN_FILTER_SIZE>;
extern uint32_t HAL_adc_reading;
[[gnu::always_inline]] inline void HAL_start_adc(const pin_t pin) {
HAL_adc_reading = FilteredADC::read(pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits
}
[[gnu::always_inline]] inline uint16_t HAL_read_adc() {
return HAL_adc_reading;
}
#define HAL_adc_init()
#define HAL_ANALOG_SELECT(pin) FilteredADC::enable_channel(pin)
#define HAL_START_ADC(pin) HAL_start_adc(pin)
#define HAL_READ_ADC() HAL_read_adc()
#define HAL_ADC_READY() (true)
//
// Pin Mapping for M42, M43, M226
//
// Test whether the pin is valid
constexpr bool VALID_PIN(const pin_t pin) {
@@ -198,34 +160,103 @@ constexpr pin_t GET_PIN_MAP_PIN(const int16_t index) {
// Parse a G-code word into a pin index
int16_t PARSED_PIN_INDEX(const char code, const int16_t dval);
// P0.6 thru P0.9 are for the onboard SD card
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09
#define HAL_SENSITIVE_PINS P0_06, P0_07, P0_08, P0_09,
#define HAL_IDLETASK 1
void HAL_idletask();
// ------------------------
// Defines
// ------------------------
#define PLATFORM_M997_SUPPORT
void flashFirmware(const int16_t);
#define HAL_CAN_SET_PWM_FREQ // This HAL supports PWM Frequency adjustment
/**
* set_pwm_frequency
* Set the frequency of the timer corresponding to the provided pin
* All Hardware PWM pins run at the same frequency and all
* Software PWM pins run at the same frequency
*/
void set_pwm_frequency(const pin_t pin, int f_desired);
// Default graphical display delays
#define CPU_ST7920_DELAY_1 600
#define CPU_ST7920_DELAY_2 750
#define CPU_ST7920_DELAY_3 750
/**
* set_pwm_duty
* Set the PWM duty cycle of the provided pin to the provided value
* Optionally allows inverting the duty cycle [default = false]
* Optionally allows changing the maximum size of the provided value to enable finer PWM duty control [default = 255]
*/
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
// ------------------------
// Class Utilities
// ------------------------
// Reset source
void HAL_clear_reset_source(void);
uint8_t HAL_get_reset_source(void);
#pragma GCC diagnostic push
#if GCC_VERSION <= 50000
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
void HAL_reboot();
int freeMemory();
#pragma GCC diagnostic pop
// ------------------------
// MarlinHAL Class
// ------------------------
class MarlinHAL {
public:
// Earliest possible init, before setup()
MarlinHAL() {}
static void init(); // Called early in setup()
static void init_board() {} // Called less early in setup()
static void reboot(); // Restart the firmware from 0x0
// Interrupts
static bool isr_state() { return !__get_PRIMASK(); }
static void isr_on() { __enable_irq(); }
static void isr_off() { __disable_irq(); }
static void delay_ms(const int ms) { _delay_ms(ms); }
// Tasks, called from idle()
static void idletask();
// Reset
static uint8_t get_reset_source();
static void clear_reset_source();
// Free SRAM
static int freeMemory() { return ::freeMemory(); }
//
// ADC Methods
//
using FilteredADC = LPC176x::ADC<ADC_LOWPASS_K_VALUE, ADC_MEDIAN_FILTER_SIZE>;
// Called by Temperature::init once at startup
static void adc_init() {}
// Called by Temperature::init for each sensor at startup
static void adc_enable(const pin_t pin) {
FilteredADC::enable_channel(pin);
}
// Begin ADC sampling on the given pin. Called from Temperature::isr!
static uint32_t adc_result;
static void adc_start(const pin_t pin) {
adc_result = FilteredADC::read(pin) >> (16 - HAL_ADC_RESOLUTION); // returns 16bit value, reduce to required bits
}
// Is the ADC ready for reading?
static bool adc_ready() { return true; }
// The current value of the ADC register
static uint16_t adc_value() { return uint16_t(adc_result); }
/**
* Set the PWM duty cycle for the pin to the given value.
* Optionally invert the duty cycle [default = false]
* Optionally change the scale of the provided value to enable finer PWM duty control [default = 255]
*/
static void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255, const bool invert=false);
/**
* Set the frequency of the timer corresponding to the provided pin
* All Hardware PWM pins will run at the same frequency and
* All Software PWM pins will run at the same frequency
*/
static void set_pwm_frequency(const pin_t pin, const uint16_t f_desired);
};
+6 -12
View File
@@ -66,11 +66,7 @@
#include <SoftwareSPI.h>
#ifndef HAL_SPI_SPEED
#define HAL_SPI_SPEED SPI_FULL_SPEED
#endif
static uint8_t SPI_speed = HAL_SPI_SPEED;
static uint8_t SPI_speed = SPI_FULL_SPEED;
static uint8_t spiTransfer(uint8_t b) {
return swSpiTransfer(b, SPI_speed, SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN);
@@ -106,15 +102,13 @@
#else
#ifndef HAL_SPI_SPEED
#ifdef SD_SPI_SPEED
#define HAL_SPI_SPEED SD_SPI_SPEED
#else
#define HAL_SPI_SPEED SPI_FULL_SPEED
#endif
#ifdef SD_SPI_SPEED
#define INIT_SPI_SPEED SD_SPI_SPEED
#else
#define INIT_SPI_SPEED SPI_FULL_SPEED
#endif
void spiBegin() { spiInit(HAL_SPI_SPEED); } // Set up SCK, MOSI & MISO pins for SSP0
void spiBegin() { spiInit(INIT_SPI_SPEED); } // Set up SCK, MOSI & MISO pins for SSP0
void spiInit(uint8_t spiRate) {
#if SD_MISO_PIN == BOARD_SPI1_MISO_PIN
+2
View File
@@ -46,6 +46,8 @@ public:
void end() {}
uint8_t availableForWrite(void) { /* flushTX(); */ return TX_BUFFER_SIZE; }
#if ENABLED(EMERGENCY_PARSER)
bool recv_callback(const char c) override;
#endif
+2 -1
View File
@@ -65,4 +65,5 @@ class libServo: public Servo {
}
};
#define HAL_SERVO_LIB libServo
class libServo;
typedef libServo hal_servo_t;
+27 -17
View File
@@ -1,10 +1,9 @@
/**
* Marlin 3D Printer Firmware
*
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2016 Bob Cousins bobcousins42@googlemail.com
* Copyright (c) 2015-2016 Nico Tonnhofer wurstnase.reprap@gmail.com
* Copyright (c) 2016 Victor Perez victor_pv@hotmail.com
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -20,12 +19,19 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
/**
* Implementation of EEPROM settings in SD Card
*/
#ifdef TARGET_LPC1768
#include "../../inc/MarlinConfig.h"
#if ENABLED(SDCARD_EEPROM_EMULATION)
//#define DEBUG_SD_EEPROM_EMULATION
#include "../shared/eeprom_api.h"
#include <chanfs/diskio.h>
@@ -38,9 +44,11 @@ FATFS fat_fs;
FIL eeprom_file;
bool eeprom_file_open = false;
#define EEPROM_FILENAME "eeprom.dat"
#ifndef MARLIN_EEPROM_SIZE
#define MARLIN_EEPROM_SIZE size_t(0x1000) // 4KiB of Emulated EEPROM
#endif
size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() {
@@ -50,7 +58,7 @@ bool PersistentStore::access_start() {
MSC_Release_Lock();
return false;
}
FRESULT res = f_open(&eeprom_file, "eeprom.dat", FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
FRESULT res = f_open(&eeprom_file, EEPROM_FILENAME, FA_OPEN_ALWAYS | FA_WRITE | FA_READ);
if (res) MSC_Release_Lock();
if (res == FR_OK) {
@@ -81,18 +89,20 @@ bool PersistentStore::access_finish() {
// This extra chit-chat goes away soon, but is helpful for now
// to see errors that are happening in read_data / write_data
static void debug_rw(const bool write, int &pos, const uint8_t *value, const size_t size, const FRESULT s, const size_t total=0) {
PGM_P const rw_str = write ? PSTR("write") : PSTR("read");
SERIAL_CHAR(' ');
SERIAL_ECHOPGM_P(rw_str);
SERIAL_ECHOLNPAIR("_data(", pos, ",", value, ",", size, ", ...)");
if (total) {
SERIAL_ECHOPGM(" f_");
SERIAL_ECHOPGM_P(rw_str);
SERIAL_ECHOPAIR("()=", s, "\n size=", size, "\n bytes_");
SERIAL_ECHOLNPAIR_P(write ? PSTR("written=") : PSTR("read="), total);
}
else
SERIAL_ECHOLNPAIR(" f_lseek()=", s);
#if ENABLED(DEBUG_SD_EEPROM_EMULATION)
FSTR_P const rw_str = write ? F("write") : F("read");
SERIAL_CHAR(' ');
SERIAL_ECHOF(rw_str);
SERIAL_ECHOLNPGM("_data(", pos, ",", *value, ",", size, ", ...)");
if (total) {
SERIAL_ECHOPGM(" f_");
SERIAL_ECHOF(rw_str);
SERIAL_ECHOPGM("()=", s, "\n size=", size, "\n bytes_");
SERIAL_ECHOLNF(write ? F("written=") : F("read="), total);
}
else
SERIAL_ECHOLNPGM(" f_lseek()=", s);
#endif
}
// File function return codes for type FRESULT. This goes away soon, but
@@ -155,4 +155,37 @@ void setup_endstop_interrupts() {
#endif
_ATTACH(K_MIN_PIN);
#endif
#if HAS_U_MAX
#if !LPC1768_PIN_INTERRUPT_M(U_MAX_PIN)
#error "U_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(U_MAX_PIN);
#elif HAS_U_MIN
#if !LPC1768_PIN_INTERRUPT_M(U_MIN_PIN)
#error "U_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(U_MIN_PIN);
#endif
#if HAS_V_MAX
#if !LPC1768_PIN_INTERRUPT_M(V_MAX_PIN)
#error "V_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(V_MAX_PIN);
#elif HAS_V_MIN
#if !LPC1768_PIN_INTERRUPT_M(V_MIN_PIN)
#error "V_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(V_MIN_PIN);
#endif
#if HAS_W_MAX
#if !LPC1768_PIN_INTERRUPT_M(W_MAX_PIN)
#error "W_MAX_PIN is not INTERRUPT-capable."
#endif
_ATTACH(W_MAX_PIN);
#elif HAS_W_MIN
#if !LPC1768_PIN_INTERRUPT_M(W_MIN_PIN)
#error "W_MIN_PIN is not INTERRUPT-capable."
#endif
_ATTACH(W_MIN_PIN);
#endif
}
+8 -10
View File
@@ -21,19 +21,17 @@
*/
#ifdef TARGET_LPC1768
#include "../../inc/MarlinConfigPre.h"
#if NEEDS_HARDWARE_PWM // Specific meta-flag for features that mandate PWM
#include "../../inc/MarlinConfig.h"
#include <pwm.h>
void set_pwm_frequency(const pin_t pin, int f_desired) {
void MarlinHAL::set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
if (!LPC176x::pin_is_valid(pin)) return;
if (LPC176x::pwm_attach_pin(pin))
LPC176x::pwm_write_ratio(pin, invert ? 1.0f - (float)v / v_size : (float)v / v_size); // map 1-254 onto PWM range
}
void MarlinHAL::set_pwm_frequency(const pin_t pin, const uint16_t f_desired) {
LPC176x::pwm_set_frequency(pin, f_desired);
}
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
LPC176x::pwm_write_ratio(pin, invert ? 1.0f - (float)v / v_size : (float)v / v_size);
}
#endif // NEEDS_HARDWARE_PWM
#endif // TARGET_LPC1768
+4 -4
View File
@@ -67,7 +67,7 @@ static_assert(!(NUM_SERVOS && ENABLED(FAST_PWM_FAN)), "BLTOUCH and Servos are in
* Test LPC176x-specific configuration values for errors at compile-time.
*/
//#if ENABLED(SPINDLE_LASER_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
//#if ENABLED(SPINDLE_LASER_USE_PWM) && !(SPINDLE_LASER_PWM_PIN == 4 || SPINDLE_LASER_PWM_PIN == 6 || SPINDLE_LASER_PWM_PIN == 11)
// #error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
//#endif
@@ -113,7 +113,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#define _IS_RX1_1 IS_RX1
#if IS_TX1(TMC_SW_SCK)
#error "Serial port pins (1) conflict with other pins!"
#elif HAS_WIRED_LCD
#elif HAS_ROTARY_ENCODER
#if IS_TX1(BTN_EN2) || IS_RX1(BTN_EN1)
#error "Serial port pins (1) conflict with Encoder Buttons!"
#elif ANY_TX(1, SD_SCK_PIN, LCD_PINS_D4, DOGLCD_SCK, LCD_RESET_PIN, LCD_PINS_RS, SHIFT_CLK_PIN) \
@@ -146,7 +146,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#error "Serial port pins (2) conflict with other pins!"
#elif Y_HOME_TO_MIN && IS_TX2(Y_STOP_PIN)
#error "Serial port pins (2) conflict with Y endstop pin!"
#elif HAS_CUSTOM_PROBE_PIN && IS_TX2(Z_MIN_PROBE_PIN)
#elif USES_Z_MIN_PROBE_PIN && IS_TX2(Z_MIN_PROBE_PIN)
#error "Serial port pins (2) conflict with probe pin!"
#elif ANY_TX(2, X_ENABLE_PIN, Y_ENABLE_PIN) || ANY_RX(2, X_DIR_PIN, Y_DIR_PIN)
#error "Serial port pins (2) conflict with X/Y stepper pins!"
@@ -237,7 +237,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#define PIN_IS_SCL2(P) (P##_PIN == P0_11)
#if PIN_IS_SDA2(Y_STOP)
#error "i2c SDA2 overlaps with Y endstop pin!"
#elif HAS_CUSTOM_PROBE_PIN && PIN_IS_SDA2(Z_MIN_PROBE)
#elif USES_Z_MIN_PROBE_PIN && PIN_IS_SDA2(Z_MIN_PROBE)
#error "i2c SDA2 overlaps with Z probe pin!"
#elif PIN_IS_SDA2(X_ENABLE) || PIN_IS_SDA2(Y_ENABLE)
#error "i2c SDA2 overlaps with X/Y ENABLE pin!"
+1 -1
View File
@@ -77,7 +77,7 @@ public:
//uint32_t spiRate() const { return spi_speed; }
static inline uint32_t spiRate2Clock(uint32_t spiRate) {
static uint32_t spiRate2Clock(uint32_t spiRate) {
uint32_t Marlin_speed[7]; // CPSR is always 2
Marlin_speed[0] = 8333333; //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
Marlin_speed[1] = 4166667; //(SCR: 5) desired: 4,000,000 actual: 4,166,667 +4.2% SPI_HALF_SPEED
@@ -29,7 +29,7 @@
#include "../../../inc/MarlinConfigPre.h"
#if MB(MKS_SBASE)
#if ENABLED(DIGIPOT_MCP4451) && MB(MKS_SBASE)
#ifdef __cplusplus
extern "C" {
@@ -37,35 +37,6 @@
#include "digipot_mcp4451_I2C_routines.h"
// These two routines are exact copies of the lpc17xx_i2c.c routines. Couldn't link to
// to the lpc17xx_i2c.c routines so had to copy them into this file & rename them.
static uint32_t _I2C_Start(LPC_I2C_TypeDef *I2Cx) {
// Reset STA, STO, SI
I2Cx->I2CONCLR = I2C_I2CONCLR_SIC|I2C_I2CONCLR_STOC|I2C_I2CONCLR_STAC;
// Enter to Master Transmitter mode
I2Cx->I2CONSET = I2C_I2CONSET_STA;
// Wait for complete
while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
}
static void _I2C_Stop(LPC_I2C_TypeDef *I2Cx) {
// Make sure start bit is not active
if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
I2Cx->I2CONSET = I2C_I2CONSET_STO|I2C_I2CONSET_AA;
I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
}
I2C_M_SETUP_Type transferMCfg;
#define I2C_status (LPC_I2C1->I2STAT & I2C_STAT_CODE_BITMASK)
uint8_t digipot_mcp4451_start(uint8_t sla) { // send slave address and write bit
// Sometimes TX data ACK or NAK status is returned. That mean the start state didn't
// happen which means only the value of the slave address was send. Keep looping until
@@ -102,5 +73,5 @@ uint8_t digipot_mcp4451_send_byte(uint8_t data) {
}
#endif
#endif // MB(MKS_SBASE)
#endif // DIGIPOT_MCP4451 && MKS_SBASE
#endif // TARGET_LPC1768
+26
View File
@@ -63,6 +63,32 @@ void configure_i2c(const uint8_t clock_option) {
I2C_Cmd(I2CDEV_M, I2C_MASTER_MODE, ENABLE);
}
//////////////////////////////////////////////////////////////////////////////////////
// These two routines are exact copies of the lpc17xx_i2c.c routines. Couldn't link to
// to the lpc17xx_i2c.c routines so had to copy them into this file & rename them.
uint32_t _I2C_Start(LPC_I2C_TypeDef *I2Cx) {
// Reset STA, STO, SI
I2Cx->I2CONCLR = I2C_I2CONCLR_SIC|I2C_I2CONCLR_STOC|I2C_I2CONCLR_STAC;
// Enter to Master Transmitter mode
I2Cx->I2CONSET = I2C_I2CONSET_STA;
// Wait for complete
while (!(I2Cx->I2CONSET & I2C_I2CONSET_SI));
I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
return (I2Cx->I2STAT & I2C_STAT_CODE_BITMASK);
}
void _I2C_Stop(LPC_I2C_TypeDef *I2Cx) {
/* Make sure start bit is not active */
if (I2Cx->I2CONSET & I2C_I2CONSET_STA)
I2Cx->I2CONCLR = I2C_I2CONCLR_STAC;
I2Cx->I2CONSET = I2C_I2CONSET_STO|I2C_I2CONSET_AA;
I2Cx->I2CONCLR = I2C_I2CONCLR_SIC;
}
#ifdef __cplusplus
}
#endif
@@ -51,6 +51,11 @@
void configure_i2c(const uint8_t clock_option);
uint32_t _I2C_Start(LPC_I2C_TypeDef *I2Cx);
void _I2C_Stop(LPC_I2C_TypeDef *I2Cx);
#define I2C_status (LPC_I2C1->I2STAT & I2C_STAT_CODE_BITMASK)
#ifdef __cplusplus
}
#endif

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