Compare commits

...

576 Commits

Author SHA1 Message Date
InsanityAutomation fcec2775f4 Merge branch 'bugfix-2.0.x' into TMSX4_2.0_Bleeding 2021-01-03 11:58:40 -05:00
Scott Lahteine edea49f9a9 Creality 4.2.10 board (#20647) 2021-01-03 07:16:50 -06:00
Scott Lahteine 1d63fe6542 Add ALL_AXES manual move for UBL mesh editing
Co-Authored-By: Jason Smith <20053467+sjasonsmith@users.noreply.github.com>

#20620
2021-01-02 19:01:09 -06:00
Scott Lahteine 87d32647f1 Animated boot followup 2021-01-02 18:41:16 -06:00
ellensp 56a5d0b287 Homing code followup (#20632)
Patching a87e5197cf
2021-01-02 18:37:47 -06:00
thinkyhead f86765a760 [cron] Bump distribution date (2021-01-03) 2021-01-03 00:25:06 +00:00
Scott Lahteine 3efbd45443 Improved bootscreen animation 2021-01-02 16:02:52 -06:00
Scott Lahteine a87e5197cf Document, adjust some homing code 2021-01-02 03:41:06 -06:00
qwewer0 5b33afb1dd Fix a comment (#20629) 2021-01-02 02:53:34 -06:00
ellensp b0585e13d8 Check for misplaced configs on build (#20599)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-01-02 02:51:35 -06:00
qwewer0 e685950d97 Assisted Tramming improvements (#20298) 2021-01-02 02:33:31 -06:00
ellensp 5eaa10e2ad Fix //action prefix (#20600) 2021-01-02 02:06:50 -06:00
Jason Smith 9f53738339 Fix UBL mesh edit delta moves (#20620)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-01-01 20:08:10 -06:00
thinkyhead b9d9e74f2c [cron] Bump distribution date (2021-01-02) 2021-01-02 00:23:53 +00:00
Jason Smith 4402a0578a Fix CHAMBER_FAN_MODE 0 build (#20621) 2021-01-01 14:56:59 -06:00
zeleps 815c636449 Fix PARKING_EXTRUDER homing with solenoid (#20473) 2021-01-01 14:54:44 -06:00
Victor Oliveira c840bbc970 Prefix SD SPI pins (SCK, MISO, MOSI, SS) (#20606)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2021-01-01 14:31:15 -06:00
thinkyhead b530db948e [cron] Bump distribution date (2021-01-01) 2021-01-01 00:24:38 +00:00
Scott Lahteine a9d18f0f57 SPI and pins cleanup 2020-12-30 22:00:36 -06:00
thinkyhead 811b5f8bc3 [cron] Bump distribution date (2020-12-31) 2020-12-31 00:25:38 +00:00
thinkyhead 4ad633bae2 [cron] Bump distribution date (2020-12-30) 2020-12-30 00:23:46 +00:00
Victor Oliveira 41e4124af9 Support 4.3" (480x272) Color UI display (#20334) 2020-12-28 23:26:35 -06:00
Victor Oliveira 84ab088b40 USB FD via native USB Host + MSC (#20571) 2020-12-28 23:16:38 -06:00
Scott Lahteine d6a56b882f Pins, comment cleanup 2020-12-28 23:11:55 -06:00
Tanguy Pruvot 624bf10ab5 Clarify sanity-check for custom status bitmap (#20588) 2020-12-28 22:13:56 -06:00
Victor Oliveira 90a2b482e6 LVGL G-code preview. Legacy MKS WiFi Cura plugin compatibility (#20589) 2020-12-28 22:07:11 -06:00
Keith Bennett aff4fccfc3 Apply SHOW_BOOTSCREEN to TFT_COLOR_UI (#20586) 2020-12-28 21:56:37 -06:00
thinkyhead aa4119a849 [cron] Bump distribution date (2020-12-29) 2020-12-29 00:22:23 +00:00
Scott Lahteine a8c361c93b Menu item index followup 2020-12-27 23:49:15 -06:00
Victor Oliveira a3fac744c7 Fix Change Filament menu actions (#20565)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-27 23:39:52 -06:00
Victor Oliveira 9eaa69874a Fix LVGL_UI G-code preview (#20564) 2020-12-27 23:15:01 -06:00
Victor Oliveira 28a3d95cda Use ADC_RESOLUTION 12 for all STM32 (#20562) 2020-12-27 23:14:08 -06:00
Victor Oliveira 185e31d322 Fix Menu Mixer for Color UI (#20566) 2020-12-27 23:11:36 -06:00
Victor Oliveira 2ce9fa4b9c Better defaults, compatibility for SDIO + STM32 (#20570) 2020-12-27 23:08:06 -06:00
Keith Bennett cfcfc8047a Small / Large Boot Screen option for TFT_COLOR_UI (#20578) 2020-12-27 21:10:53 -06:00
Scott Lahteine 91c350e793 Remove URL scheme 2020-12-27 21:00:07 -06:00
Scott Lahteine 84a1fff302 Allow define HOMING_FEEDRATE_(XY|Z) 2020-12-27 20:50:38 -06:00
Scott Lahteine e83b7edefc General cleanup 2020-12-27 20:50:38 -06:00
Jason Smith 81d7bd8f41 Validate defined probe points (#20572) 2020-12-27 20:49:15 -06:00
thinkyhead 31af49e507 [cron] Bump distribution date (2020-12-28) 2020-12-28 00:21:01 +00:00
Scott Lahteine 45996fd20a Init tare pin once 2020-12-27 16:36:35 -06:00
Scott Lahteine f423edd938 Add probe_switch_activated 2020-12-27 16:36:35 -06:00
Scott Lahteine d00c89946d Remove CREALITY_TOUCH 2020-12-27 16:29:50 -06:00
Scott Lahteine 198b3ae0f8 Fix some comments 2020-12-27 16:27:15 -06:00
Ashammaru 719404803b Fix SPINDLE_LASER_FREQUENCY (#20509) 2020-12-26 19:01:54 -06:00
thinkyhead 331ca6a800 [cron] Bump distribution date (2020-12-27) 2020-12-27 00:20:30 +00:00
thinkyhead e2480d40d1 [cron] Bump distribution date (2020-12-26) 2020-12-26 00:19:22 +00:00
thinkyhead 4b860f1092 [cron] Bump distribution date (2020-12-25) 2020-12-25 00:21:08 +00:00
Mike La Spina 1fc0dcdc97 Cutter Power in percent format (#20410)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2020-12-23 22:50:24 -06:00
Vi B-P 820cc69d0a Apply NO_MOTION_BEFORE_HOMING to joystick motion (#20462)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-23 22:43:33 -06:00
Scott Lahteine 20073246bb Fix, clean up FTDI EVE Touch UI (#20466)
Co-Authored-By: Marcio T. <mlt4356-github@yahoo.com>
2020-12-23 22:23:45 -06:00
Jason Smith 57e94fb838 Fix ST7920 timing for Rumba32, Fysetc S6 (#20556) 2020-12-23 21:35:21 -06:00
Victor Oliveira e6c15eee45 Fix DOGM status message scrolling (#20557) 2020-12-23 21:34:09 -06:00
Scott Lahteine f0c29afe21 Add "End Repeat Loops" menu item 2020-12-23 20:24:34 -06:00
Victor Oliveira 4d6b6bcffc LVGL and Classic UI for STM32 (#20552) 2020-12-23 20:01:21 -06:00
Scott Lahteine f8c6de0cdc Move BTT_SKR_CR6 2020-12-23 19:57:49 -06:00
thinkyhead 9a60f7a793 [cron] Bump distribution date (2020-12-24) 2020-12-24 00:23:59 +00:00
ubik2 844a8c7074 Add OPTIMIZED_MESH_STORAGE option (for UBL) (#20371)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-23 18:19:48 -06:00
LinFor 2d88a2cfb7 Remaining Time for FTDI EVE, bp for ExtUI (#20549)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-23 16:37:17 -06:00
Scott Lahteine 59de35e749 Apply ENABLED in ExiUI / FTDI 2020-12-23 15:34:04 -06:00
Darren Peter 2844086772 Support ANET_FULL_GRAPHICS_LCD_ALT_WIRING on BTT SKR 1.4 (#20427) 2020-12-23 01:21:02 -06:00
Sebastiaan Dammann 2be027f92e Probe Activation Switch followup (#20550) 2020-12-23 01:02:27 -06:00
BsCmOD 34d9cb6778 Enhanced Italian language (#20551) 2020-12-23 01:01:18 -06:00
LinFor 6af6a35d9d FTDI EVE: Cyrillic font, some minor fixes (#20517) 2020-12-23 00:51:59 -06:00
yysh12 6ec4e744c0 Improve plan_arc circle detection (#20440)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-23 00:12:20 -06:00
wmariz c87c354403 Refactor 'Level Corners with Probe' (#20460)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-23 00:10:56 -06:00
thinkyhead 56fac55a39 [cron] Bump distribution date (2020-12-23) 2020-12-23 00:20:43 +00:00
Jan Krajdl de9c0eda36 Support RGBW on PCA9632 (#20455)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-22 08:27:14 -06:00
Tanguy Pruvot c559fc8227 Fix G28 leveling state, UBL compile (#20499) 2020-12-22 07:01:24 -06:00
Victor Oliveira cfad5cb435 Unify FYSETC F6 1.3 / 1.4 (#20507)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-12-22 06:57:11 -06:00
Serhiy-K 0b3b4da7d0 STM32F1xx support for TFTGLCD (#20515) 2020-12-22 06:56:00 -06:00
Keith Bennett a0c8d348a0 Anet ET4 / ET4P and Anet TFT28 / TFT35 (#20280) 2020-12-22 06:51:29 -06:00
Sean McGroty 08dcd1f680 Creality v4.3.1 (Ender 6) board (#20512) 2020-12-22 06:25:12 -06:00
X-Ryl669 91730d71ff Improve Touch Calibration screen (#20524) 2020-12-22 06:17:06 -06:00
Jason Smith 5e3be83dbb Overrides to prevent STM32 timer conflicts (#20545) 2020-12-22 06:02:25 -06:00
Chris Pepper c1b900aae9 Fix UBL mesh inset Z position (#20538) 2020-12-22 05:59:25 -06:00
Jason Smith 094e822070 Improve STM32 timer conflict messages (#20544) 2020-12-22 05:49:34 -06:00
LinFor 82540be931 FTDI EVE custom user menus (#20518) 2020-12-22 00:31:14 -06:00
LinFor 36aff1e464 12-bit ADC resolution for STM32 (#20519) 2020-12-21 18:30:03 -06:00
thinkyhead ba1176108a [cron] Bump distribution date (2020-12-22) 2020-12-22 00:19:00 +00:00
LinFor 9b3e16cdd0 Add Tune -> Advanced Settings to FTDI EVE (#20532) 2020-12-21 18:06:27 -06:00
Scott Lahteine 34b6bca006 Tweak FTDI spacing 2020-12-21 17:48:03 -06:00
Scott Lahteine 6429be6efc Robin pins followup 2020-12-21 17:47:22 -06:00
LinFor ba16c53218 Fix some Russian (#20529) 2020-12-21 17:45:00 -06:00
cr20-123 0d95f67f2e Fix G34 compile with bed leveling disabled (#20537) 2020-12-21 17:43:45 -06:00
Sebastiaan Dammann 3ec59b36eb Add BTT SKR CR6 board (#20522) 2020-12-21 17:36:43 -06:00
Scott Lahteine c7ecfe28e7 Clean up some pins 2020-12-21 17:36:43 -06:00
Dick Streefland 7afd274d0c Apply HOME_AFTER_DEACTIVATE for 'G28 O' (#20525) 2020-12-21 01:49:00 -06:00
Dick Streefland 71bec0824c Get E3V2 DWIN MACHINE_SIZE from config (#20526) 2020-12-21 01:47:49 -06:00
InsanityAutomation 2aeafb7c8c Update Configuration.h 2020-12-20 23:12:26 -05:00
thinkyhead 4764e2c544 [cron] Bump distribution date (2020-12-21) 2020-12-21 00:17:17 +00:00
Scott Lahteine 777c50a1ec Fix PIO typo 2020-12-20 00:45:22 -06:00
Serhiy-K d8687512b1 Update Russian and Ukrainian languages (#20508) 2020-12-20 00:33:23 -06:00
Scott Lahteine 62cc65cafe Languages cleanup 2020-12-20 00:30:20 -06:00
Foxies 0a99f8feed Migrate Hispeedv1 (QQS-Pro) to HAL/STM32 (#20354) 2020-12-20 00:17:24 -06:00
Jason Smith 6dfcd491d0 Fix Creality EEPROM watchdog freq. (#20510) 2020-12-19 23:55:57 -06:00
InsanityAutomation 2963229dfa Probe Tare, Probe Activation Switch (#20379)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-19 22:11:43 -06:00
InsanityAutomation 7a168205eb Minimum temp options for Probing and G12 Nozzle Clean (#20383)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-12-19 22:02:38 -06:00
Keith Bennett 9a8f8f8284 Let boards set Default TMC Slave Addresses (#20498)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-12-19 21:48:31 -06:00
thinkyhead 57f4d0523e [cron] Bump distribution date (2020-12-20) 2020-12-20 00:14:49 +00:00
Scott Lahteine 45b11553f4 Tweaks for pins_BTT_SKR_common.h 2020-12-18 21:15:48 -06:00
Scott Lahteine e5d0b27aaf Rename QUIET_PROBING 2020-12-18 21:13:50 -06:00
thinkyhead a33ae10c56 [cron] Bump distribution date (2020-12-19) 2020-12-19 00:15:28 +00:00
Tanguy Pruvot 017d97fd0e DOGM: Slow down touchscreen calibration (#20454) 2020-12-18 16:21:00 -06:00
Victor Oliveira b167cd2427 MKS Robin Nano V3 and STM32F4x0Vx Variant (#20430) 2020-12-18 16:18:04 -06:00
thinkyhead fae3c860a1 [cron] Bump distribution date (2020-12-18) 2020-12-18 00:15:25 +00:00
grauerfuchs e9677594ea Fix and optimize MightyBoard (#20493) 2020-12-17 17:22:59 -06:00
Jason Smith 7b9ff164cc Balance CI tests (#20485) 2020-12-17 06:18:07 -06:00
nb-rapidia 978d93af88 Make M220 B / R a standard feature (#20355) 2020-12-17 06:13:07 -06:00
ellensp 31337826a3 Fix ZoneStar LCD 2004 buttons (#20489) 2020-12-17 06:05:25 -06:00
rafaljot fbcc07261d Homing feedrates as XYZ array (#20426)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-17 06:02:05 -06:00
Scott Lahteine 20b3af1cc2 Use homing_feedrate function 2020-12-16 22:19:04 -06:00
thinkyhead 6d47baee5d [cron] Bump distribution date (2020-12-17) 2020-12-17 00:15:48 +00:00
Tanguy Pruvot c6dcf9d006 Update French language (#20472) 2020-12-16 00:46:10 -06:00
Scott Lahteine f934b774a1 Update Hungarian language
Co-Authored-By: Zs.Antal <45710979+AntoszHUN@users.noreply.github.com>
2020-12-16 00:42:55 -06:00
Giuliano Zaro e6fdf530b8 Update Italian language (#20480) 2020-12-16 00:35:13 -06:00
thinkyhead 1c4f125cb0 [cron] Bump distribution date (2020-12-16) 2020-12-16 00:14:09 +00:00
Scott Lahteine 3f93b8baed Trust STM32 gcc versions 2020-12-15 01:06:32 -06:00
Scott Lahteine 637123f340 Update some LCD includes 2020-12-15 01:06:27 -06:00
Scott Lahteine 7243ea549d Update some pins errors 2020-12-15 00:49:55 -06:00
Sebastiaan Dammann 686bb056a4 Creality v4.5.3 (CR-6 SE, CR-6 MAX) (#20468) 2020-12-15 00:33:01 -06:00
JoAnn Manges 1be16e3d8c Fix RESTORE_LEVELING_AFTER_G28 (#20471) 2020-12-15 00:16:50 -06:00
Scott Lahteine 69999f962a Please install the EditorConfig plugin 2020-12-14 21:27:12 -06:00
Scott Lahteine 5a6fc3e5b7 Auto-check followup 2020-12-14 21:08:09 -06:00
kisslorand 7be57ff9f0 Fix M1001 auto-check logic (#20456) 2020-12-14 21:04:45 -06:00
Jason Smith 81a0206df8 Trust that script -x flags will always be set (#20453) 2020-12-14 21:02:46 -06:00
Scott Lahteine 80bde7b6b5 Always enable leveling after G28 2020-12-14 20:34:22 -06:00
Scott Lahteine e349a44c60 Preheat before leveling 2020-12-14 20:34:22 -06:00
Scott Lahteine fbefe55102 Fix formatting 2020-12-14 20:34:22 -06:00
thinkyhead dee475cee1 [cron] Bump distribution date (2020-12-15) 2020-12-15 00:13:55 +00:00
Chris Pepper 9fd358f10c LPC176x framework update (#20469) 2020-12-14 22:36:25 +00:00
thinkyhead 8c05053951 [cron] Bump distribution date (2020-12-14) 2020-12-14 00:14:07 +00:00
Scott Lahteine b0392be4bf SHORT_MANUAL_Z_MOVE => FINE_MANUAL_MOVE 2020-12-13 01:54:31 -06:00
Scott Lahteine c824086825 Adjust planner debugging 2020-12-13 01:54:31 -06:00
FanDjango 1a9644cef9 Probe Offset Wizard followupBack to PROBE_PT_RAISE/separate STOW, make "PROBING" msg appear (#20439)
* Go back to always use PROBE_PT_RAISE with a discrete stow. This ensures a raise above the bed, while stowing prior to exiting the wizard.
* Fix issue preventing text while moving to X/Y position
Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2020-12-12 17:18:33 -08:00
thinkyhead 8723440d1d [cron] Bump distribution date (2020-12-13) 2020-12-13 00:14:25 +00:00
qwewer0 ea9b4dc82c Improve ASSISTED_TRAMMING_WIZARD probe stowing (#20437)
* When BLTOUCH_HS_MODE enabled, stow pin before user interaction
* For all probes, ensure probe stows at end of wizard
2020-12-12 11:03:28 -08:00
ellensp 2eab920935 Add HAS_PIN_27_BOARD for CREALITY_V4 (#20446)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2020-12-12 10:59:17 -08:00
leodoener 087a6fea13 Fix SDCARD_SORT_ALPHA on Ender 3 V2 (#20443) 2020-12-11 23:20:24 -03:00
Scott Lahteine 9c9113e225 Better animated boot screen 2020-12-11 18:24:27 -06:00
thinkyhead 8f008ac75d [cron] Bump distribution date (2020-12-12) 2020-12-12 00:13:47 +00:00
Jason Smith 8a4f8e72df SENSORLESS_PROBING sanity check followup (#20438) 2020-12-11 01:39:51 -08:00
FanDjango 43222d5879 Probe offset wizard fixes (#20414)
* STOW probe, reverting incorrect earlier change from #20344
* Adjust soft endstop disables, to ensure travel below bed functions properly

Co-authored-by: FanDjango <FanDjango@users.noreply.github.com>
2020-12-11 00:06:57 -08:00
elasticdotventures 04a3bd0d34 Z_SENSORLESS sanity checks (#20421)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-10 23:33:29 -08:00
thinkyhead af70e80816 [cron] Bump distribution date (2020-12-11) 2020-12-11 00:13:48 +00:00
ellensp 22de37ad50 Fix UBL Debug Messages (#20423)
Co-authored-by: ellensp <ellensp@hotmsil.com>
2020-12-10 15:30:58 -03:00
Keith Bennett 6cf4b888e1 Clarify "not Interrupt-capable" error message (#20419) 2020-12-10 15:27:02 -03:00
thinkyhead 6557751199 [cron] Bump distribution date (2020-12-10) 2020-12-10 00:13:42 +00:00
Victor Oliveira 6e4925e6b6 MKS Robin Pins fixes for STM32 and STM32F1 (#20404)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-09 18:43:49 -03:00
InsanityAutomation 3404cb1fc4 Move ExtUI ABL mesh edit, limit to bilinear (#20381)
* Move ExtUI call

Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Sebastiaan Dammann <sebastiaandammann@outlook.com>
2020-12-09 09:07:26 -08:00
Marcio T f3bddc4e4e Fixes and additions to FTDI EVE Touch UI (#20393)
- Fixed name conflict with "SUBSCRIPT_TWO"
- Fixed rendering bugs in "Leveling Menu"
- Only show "Bed Mesh Screen" when UBL is enabled
- Removed CocoaPress code from generic "Main Menu"
- Removed CocoaPress code from LulzBot Bio "Status" screen
- Moved generic "Move Axis" functionality into a base class
- Added CocoaPress custom screens:
   - Status Screen
   - Unload Cartridge
   - Load Chocolate
   - Main Menu
   - Advanced Settings
   - XYZ Move (based on "Move Axis" base class)
   - Extrusion Move (based on "Move Axis" base class)
- CocoaPress tweaks to "Temperature" screen
- Fix FTDI EVE Touch UI compilation errors when not using leveling.
2020-12-09 05:09:31 -06:00
Mike La Spina 3e68e4b418 Fix Spindle/Laser Control menu (#20347) 2020-12-09 04:37:26 -06:00
swissnorp edb2a83e71 Allow positive Z nozzle to probe offset (#20344)
* Allow a positive value for z offset from nozzle to probe without sanity checks
* Simplify menu_probe_offset.cpp (HOMING_Z_WITH_PROBE)
* Add some more explanation to Configuration Files
* Raise after probe_at_point as if homed

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-09 01:06:50 -08:00
Keith Bennett 2a4f8acd62 Clarify Delta & SCARA config location (#20403) 2020-12-08 22:12:42 -08:00
Scott Lahteine 885b0d2ec5 Style, spacing, typo cleanup for recent changes 2020-12-08 20:18:29 -06:00
thinkyhead 66834cf324 [cron] Bump distribution date (2020-12-09) 2020-12-09 00:13:32 +00:00
Victor Oliveira 9ead6a30f2 SPI TFT for STM32F4 boards (#20384)
* fix pinsDebug for F1 boards

* add MKS Robin PRO V2 board - development board

* tft spi working with F4 boards

* pins formating

* sanity check for TFT on supported cores in STM32

* Fix tabs/spaces in pins file

Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-07 21:26:39 -08:00
thinkyhead af20db4512 [cron] Bump distribution date (2020-12-08) 2020-12-08 00:13:33 +00:00
ellensp fee375f31f Allow BTT EXP-MOT be used with Displays that needs only EXP 1 (#20396)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2020-12-07 17:57:00 -03:00
ellensp 182fdd95c3 Shorten Filament Load/Unload Strings to Fit on Graphical Displays (#20369)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
2020-12-07 17:53:53 -03:00
Scott Lahteine 7f20184ebc Fix auto#.g file handling, add NO_SD_AUTOSTART (#20071) 2020-12-07 05:53:15 -06:00
Scott Lahteine b04914fb72 More LPC P-string macros 2020-12-07 05:06:24 -06:00
Scott Lahteine 2ecb4fad72 Watch idle() depth over 5 2020-12-07 04:38:14 -06:00
Scott Lahteine ee4c2b36b8 Fix fileExists, use openFailed 2020-12-07 04:38:14 -06:00
thinkyhead 00143f77d0 [cron] Bump distribution date (2020-12-07) 2020-12-07 00:13:45 +00:00
Victor Oliveira 1a04c8c7bb Avoid invalid memory optimizations (#20389)
When building for AVR, merge-all-constants can incorrectly combine constants stored in flash with constants stored in RAM. These have different access requirements, leading to undefined behavior during execution.
Co-authored-by: ellensp <ellensp@hotmail.com>
2020-12-06 12:36:36 -08:00
InsanityAutomation 3730ffb097 Bump to head 2020-12-06 15:20:29 -05:00
Scott Lahteine 6f4589b375 G28 followup 2020-12-05 23:06:15 -06:00
Scott Lahteine 139a33c9fc G28 tweaks 2020-12-05 20:14:44 -06:00
Scott Lahteine a3f6e48eb6 Fix STM32F1 SERIAL_GET_TX_BUFFER_FREE 2020-12-05 20:05:39 -06:00
Scott Lahteine a8dffdebd4 Move G29 3-point startup earlier 2020-12-05 20:05:39 -06:00
Scott Lahteine 889695b6ba ExtUI homing / leveling additions 2020-12-05 18:29:03 -06:00
Scott Lahteine bf4c08bce1 Use 'nearby' for 'near' 2020-12-05 18:27:18 -06:00
Scott Lahteine 9e68c9a214 Creality 4.5.2 format and fix 2020-12-05 18:27:18 -06:00
LinFor 7a6b742d12 Fix FYSETC S6 I2C EEPROM size (#20340)
Both V1.2 and V2.0 boards have a 24LC16, which is a 2kB EEPROM.

Co-authored-by: PingWin <kirill@shashlov.ru>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-05 16:19:17 -08:00
thinkyhead 2dbd2063f8 [cron] Bump distribution date (2020-12-06) 2020-12-06 00:13:51 +00:00
InsanityAutomation e8ed880e62 Add Creality 4.5.2 board (#20378)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-05 13:23:58 -08:00
Jason Smith 2c8f566231 Suspend Servos for STM32+NeoPixel (#19963) 2020-12-05 00:02:58 -06:00
Jason Smith 21ee7b1c86 Fix TMC_HOME_PHASE divide by zero (#20368) 2020-12-04 23:58:39 -06:00
Scott Lahteine 5fdd949115 Improved Longer3D LKx Pro board (#20372)
Co-authored-by: mrv96 <marione96@live.it>
2020-12-04 23:56:20 -06:00
Tanguy Pruvot 0a03ef4b6f Don’t use near keyword as variable name (#20374) 2020-12-04 20:29:55 -08:00
thinkyhead 71db4f0426 [cron] Bump distribution date (2020-12-05) 2020-12-05 00:13:14 +00:00
Belin Fieldson 465840e1fb Loosen E on pause for fila-manipulation (#20346)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-12-04 04:49:30 -06:00
Jason Smith d17db47775 Fix MESH_BED_LEVELING w/o SEGMENT_LEVELED_MOVES (#20363) 2020-12-03 19:33:46 -08:00
thinkyhead 517bcd2b5d [cron] Bump distribution date (2020-12-04) 2020-12-04 00:12:52 +00:00
Victor Oliveira 3eddbc7286 Require minimum PlatformIO version (#20361)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-12-03 09:23:48 -08:00
Scott Lahteine a1f319d5b6 Consolidate common pin includes 2020-12-03 05:53:07 -06:00
ellensp 31352f8a8a Fix up start, monitor baud (#20326) 2020-12-03 04:44:33 -06:00
yysh12 2878876064 Fix circle arc condition (#20322) 2020-12-03 04:40:39 -06:00
thinkyhead 7bf04d1526 [cron] Bump distribution date (2020-12-03) 2020-12-03 00:12:40 +00:00
Jason Smith a4d6908d55 Permit SD EEPROM emulation on E3V2 (#20353) 2020-12-02 05:23:34 -06:00
Jason Smith a4618309ce Fix E3V2 DWIN Jerk Menu (#20352)
* Fix E3V2 DWIN build without CLASSIC_JERK
* Fix jerk edits applying to wrong index
2020-12-02 01:31:06 -08:00
Luu Lac 257dc6d173 Help hosts when password-locked (#20348) 2020-12-01 23:52:09 -06:00
Mathias Rasmussen 753cf994b6 Update to STM32 v10, optimize build (#20325) 2020-12-01 23:51:04 -06:00
Scott Lahteine c353eab898 Level Bed Corners is a sub-menu 2020-12-01 21:54:58 -06:00
thinkyhead 7226f6834e [cron] Bump distribution date (2020-12-02) 2020-12-02 00:12:48 +00:00
Scott Lahteine 2e010909ac Tweak to EEPROM safe delay 2020-12-01 16:14:37 -06:00
Jason Smith 0d080cea83 Fix E3V2 Control Menu when returning from Info (#20338) 2020-12-01 00:29:21 -08:00
Jason Smith 6f4381df53 Prevent Watchdog reset writing Creality 4.x EEPROM (#20328) 2020-11-30 22:25:44 -08:00
thinkyhead db8fb9a03a [cron] Bump distribution date (2020-12-01) 2020-12-01 00:13:08 +00:00
Jason Smith 87ede6fa1b Increase E3V2 DWIN steps/mm range to 999.9 (#20324) 2020-11-30 04:44:34 -08:00
Scott Lahteine fd35d1b8a6 General cleanup 2020-11-29 20:50:02 -06:00
Scott Lahteine 8fd8772a6f Adjust axis homed / trusted methods (#20323) 2020-11-29 19:06:40 -06:00
thinkyhead 0f9ac3026d [cron] Bump distribution date (2020-11-30) 2020-11-30 00:12:42 +00:00
Jason Smith df0a0c9490 Leveling Fade Height default setting (#20316) 2020-11-29 15:00:08 -06:00
Jason Smith f2b9be6e70 Fix STM32F1 'freeMemory()' warnings (#20319) 2020-11-29 14:57:05 -06:00
Alexander D. Kanevskiy 39abda8743 SKR E3 Turbo Controller Fan (#20320) 2020-11-29 14:55:18 -06:00
yysh12 dcb101224f Arc Direction followup for circles (#20314) 2020-11-29 14:50:54 -06:00
thinkyhead e7e1dcf190 [cron] Bump distribution date (2020-11-29) 2020-11-29 00:12:56 +00:00
thinkyhead d466ac12ea [cron] Bump distribution date (2020-11-28) 2020-11-28 00:12:13 +00:00
Thomas Niccolo Reyes 1c7f53bbb2 Fix M73 LCD code typo (#20300) 2020-11-27 15:26:19 -06:00
Sergey1560 0acd751e2d Group related homing options (#20283)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-27 00:00:25 -06:00
yysh12 bab660ca7d Fix G2/G3 arcs > 180° (#20292) 2020-11-26 23:29:07 -06:00
ellensp 109f68f7df Fix BTT GTR 1.0 endstop/DIAG pins (#20296) 2020-11-26 22:50:21 -06:00
BsCmOD 819ec462b8 FIX TMC menu message (#20294) 2020-11-26 21:25:18 -06:00
Scott Lahteine b6a32500c4 M808 Repeat Markers (#20084) 2020-11-26 21:18:40 -06:00
thinkyhead c61a311c0d [cron] Bump distribution date (2020-11-27) 2020-11-27 00:12:12 +00:00
Štěpán Dalecký 5cae4e9f55 [WIP] Fix Probe::offset_xy (#20290)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-11-26 13:21:48 -08:00
wmariz 58ac815822 Level Corners with Probe option (#20241) 2020-11-26 07:58:19 -06:00
Scott Lahteine 3ba374a29e Optimize emergency parser check 2020-11-26 03:56:21 -06:00
Scott Lahteine 7ce675e604 No auto debug for EEPROM_CHITCHAT 2020-11-26 03:56:21 -06:00
Scott Lahteine aa2ced96e0 Finish HAL/STM32 cpp wrappers 2020-11-26 03:47:15 -06:00
mks-viva 8c59212ca4 MKS Robin E3 / E3D v1.1 (#20216) 2020-11-26 02:36:29 -06:00
Scott Lahteine 4f4843a845 Tweak some pin errors 2020-11-26 01:08:21 -06:00
Jason Smith 3a396a25dc Retire HAL for STM32F4 / F7 (#20153) 2020-11-26 00:37:18 -06:00
Scott Lahteine 18853defdd Reduce warnings, extern "C" cleanup (#20279) 2020-11-25 21:40:56 -06:00
swissnorp 649965ae32 Probe Offset Wizard improvements (#20239) 2020-11-25 21:38:00 -06:00
thinkyhead afe5027a39 [cron] Bump distribution date (2020-11-26) 2020-11-26 00:11:33 +00:00
Victor Oliveira 04c4c6004e Fix COLOR_UI without TOUCH_SCREEN_CALIBRATION (#20269) 2020-11-24 21:39:49 -08:00
Victor Oliveira 2693e35cae add missing header to use HAS_SD_HOST_DRIVE (#20270) 2020-11-24 20:08:35 -08:00
Scott Lahteine e38abef720 Update TOUCH_UI_LULZBOT_BIO wrappers 2020-11-24 18:32:01 -06:00
thinkyhead 0eae28a663 [cron] Bump distribution date (2020-11-25) 2020-11-25 00:11:42 +00:00
Scott Lahteine b28b2ca266 Cosmetic G29 ABL tweak 2020-11-24 17:53:39 -06:00
Scott Lahteine 296a2ad7e4 Consistent Probe XY offset type 2020-11-24 17:38:26 -06:00
Jason Smith e9431b5445 No Z_MULTI_ENDSTOPS when HOMING_Z_WITH_PROBE (#20254) 2020-11-24 16:27:59 -06:00
pseudex 4258ff1a68 Allow cold Filament Load/Unload with M302 P1 (#20262)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-24 16:20:06 -06:00
ellensp ef12425bef Set "lcd_move_e" index to fix the label (#20263) 2020-11-24 16:14:22 -06:00
rdhoggattjr 62680bb356 LCD position in current units (#20145) 2020-11-23 23:02:54 -06:00
thinkyhead 94fea59e9d [cron] Bump distribution date (2020-11-24) 2020-11-24 00:11:40 +00:00
Jason Smith a4e1132048 Fix Z4 in ENABLE/DISABLE_AXIS_Z (#20256)
This was accidentally broken in PR #20218
2020-11-23 03:07:43 -08:00
Jason Smith 58eaad703a Fix dummy thermistors for Bed, Chamber, Probe (#20247) 2020-11-22 18:47:52 -06:00
Scott Lahteine 6f272e13c5 Allow Status Message without LCD (#20246) 2020-11-22 18:44:17 -06:00
Jason Smith 9dedd121bf Fix UBL manual mesh adjust behavior (#20248) 2020-11-22 18:20:33 -06:00
thinkyhead 315cb6d001 [cron] Bump distribution date (2020-11-23) 2020-11-23 00:11:32 +00:00
Scott Lahteine 48b0abc3a8 Hide docker droppings 2020-11-21 23:00:38 -06:00
Scott Lahteine d8a3b9eb3a Move core conditionals earlier 2020-11-21 22:33:27 -06:00
Scott Lahteine 60e8c7afb2 Put "$3" on all tests 2020-11-21 22:33:27 -06:00
qwewer0 e19c016c74 Clear menu history for browse media on insert (#20236)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-21 18:21:43 -06:00
thinkyhead 89b56ca5c2 [cron] Bump distribution date (2020-11-22) 2020-11-22 00:12:03 +00:00
Kurt Haenen ca83e1a26f Proper pullup/pulldown configurability (#20242)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-21 17:56:56 -06:00
Victor Oliveira 7a04df47f2 Fix Load Filament wait (#20243) 2020-11-21 17:16:03 -06:00
Orel 8db72d027e Skip unnecessary (costly) SW Stepper Enable (#20218)
Co-authored-by: Jason Smith <jason.inet@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-21 16:27:06 -06:00
Gurmeet Athwal 6851909f90 BTN_ENC_EN for many boards (#19890)
Enables CHECK_ENCODER_ACTIVE_SIGNAL for many more boards.

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-11-20 23:47:04 -08:00
Scott Lahteine 7e902b7e29 Power-Loss cleanup 2020-11-20 21:30:45 -06:00
Simone Primarosa f8e83f79c5 Superscript substitution (#20219)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-20 20:36:19 -06:00
Simone Primarosa 615bf2a6f1 Fix bad SET_FAST_PWM_FREQ calls (#20227) 2020-11-20 19:53:04 -06:00
Kurt Haenen 474be6058b Fix backward Filament (Presence) Sensor pulls (#20228)
Co-authored-by: Kurt Haenen <Kurt.Haenen@quintux.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-20 19:48:53 -06:00
thinkyhead fb3f6a46c1 [cron] Bump distribution date (2020-11-21) 2020-11-21 00:11:06 +00:00
Scott Lahteine b3bd47b4b2 Printrboard labels 2020-11-20 17:41:20 -06:00
Victor Oliveira 28e315cd69 SINGLE_TOUCH_NAVIGATION Follow Up (#20213) 2020-11-20 10:46:18 -03:00
Victor Oliveira 0e3d86579b Missing header to use suicide() on LVGL UI (#20214) 2020-11-19 23:09:33 -03:00
Ajtak a26a21d19a Longer LK Pro / Alfawise PRO board (#20185) 2020-11-19 18:25:27 -06:00
thinkyhead d8557547dd [cron] Bump distribution date (2020-11-20) 2020-11-20 00:11:02 +00:00
Orel fe88fb7ed9 Fix DAC setDrvPct (#20205) 2020-11-19 18:08:21 -06:00
Vitaliy 19d0c985be Windows LPC Upload for non-admins (#20208)
Co-authored-by: Victor Mateus Oliveira <rhapsodyv@gmail.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-11-19 17:49:12 -06:00
Scott Lahteine 4a0fc4d699 Fix Z label 2020-11-19 17:41:24 -06:00
Scott Lahteine 931df1231a MKS WiFi strings 2020-11-19 17:38:36 -06:00
Scott Lahteine b51c6d4737 More MKS WiFi 2020-11-19 17:29:01 -06:00
Scott Lahteine 3893114c86 MKS WiFi preliminary changes 2020-11-19 15:56:04 -06:00
Till fcc29fc189 Add Thermistor 20-21 notes (#19246) 2020-11-19 14:07:47 -06:00
Victor Oliveira d7aea9608e Reduce RAM usage for TFT Color UI on SGen-L V2 (#20209) 2020-11-19 16:47:49 -03:00
Maciej Rutkowski 4c5a58a5db Fix GTR NeoPixel pin with FYSETC Mini12864 (#20203) 2020-11-19 02:49:44 -08:00
ellensp c059ea0ea0 Remaining Time followup (#20199) 2020-11-19 00:09:51 -06:00
Victor Oliveira 6a8ac21f80 Fix Filament Change menu item labels (#20201) 2020-11-19 00:05:05 -06:00
Victor Oliveira 08c5557026 Abort print on media removal (#20200) 2020-11-18 23:32:33 -06:00
JoAnn Manges cb2ec628df Use RTD for MAX31865 reading (#20188) 2020-11-18 23:12:03 -06:00
bosd acdfbbeb86 Fix broken #include (#20193) 2020-11-18 19:32:52 -06:00
thinkyhead 8b72cbebde [cron] Bump distribution date (2020-11-19) 2020-11-19 00:10:51 +00:00
Giuliano Zaro 41529b6598 SMUFF (MMU2 clone) support (#19912) 2020-11-18 01:27:21 -06:00
Scott Lahteine 11b811820f USB Media Host followup
Restore HAS_SHARED_MEDIA
2020-11-18 00:13:28 -06:00
Jason Smith 39305aa47c Use MANUAL_PROBE_START_Z for UBL manual probing (#20160) 2020-11-17 23:59:48 -06:00
Philippe Cayrol caeac3851a Better edit range for Linear Advance K (#20155) 2020-11-17 23:56:51 -06:00
Thomas Niccolo Reyes 04a3ece3e0 Remaining Time for Prusa-style LCD layout (#20148)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-17 23:49:56 -06:00
Victor Oliveira f1cdd02d4c Improve USB Media Host conditions (#20176)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-17 23:48:14 -06:00
Foxies c1920f31ca FLSun Hispeedv1 Board update (#19959)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-17 22:32:34 -06:00
Thomas Niccolo Reyes ecd8227de0 Open File Browser on Media Insert (option) (#20151)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-17 22:30:32 -06:00
wmariz 5768ee0f9e Probe Wizard XY position (#20167) 2020-11-17 21:54:21 -06:00
Jason Smith 50a77ef7f0 Fix NAN mesh entries with ABL_BILINEAR_SUBDIVISION (#20143) 2020-11-17 19:11:13 -08:00
Victor Oliveira 75924edcf8 COLOR_UI without TOUCH_SCREEN 👍🏻 (#20178) 2020-11-17 20:07:34 -06:00
Costas Basdekis 1cceae89cd Local testing via Makefile & Docker (#19981) 2020-11-17 20:04:28 -06:00
Victor Oliveira 26ac992242 Prevent #div0 error (#20183) 2020-11-17 18:44:53 -06:00
thinkyhead 8c4a06d855 [cron] Bump distribution date (2020-11-18) 2020-11-18 00:10:44 +00:00
Victor Oliveira 51a1561ae9 Reduce RAM usage for TFT Color UI on SGen-L (#20179) 2020-11-17 12:32:30 -08:00
Roman Moravčík a15ab85557 Update Slovak language (#20181) 2020-11-17 12:30:06 -08:00
石立枫 9b2e810bdf Add FLY_CDY board (#19979)
Co-authored-by: FLYmaker <FLYmaker@users.noreply.github.com>
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
Co-authored-by: Jason Smith <jason.inet@gmail.com>
2020-11-17 03:35:02 -08:00
ellensp b57ca6e4ac add ethernet to src filter (#20136)
Co-authored-by: ellensp <ellensp@ellensp-HP-ProBook-6470b.fritz.box>
2020-11-17 00:45:43 -08:00
Victor Oliveira 7930fd9ce8 Use intptr types (simulator) (#20142) 2020-11-17 00:45:01 -08:00
Jason Smith 9767e59e6c Allow overriding servo pin for MKS Robin Mini (#20158) 2020-11-17 00:40:37 -08:00
Keith Bennett c12e6933f5 Multi-Hotend Preheat Fixes (#20165)
* Return to Status Screen on Multi-Hotend Preheat All

Co-authored-by: Victor Oliveira <81722+rhapsodv@users.noreply.github.com>
2020-11-17 00:37:37 -08:00
thinkyhead 59d2871b59 [cron] Bump distribution date (2020-11-17) 2020-11-17 00:10:50 +00:00
Jason Smith 4dd2496530 Allow dummy thermistors without pin definitions (#20159) 2020-11-16 14:56:59 -06:00
FanDjango 110e0d782f Guards for large BLOCK_BUFFER_SIZE (>=128) (#20130)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-16 14:56:05 -06:00
InsanityAutomation e955dce3dc Update IDEX menus, add post-M605 event G-code (#20133)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-15 23:56:05 -06:00
thinkyhead 101d57d093 [cron] Bump distribution date (2020-11-16) 2020-11-16 00:11:06 +00:00
Victor Oliveira ea371618da Add Touch Calibration screen (#20049) 2020-11-15 16:39:58 -06:00
Scott Lahteine cab83ba840 Fix some LCD/serial strings 2020-11-14 18:28:39 -06:00
thinkyhead 8d20a83e09 [cron] Bump distribution date (2020-11-15) 2020-11-15 00:12:28 +00:00
Scott Lahteine c5e411f492 Add parser.is_command(letter, code) 2020-11-14 18:09:17 -06:00
Minims 189306d24e BTT Motor Expansion for SKR Pro (#20123) 2020-11-13 20:13:36 -06:00
Keith Bennett f9e54331ba UTF Filenames followup (#20135) 2020-11-13 20:10:50 -06:00
phcay a97a1ae218 Fix extraneous Linear Advance DIR change (#20131) 2020-11-13 20:06:37 -06:00
Luu Lac a6ff61d52e Fix "autotune" LCD message (#20127) 2020-11-13 20:06:37 -06:00
Scott Lahteine c710b6e06c Optimize M360 2020-11-13 20:06:37 -06:00
Scott Lahteine 1d43e81be0 Fix compile warnings, serial alias 2020-11-13 18:28:15 -06:00
Scott Lahteine ddc997c81f .gitignore for native / simulation 2020-11-13 18:28:15 -06:00
Scott Lahteine 988fc202e2 LCD_FIRST_TOOL status bitmaps 2020-11-13 18:23:18 -06:00
thinkyhead 6aea00289c [cron] Bump distribution date (2020-11-14) 2020-11-14 00:10:15 +00:00
Gonçalo Pereira fbc2d2d726 Typo in MMU2 serial protocol description (#19949) 2020-11-13 01:23:05 -06:00
InsanityAutomation 1b0a5abd73 G34 Z stepper locking (#20091)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-12 22:54:18 -06:00
LinFor 99c377b4e4 Fix UTF filename scroll (#20121)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-12 22:49:19 -06:00
Jason Smith 288eb06708 UTF longname followup (#20115) 2020-11-12 22:26:49 -06:00
thinkyhead eb3d6a5333 [cron] Bump distribution date (2020-11-13) 2020-11-13 00:10:25 +00:00
thinkyhead 37b56e09a3 [cron] Bump distribution date (2020-11-12) 2020-11-12 00:10:01 +00:00
Scott Lahteine 0cccc60409 Terse sanity messages 2020-11-11 16:58:54 -06:00
Scott Lahteine 2282801172 Add HOME_Z_FIRST option (#20113) 2020-11-11 16:58:34 -06:00
LinFor f4e9f3654e Fix MAX6675 SPI init, conflicts (#20086) 2020-11-11 16:27:45 -06:00
JoAnn Manges 40d442fde2 Fix MAX31865 on SPI (PT100/1000) support (#20074) 2020-11-11 15:52:35 -06:00
Hebezo 6ccb4b93b1 Option to ignore SD at startup (#20099)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-11 15:16:19 -06:00
Scott Lahteine ddc23c6224 M32 followup 2020-11-11 14:39:39 -06:00
ellensp 7216b8f804 Fix compile with PLR, no fan (#20096) 2020-11-11 14:35:13 -06:00
Davidsg33k bd6e60f56d 400 Z steps-per-mm (#20104) 2020-11-11 14:30:36 -06:00
LinFor 5b9aeb2e5f Handle UTF in long filenames (#20087)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-11 14:14:39 -06:00
Costas Basdekis 0465e0ae3a Distinct runout states (#19965)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-11 00:39:23 -06:00
Costas Basdekis 3b68e44d9a Fix Linux GPIO logging (#20093)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-10 20:13:29 -06:00
ellensp d4ba94479b BTT driver expansion for SKR 1.3/1.4 (#20088)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-10 20:06:42 -06:00
Speaka 87ce545e15 Tramming Wizard wait position (#20063) 2020-11-10 19:41:21 -06:00
Victor Oliveira f8ee6f8b31 Fix UI compile issues (#20092) 2020-11-10 19:39:34 -06:00
thinkyhead f15fef90a9 [cron] Bump distribution date (2020-11-11) 2020-11-11 00:09:42 +00:00
Jason Smith 53e79224fc Fix Arduino DUE compilation (#20058) 2020-11-10 03:32:08 -06:00
qwewer0 2abb674c87 What if 8 was 9? (#20076) 2020-11-10 03:27:34 -06:00
qwewer0 60aadd2a02 Update issues/support link (#20077)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-10 03:26:45 -06:00
Gustavo Alvarez 6ce1eeb4ae Fix SKR E3 DIP pin CLCD_SPI_CS (#20078) 2020-11-10 03:22:08 -06:00
Tanguy Pruvot a70fdfaeba Fix 320x240 touch buttons Y (#20079) 2020-11-10 03:21:05 -06:00
Scott Lahteine f17394d677 Ability to disable M32 2020-11-10 02:21:12 -06:00
thinkyhead 12ba2ad77e [cron] Bump distribution date (2020-11-10) 2020-11-10 00:11:19 +00:00
Scott Lahteine 59eca253e1 Simplified temp sensor conditionals 2020-11-09 01:17:37 -06:00
Hebezo 4ace02f4c2 Add POWER_OFF_DELAY option (#19987)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-08 18:37:41 -06:00
qwewer0 c753d2b7f4 Use extra G35 BLTouch HS Mode clearance in Tramming Wizard (#20057)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-08 18:31:14 -06:00
thinkyhead d5fdc75c82 [cron] Bump distribution date (2020-11-09) 2020-11-09 00:11:21 +00:00
Alexander D. Kanevskiy 3c318d0dc7 POWER_LOSS_PIN for BTT SKR mini MZ / E3 2.0 (#20069) 2020-11-08 02:20:07 -06:00
Jason Smith 5013fdaf79 Fix tool-change servo index for E2 and up (#20060) 2020-11-08 02:15:30 -06:00
Scott Lahteine 06bf3ccfb7 Add alternative TERN macros 2020-11-07 22:19:25 -06:00
Scott Lahteine dcb0f5dc3b Temperature 'autostart' => 'auto_job' 2020-11-07 21:21:19 -06:00
Scott Lahteine 18fb4b1ce1 MSG_AUTOSTART => MSG_RUN_AUTO_FILES 2020-11-07 21:21:19 -06:00
thinkyhead 45116128e8 [cron] Bump distribution date (2020-11-08) 2020-11-08 00:11:23 +00:00
Albert van Osch 7beebcd315 Zonestar Z8 XM2 support (#19991) 2020-11-07 16:59:19 -06:00
Scott Lahteine 883347bc11 Apply some pins formatting 2020-11-07 16:54:20 -06:00
Scott Lahteine b5ef699523 TFT cleanup 2020-11-07 16:21:52 -06:00
LinFor 2da25d67e1 Fix Endstop Interrupts with SPI endstops, sanity checks (#20051)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-07 03:37:45 -06:00
Speaka 6954772ece Tramming Wizard submenu option (#20000)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-07 03:20:27 -06:00
Victor Oliveira 2fdeceda58 Color UI single touch menu navigation (#20053) 2020-11-07 03:00:29 -06:00
Darren Horrocks 53cc8a0d6e Optimized (non-optiboot) Melzi env (#20021)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-07 02:43:51 -06:00
Darren Horrocks 10fd9ed896 Anet 1.0 alternative graphical LCD wiring (#20022) 2020-11-07 02:42:14 -06:00
Scott Lahteine bb7dbceb5c Add 'mfconfig' script used to manage configs 2020-11-07 02:39:02 -06:00
Jason Smith a439892d7a Sanity-check illegal native USB (#20047)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-07 00:48:17 -06:00
Jason Smith bd872d5dcf STM32F1 cleanup, incl. SoftwareSerial removal (#20046) 2020-11-06 23:51:52 -06:00
Jason Smith bdfedf249a Fix FYSETC S6 timer conflict (#20044) 2020-11-06 23:49:53 -06:00
George Fu 4785b04aa1 FYSETC E4 board support (#20032) 2020-11-06 23:48:52 -06:00
Scott Lahteine 8c052e43f1 Update some file headers 2020-11-06 23:46:56 -06:00
Victor Oliveira 85d094bbb4 Standardize Marlin SPI (part 1) (#19989) 2020-11-06 21:07:15 -06:00
Scott Lahteine 97d7af7a23 Use nullptr 2020-11-06 20:17:05 -06:00
Mauro 0a64f197d9 Fix E4d@box pins, stepper i2s (#20055) 2020-11-06 19:28:41 -06:00
Scott Lahteine af75e24c2e Clean up corrected urls 2020-11-06 19:11:29 -06:00
thinkyhead 78e10d346a [cron] Bump distribution date (2020-11-07) 2020-11-07 00:10:42 +00:00
Marc Jovaní González c574bcce88 Add Spanish translations (#20020) 2020-11-05 18:16:08 -06:00
Jason Smith ce90447531 Fix 0 extruders & bed compile (#20030) 2020-11-05 18:15:29 -06:00
Sergey1560 f924344cc5 Don't close diveDir in fileExists (#20035) 2020-11-05 18:13:21 -06:00
thinkyhead 323b3a63d6 [cron] Bump distribution date (2020-11-06) 2020-11-06 00:10:33 +00:00
Jason Smith 077b9201ef Fix BTT002 PeripheralPins PWM assignments (#20036) 2020-11-05 18:10:18 -06:00
Scott Lahteine 1f6612dfc4 Comment, spacing cleanup 2020-11-05 17:16:47 -06:00
Josh Schroeder c43ca39ec2 Wiring warning for ANET_FULL_GRAPHICS_LCD on SKR 1.4 (#20011) 2020-11-04 21:15:25 -06:00
thinkyhead 0407828027 [cron] Bump distribution date (2020-11-05) 2020-11-05 00:10:28 +00:00
Victor a1cce36c1e FAST_PWM for STM32 (#20025) 2020-11-04 15:15:19 -06:00
Scott Lahteine 4fe1adc383 HAL support for 8s watchdog 2020-11-04 15:08:40 -06:00
thinkyhead 2a78fe0f81 [cron] Bump distribution date (2020-11-04) 2020-11-04 00:09:52 +00:00
Keith Bennett ea5886c77d Add note about TMC2225/6 (#20002) 2020-11-03 17:27:09 -06:00
Victor Oliveira e9053654a7 Better Classic UI touch resolution (#20004) 2020-11-03 17:25:33 -06:00
Victor Oliveira 0be276482e Show un-mounted media slot (#20005) 2020-11-03 17:21:15 -06:00
Scott Lahteine 7e55cbf798 DWIN cleanup, preserve Z offset 2020-11-03 17:18:05 -06:00
Victor Oliveira f131f58124 Add a filament runout note (#19973)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-02 20:22:14 -06:00
thinkyhead 5a4a6285bb [cron] Bump distribution date (2020-11-03) 2020-11-03 00:09:58 +00:00
Victor Oliveira e7ebb66200 Fix STM32 HW Serial + EP compile (#19990) 2020-11-01 20:38:10 -06:00
Victor Oliveira 5deca5a18f Increase SPI Speed on LPC. Color and Classic UI for MKS SGEN L. (#19945) 2020-11-01 20:15:06 -06:00
thinkyhead 05033bb9d6 [cron] Bump distribution date (2020-11-02) 2020-11-02 00:09:42 +00:00
Alexander D. Kanevskiy 83097657d5 Y-center GLCD status logo, reorganize (#19954)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-01 17:44:46 -06:00
Victor Oliveira 12e8861a1c Reset calibration screen touch timer on click (#19951) 2020-11-01 04:42:53 -06:00
Scott Lahteine 22bf2b49c6 Clean up SPI and ST7920 defines (#19956) 2020-11-01 04:40:59 -06:00
Jason Smith 4a39c8cd53 Get STM32 clock rates from framework (#19978)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-11-01 02:39:30 -06:00
thinkyhead c05beb74a9 [cron] Bump distribution date (2020-11-01) 2020-11-01 00:10:34 +00:00
Alexander Semion cd89fa141b Add SPINDLE_SERVO option (#19971) 2020-10-31 17:42:05 -05:00
Victor Oliveira 76f4dd34e0 Put PIO "debug" build in the corner (#19975) 2020-10-31 17:14:10 -05:00
Nick da60dcbf2e Fix Chiron probe low point (#19962) 2020-10-31 16:54:31 -05:00
Scott Lahteine 368a581de9 Cutter power cleanup 2020-10-31 16:51:42 -05:00
Julien Lirochon 24c5259005 Fix SpindleLaser::cpwr_to_pct() maths (#19970) 2020-10-31 16:19:51 -05:00
Scott Lahteine 2110739138 Cutter enable inline at full power
Co-Authored-By: Luu Lac <45380455+shitcreek@users.noreply.github.com>
2020-10-31 16:17:48 -05:00
thinkyhead a4a487b0cc [cron] Bump distribution date (2020-10-31) 2020-10-31 00:09:17 +00:00
thinkyhead 6071a0835a Fix bilinear_line_to_destination definition
See #19431
2020-10-30 00:18:46 -05:00
Orel a272c019f9 Rename, adjust Dagoma F5 (#19947) 2020-10-29 20:02:29 -05:00
thinkyhead dde86a4179 [cron] Bump distribution date (2020-10-30) 2020-10-30 00:10:04 +00:00
Scott Lahteine f8d57370d0 gcode_D EEPROM size, cleanup
Fixes #19920

Co-Authored-By: Orel <37673727+0r31@users.noreply.github.com>
2020-10-29 17:34:17 -05:00
Victor de315c97b1 FAST_PWM for STM32F1 (#19952) 2020-10-29 17:17:04 -05:00
Giuliano Zaro 1247f73754 Update Italian language (#19953) 2020-10-29 16:27:01 -05:00
Victor Oliveira 50ba20fe1f PIO env for MKS Nano boards in STM32 (#19905) 2020-10-29 02:01:25 -05:00
Marcio Teixeira b6856dcb99 Improvement and fixes to FTDI touch UI
- Fixed incorrect LCD text string
- Fixed incorrect refresh of filament change screens
- Allow host control via touch UI
- Updates to leveling menu
- Modified ExtUI::isPrinting() to check if the job timer is running
- Added ExtUI method to check whether a host print is paused
2020-10-29 01:14:15 -05:00
Scott Lahteine 54ec6a0ce2 Tweak code formatting 2020-10-29 01:14:15 -05:00
Victor Oliveira dca7c5d1ad Color UI for MKS SGen-L V2 (#19919) 2020-10-29 00:52:50 -05:00
Scott Lahteine 7473241438 .bin and .woff are binary 2020-10-29 00:49:18 -05:00
Scott Lahteine be0c9ff705 Fix comments, spacing 2020-10-29 00:49:18 -05:00
Scott Lahteine 3f644b6275 Add a note about substitution chars 2020-10-29 00:21:41 -05:00
Victor Oliveira 838220e4b3 Keep SPI active on LPC176x (#19932) 2020-10-28 23:47:12 -05:00
Victor Oliveira 18a5000718 Permit spaces in dependencies g++ path (#19929) 2020-10-28 23:45:10 -05:00
thinkyhead 21674b2879 [cron] Bump distribution date (2020-10-29) 2020-10-29 00:16:59 +00:00
Alexander Fomichev 12dec2563a Generalize BTT SKR E3-DIP version (#19910) 2020-10-27 21:59:22 -05:00
ellensp 603e4d66ac AZTEEG X5 mini LED pins (#19909) 2020-10-27 21:57:32 -05:00
Gurmeet Athwal 90fcb82a3e Update ExtUI path in config comment (#19908) 2020-10-27 21:55:49 -05:00
Victor Oliveira 94a6844521 Color UI circular task queue (#19918) 2020-10-27 21:54:30 -05:00
Jason Smith bdb3f1ae2f Fix LCD menus + DAC (#19907) 2020-10-27 21:40:12 -05:00
Orel e3f1f7cd85 Fix DAC-related bugs (#19921)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-27 21:37:10 -05:00
Lucas Seiki Oshiro c0b4f4eb47 "Sound: ON/OFF" menu item (#19901)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-27 20:41:12 -05:00
thinkyhead 68ef3ac675 [cron] Bump distribution date (2020-10-28) 2020-10-28 00:16:40 +00:00
Speaka 2cae26ee35 Fix G35 PROGMEM strings (#19926) 2020-10-27 17:25:01 -05:00
Scott Lahteine 83aa3dbfa6 Archim test matching env 2020-10-27 17:21:54 -05:00
Scott Lahteine 82ac8a1e76 Fix Archim 1, add Archim 1&2 tests 2020-10-27 16:21:03 -05:00
Victor Oliveira c60696dbae Keep watchdog refreshed in LVGL init (#19900) 2020-10-27 15:16:35 -05:00
Victor Oliveira 75b0e3246a Fix some LVGL bugs (#19904) 2020-10-27 15:09:19 -05:00
Marcio Teixeira a74e82fbae Fix NO_WORKSPACE_OFFSETS compile 2020-10-27 15:05:30 -05:00
thinkyhead 8cf672104e [cron] Bump distribution date (2020-10-27) 2020-10-27 00:16:29 +00:00
thinkyhead 8bdde8d7a0 [cron] Bump distribution date (2020-10-26) 2020-10-26 00:16:36 +00:00
Scott Lahteine c4f3f67537 Followup for BTN_ENC_EN 2020-10-25 04:19:59 -05:00
Scott Lahteine ec23e37a4a Clean up comments, USB flash, NULLs 2020-10-25 04:10:00 -05:00
Scott Lahteine 00fbe50bbe Format Nucleo F767ZI pins 2020-10-25 04:07:15 -05:00
ellensp 2e48d6cf70 Fix PASSWORD compile w/out LCD (#19888) 2020-10-25 03:46:21 -05:00
René Pasold ec04517710 Support Fysetc Mini 12864 + GT2560 A(+) (#19878) 2020-10-25 03:43:21 -05:00
ellensp 8cc0369d97 Use LiquidCrystal_I2C@1.1.4 for RA_CONTROL_PANEL (#19875) 2020-10-24 19:46:27 -05:00
Jason Smith f7cdc05937 Update ZMIB_V2 env names (#19886) 2020-10-24 19:44:46 -05:00
Jason Smith ea0afd0b4d Ignore NativeEthernet on AT90USB1286 (#19885) 2020-10-24 19:43:42 -05:00
Gurmeet Athwal 62ba799d72 Add 'BTN_ENC_EN' for SKR V1.4 with DOGM (#19796) 2020-10-24 19:41:52 -05:00
thinkyhead b6508c4bd1 [cron] Bump distribution date (2020-10-25) 2020-10-25 00:16:51 +00:00
Victor Oliveira 853d01de68 More LVGL UI code reduction (#19879) 2020-10-24 17:28:31 -05:00
Nick 311b65b225 Fix Anycubic Chiron "Ready" detection (#19880)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-24 16:48:29 -05:00
Victor Oliveira b632b52b11 Update PIO dependencies script 2020-10-24 16:25:14 -05:00
Victor Oliveira 9630c2683c More MKS UI cleanup, optimization (#19869)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-23 23:37:45 -05:00
Keith Bennett f53d5a0872 Fix Chitu V5/V6 FAN2 pins (#19874) 2020-10-23 23:29:58 -05:00
Scott Lahteine 5917b5cf5c Fix warning in gcode_D 2020-10-23 19:25:32 -05:00
thinkyhead 2a6d48bf9e [cron] Bump distribution date (2020-10-24) 2020-10-24 00:16:09 +00:00
Scott Lahteine 0967c87a8f Pins post-process header (#19860) 2020-10-23 14:52:59 -05:00
Scott Lahteine 0ffee29a11 Case light brightness cleanup (#19856)
Co-authored-by: Chris <chris@chrisnovoa.com>
2020-10-22 22:31:48 -05:00
Scott Lahteine c75e98dc84 Shorten a method name 2020-10-22 20:54:11 -05:00
qwewer0 c7f7f2403d Fix Chopper Timing extra axis defaults (#19850) 2020-10-22 20:46:48 -05:00
Scott Lahteine 4533a197d5 Slim down MKS UI code (#19843) 2020-10-22 20:22:17 -05:00
thinkyhead 1ed853f5d6 [cron] Bump distribution date (2020-10-23) 2020-10-23 00:16:15 +00:00
George Fu f83bbce3a3 Fix TMC serial port for FYSETC AIO_II (#19842) 2020-10-22 06:29:29 -05:00
ManuelMcLure 4fccb92e07 Configure TMC interpolation per driver (#19828) 2020-10-22 06:27:33 -05:00
thinkyhead ec596315bd [cron] Bump distribution date (2020-10-22) 2020-10-22 00:16:17 +00:00
Foxies 9aee6674bb FLSUN Delta QQS-Pro pins (#19793) 2020-10-21 19:00:57 -05:00
Scott Lahteine 7d64de646a Add power-on/off G-code options (#19837)
Co-authored-by: Chris <chris@chrisnovoa.com>
2020-10-21 15:03:11 -05:00
Keith Bennett 1e4691f02a BigTreeTech SKR Mini MZ V1 (#19818) 2020-10-21 14:14:19 -05:00
Mauro 4fe4fb0585 Fresh Web GUI (based on bootstrap.js) (#19812) 2020-10-21 13:51:14 -05:00
TheMichalcinOfficial cf74248949 Support for Ramps-S v1.2 (#19815) 2020-10-21 13:44:55 -05:00
Scott Lahteine 072f996af7 General cleanup, mostly MKS UI (#19825) 2020-10-21 12:45:27 -05:00
Scott Lahteine 1f7c085527 ESP32: i2s_init requires I2S_STEPPER_STREAM 2020-10-20 22:36:31 -05:00
uwedamm a596969049 Fix G2/G3 P<circles> E and Z motion (#19797)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-20 20:26:07 -05:00
thinkyhead 11badea962 [cron] Bump distribution date (2020-10-21) 2020-10-21 00:16:12 +00:00
Tanguy Pruvot d04ec15849 Longer3D: LONGER_LK_TFT28 now set by config (#19817) 2020-10-20 15:06:06 -05:00
ellensp 69d55cabd4 Handle dependent Stepper Driver defaults later (#19820)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-20 15:01:46 -05:00
bilsef 9baa944460 Teensy 4.1 Ethernet support (#19801) 2020-10-20 14:35:29 -05:00
Scott Lahteine 92767f5513 Misc. cleanup, serial strings 2020-10-19 20:39:36 -05:00
thinkyhead b320b1a3c2 [cron] Bump distribution date (2020-10-20) 2020-10-19 20:39:36 -05:00
Scott Lahteine 35b9e9b4a5 Tweak a host prompt call 2020-10-19 20:39:36 -05:00
Scott Lahteine 21ce39aa9b Use PGM serial strings 2020-10-19 04:25:48 -05:00
ellensp ea80b2c8fc Ensure A4988 for unspecified driver type (#19798)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-19 03:16:02 -05:00
Scott Lahteine f501930728 Document M125 P 2020-10-19 00:38:11 -05:00
thinkyhead 8285953c1b [cron] Bump distribution date (2020-10-19) 2020-10-19 00:16:11 +00:00
InsanityAutomation 6375829448 Apply home offsets to probing, Z Safe Homing (#19423)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-18 15:53:12 -05:00
Scott Lahteine b0f0dc683d ABM Teensy 3.6 build 2020-10-18 00:20:25 -05:00
Jago Strong-Wright c2802d35bb Distinct Chopper Timing settings (#19781)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-10-17 22:35:19 -05:00
thinkyhead 2693d0eb27 [cron] Bump distribution date (2020-10-18) 2020-10-18 00:16:03 +00:00
Sten Uusvali 6fed11896b Fix M503 output for M907 motor current (#19777)
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-10-17 16:11:22 -05:00
Curtis Jenkins 178721a329 Fix Smoothieboard digipots i2c pin (#19784) 2020-10-17 15:05:50 -05:00
Scott Lahteine 263f29a96a MarlinUI followup 2020-10-16 20:48:59 -05:00
Scott Lahteine e99f967372 Starting fan followup 2020-10-16 20:38:30 -05:00
Victor Oliveira 313efa33ae Fix starting fan with bad material preset index (#19773) 2020-10-16 20:05:45 -05:00
Scott Lahteine eaf6777a66 Rename ultralcd => marlinui 2020-10-16 19:55:18 -05:00
Scott Lahteine 0f6fc48f85 touch_ms followup 2020-10-16 19:55:18 -05:00
thinkyhead 1e13a7161a [cron] Bump distribution date (2020-10-17) 2020-10-17 00:15:41 +00:00
arminth 3ed0b24831 Provide FYSETC F6 13 LCD pins for HD44780 (#19769) 2020-10-16 17:07:34 -05:00
Jason Smith 050ba0e0a0 LCD conditionals followup (#19766) 2020-10-16 17:04:10 -05:00
nb-rapidia 418b3e5ee2 Fix IDEX layer shift and DIR states (#19756)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:59:55 -05:00
Serhiy-K aa901ac4a2 Fix HAL/STM32 FastIO for analog pins (#19735) 2020-10-16 16:21:21 -05:00
Victor Oliveira 0b80841c38 Fix Color UI external_control, wait_for_release (#19771)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-16 16:19:48 -05:00
Victor Oliveira e370834c35 Handle M410 in the main task (#19752) 2020-10-16 16:11:00 -05:00
Jason Smith 9b9cd698a5 Fix SAMD Serial name macro (#19765) 2020-10-16 16:04:51 -05:00
mks-viva a4b89e67c6 Update MKS SGen-L V2 RGB LED pins (#19762) 2020-10-16 02:16:09 -05:00
Andreas Setterlind 814db9d7c9 Add ESP32 160MHz to README (#19748) 2020-10-16 02:06:05 -05:00
Jason Smith 7f83231385 Fix NUCLEO_F767ZI build, add tests (#19746) 2020-10-16 02:04:55 -05:00
Victor Oliveira 5247bb11f7 Sanity check unsupported EP (#19745) 2020-10-16 02:03:45 -05:00
thinkyhead 763544585a [cron] Bump distribution date (2020-10-16) 2020-10-16 00:15:39 +00:00
Victor Oliveira 8a885dc61b Fix TOUCH_SCREEN + TFT_LVGL_UI compile (#19754) 2020-10-15 18:38:27 -05:00
Victor Oliveira f74b5a6b9b Update Probe Offset Wizard for Color UI (#19742) 2020-10-15 14:15:11 -05:00
rlojek 72e3238c3f Fix ADVANCED_PAUSE && !PREVENT_COLD_EXTRUSION (#19740) 2020-10-15 13:44:57 -05:00
Peter Hall f86c6851fc Default LASER_POWER_INLINE to OFF (#19727) 2020-10-15 13:18:43 -05:00
Scott Lahteine f6ffbe548c TFT Presets, Generic options, Sanity checks (#19723) 2020-10-15 03:00:27 -05:00
thinkyhead 04c27573d6 [cron] Bump distribution date (2020-10-15) 2020-10-15 00:15:10 +00:00
Jason Smith 9a23fb5863 Fix SET_SOFT_ENDSTOP_LOOSE w/out soft endstops (#19734) 2020-10-14 13:50:03 -05:00
Jason Smith 90d364fc37 Revert at90usb1286 conditional (#19733) 2020-10-14 13:48:46 -05:00
Jason Smith 79d51581ba Fix digipot compilation (#19731) 2020-10-14 13:44:03 -05:00
Jason Smith 9507c49b18 Fix mega2560ext environment (#19730) 2020-10-14 13:43:36 -05:00
thinkyhead 87b07d6f2f [cron] Bump distribution date (2020-10-14) 2020-10-14 00:15:03 +00:00
Keith Bennett 64711e0d56 If needed, home before G34 (#19713) 2020-10-13 18:13:25 -05:00
Victor Oliveira bf33b2f862 Watchdog Refresh for LVGL Asset Load (#19724) 2020-10-13 18:12:34 -05:00
Jason Smith 54315252c7 Add NUCLEO-F767ZI dev board (#19373)
Co-authored-by: Lorenzo Delana <lorenzo.delana@gmail.com>
2020-10-13 18:03:09 -05:00
Scott Lahteine 733eb127e9 Simple bool in soft_endstops_t 2020-10-13 14:55:14 -05:00
Victor Oliveira 2132efa981 TFT followup fixes (#19710) 2020-10-13 11:58:50 -05:00
thinkyhead da79674f84 [cron] Bump distribution date (2020-10-13) 2020-10-13 00:15:19 +00:00
Scott Lahteine ae36ed3903 Move @section temperature 2020-10-12 18:02:25 -05:00
Victor Oliveira cc4db8e4a9 Fix UTF8 handling for Color UI (#19708) 2020-10-12 18:01:03 -05:00
Keith Bennett f9f8fd37de Sanity-check mutually-exclusive G34 features (#19706) 2020-10-12 16:52:56 -05:00
Earle F. Philhower, III 193c0a52d9 Add loose soft endstop state, apply to UBL fine-tune (#19681)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-12 16:48:04 -05:00
Jason Smith f5139f8bf4 Add D100 Watchdog Test (#19697) 2020-10-12 16:39:31 -05:00
Victor Oliveira c0920bbf6a TFT Refactoring (#19192)
* split tft folder in two: tft for color ui; tft_io for shared tft code

* after the files got moved, now the code was moved to the right place

* classic ui using TFT IO init lcd codes

* feature to compile tft_io when enabled

* compiling fix

* lvgl spi tft working with tft io init codes

* there is no need for separeted fsmc and spi class in lvgl anymore, as tft io handle everything

* remove debug

* base for TFT rotation and mirroring API, and ILI9488 support

* ST7796S rotate and mirror support

* ST7789V rotate and mirror support

* ST7735 rotate and mirror support

* ILI9341 rotate and mirror support

* ILI9328 rotate and mirror support

* R61505 rotate and mirror support

* MKS TFT definitions

* more configs for mks tfts

* update config

* naming typo

* to configure the user interface

* ANYCUBIC_TFT35

* tft configs

* support for SSD1963

* tft display types

* updated conditionals lcd; first board fully working with the new code - all 3 ui!

* compatiblity

* changed name

* move classic ui file name

* rename TURN -> ROTATE

* GRAPHICAL_TFT_ROTATE_180 deprecated

* first fsmc board fully working - chitu v5

* mks robin nano v1.2 + tft 35 ok!

* right pin name

* anycubic tft tested in a TRIGORILLA_PRO

* chitu v6

* nano 32 tft orientation

* mks tft43

* mks tft43 rotation

* fixed LONGER LK tft setup

* GRAPHICAL_TFT_UPSCALE defined by the display type

* better offsets defaults

* Update Configuration.h

* Update tft_fsmc.cpp

* Update Conditionals_LCD.h

* Tweak comments

* update nano tests

* Revert "update nano tests"

This reverts commit a071ebbfad30e28855a4a5695ec8a726542a1a65.

* default tft

* outdated comments

* to not break non-vscode builds

* upscale tft 35

* support tft 180 rotation for color ui

* Each TFT Driver is responsible for its default color mode.

* use auto detect in mks displays, because some of them could be shipped with diferent drivers

* extra s

* unused code

* wrong -1

* missing mirror options

* Smaller regex pattern

* Comment updates

* Clean up old defines

* Apply pins formatting

* GRAPHICAL_TFT_ROTATE_180 => TFT_ROTATE_180

* MKS_ROBIN_TFT_V1_1R

* merge fix

* correct resolution

* auto is default, dont need be there, and it will allow the user to configure it even for named displays

* to not use rotation with MKS_ROBIN_TFT_V1_1R

* i like () in macros

* avoid sleepy commits

* default for st7789 is rgb

* nano follow up

* to allow ili9328 rotation

* default is rgb

* boards merge follow up

* to match bootloader orientation

* HAS_TOUCH_XPT2046 is not hal specific anymore

* lets not forget LPC

* 180 rotation for ili9328 and R61505

* Clean up whitespace

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
Co-authored-by: Scott Lahteine <github@thinkyhead.com>
2020-10-12 16:38:07 -05:00
Scott Lahteine bcf65aa503 Fix screen click reading too often (#19696)
Co-authored-by: andreibobirica <39415547+andreibobirica@users.noreply.github.com>
2020-10-12 00:59:30 -05:00
Jason Smith a866a758cc Allow MAX31865 resistance values configuration (#19695) 2020-10-12 00:40:39 -05:00
InsanityAutomation e7838c5f79 G34 Mechanical Gantry Calibration (like Prusa M915) (#18972)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-11 21:34:27 -05:00
qwewer0 f21b91f1a7 Add REPORT_TRAMMING_MM option (#19682)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-11 21:30:18 -05:00
Jason Smith edda32e6b4 Fix motion compile w/out probe-oriented settings (#19684) 2020-10-11 19:42:50 -05:00
Victor Oliveira 639b0b8f50 Option to prevent (extra) Watchdog init on STM32 (#19693) 2020-10-11 19:31:21 -05:00
Victor Oliveira 18dd0d00a6 Implement wait_for_user for Color UI (#19694) 2020-10-11 19:26:16 -05:00
Jason Smith 24fd19259d Fix I2C_ADDRESS sign warning (#19685) 2020-10-11 19:23:23 -05:00
thinkyhead bdd555990b [cron] Bump distribution date (2020-10-12) 2020-10-12 00:15:08 +00:00
Jason Smith c762b7c91b Fix various errors, warnings in example config builds (#19686)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-11 19:06:57 -05:00
Jason Smith 45731bd022 Fix at90usb1286 build (#19687)
* Skip check for USBCON during dependency detection
* Ignore incompatible Teensy_ADC library, which requires Teensy >= 3
* Add IS_AT90USB

Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-11 18:13:01 -05:00
Scott Lahteine 492ba2a111 Digipots refactor / cleanup (#19690) 2020-10-11 14:58:35 -05:00
thinkyhead 349465b168 [cron] Bump distribution date (2020-10-11) 2020-10-11 00:15:24 +00:00
Scott Lahteine 98427ea92a Save PLR on resume from pause (#19676)
Co-Authored-By: shahab <32130261+SHBnik@users.noreply.github.com>
2020-10-10 12:09:44 -05:00
Victor Oliveira a90edd5eb4 Restore correct STM32 port-bits code (#19678) 2020-10-10 11:47:28 -05:00
Serhiy-K 6fdaaf3d20 Fixes for TFTGLCD Panel, FastIO (#19614) 2020-10-10 05:08:01 -05:00
ellensp 406f8363bc HAS_CHARACTER_LCD => HAS_MARLINUI_HD44780 (#19673) 2020-10-10 04:39:12 -05:00
Victor Oliveira 8e03a4cb93 Keep HAL tasks running during PID Autotune (#19671) 2020-10-09 23:35:41 -05:00
thinkyhead 1403260487 [cron] Bump distribution date (2020-10-10) 2020-10-10 00:14:40 +00:00
Scott Lahteine 6831341ab4 Batch appercase hex values 2020-10-09 16:55:27 -05:00
Scott Lahteine 0988af453c Optional M42/M226; Add more features filters (#19664) 2020-10-09 16:42:23 -05:00
Victor Oliveira 631457ffea Support for Debug Codes - Dnnn (#19225)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-09 06:28:53 -05:00
石立枫 bec1844954 Support for FLY MINI (#19185) 2020-10-09 06:09:27 -05:00
Keith Bennett e6d0a8ef66 Fix touch ifndefs (#19661) 2020-10-09 02:52:06 -05:00
Giuliano Zaro 70ab146cbb Update Italian language (#19654) 2020-10-09 02:51:25 -05:00
thinkyhead 33b2e12886 [cron] Bump distribution date (2020-10-09) 2020-10-09 00:14:12 +00:00
Samantaz Fox 1de29026d5 Fix and improve Makefile / CMake (#19640) 2020-10-08 18:40:54 -05:00
Scott Lahteine 854af7a4bf Permit touch calibration override 2020-10-08 16:59:54 -05:00
Scott Lahteine f72c559824 Use 0xFF (not 'ff') for byte transfer 2020-10-08 15:18:43 -05:00
ellensp 321afd5fef Apply env:mega2560ext to relevant boards (#19624) 2020-10-08 02:30:31 -05:00
qwewer0 91df2bea80 Update PROBE_OFFSET_WIZARD comment (#19652) 2020-10-07 20:43:08 -05:00
thinkyhead 5de2946999 [cron] Bump distribution date (2020-10-08) 2020-10-08 00:12:06 +00:00
qwewer0 c650b752f1 More accessible PROBE_OFFSET_WIZARD (#19647) 2020-10-07 13:01:01 -05:00
ellensp c12f41ec6f Restore ° to 6x9 small info font (#19645) 2020-10-07 13:00:08 -05:00
Scott Lahteine 2c6ec0c999 Chamber vent/fan followup 2020-10-06 19:42:11 -05:00
Scott Lahteine f1e563d8cf Fix small font section directive, mixer warning 2020-10-06 19:18:00 -05:00
thinkyhead 6de179eb7d [cron] Bump distribution date (2020-10-07) 2020-10-07 00:14:42 +00:00
Scott Lahteine 584ffc6f52 Update language fonts 2020-10-06 18:37:32 -05:00
ladismrkolj 2c99c1e06f Add Chamber servo vent, auto fan (#19519) 2020-10-06 18:36:01 -05:00
signetica f95a2f6d91 Fix Ender-3 V2 DWIN Stop SD Print (#19642)
Co-authored-by: Scott Lahteine <thinkyhead@users.noreply.github.com>
2020-10-06 16:58:28 -05:00
Scott Lahteine b31e358270 Improve retract / unretract labels 2020-10-06 03:01:28 -05:00
thinkyhead 673835e5d9 [cron] Bump distribution date (2020-10-06) 2020-10-06 00:14:30 +00:00
Scott Lahteine f5bae208cc Trailing whitespace 2020-10-05 17:16:42 -05:00
Scott Lahteine c25c31b1de Sync config to examples 2020-10-05 17:16:42 -05:00
Mathew Winters 343441d746 Z Probe Offset Wizard (#18866) 2020-10-05 00:31:20 -05:00
Cory Ory 78fc4c8947 Allow bypass for cold E movement (#19606) 2020-10-04 19:51:21 -05:00
1143 changed files with 61357 additions and 37244 deletions
+2
View File
@@ -17,3 +17,5 @@
*.png binary
*.jpg binary
*.fon binary
*.bin binary
*.woff binary
+16 -18
View File
@@ -36,9 +36,11 @@ jobs:
# Base Environments
- DUE
- DUE_archim
- esp32
- linux_native
- mega2560
- at90usb1286_dfu
- teensy31
- teensy35
- teensy41
@@ -46,13 +48,13 @@ jobs:
# Extended AVR Environments
- FYSETC_F6_13
- FYSETC_F6
- mega1280
- rambo
- sanguino1284p
- sanguino644p
# Extended STM32 Environments
# STM32F1 (Maple) Environments
- STM32F103RC_btt
- STM32F103RC_btt_USB
@@ -62,39 +64,39 @@ jobs:
- STM32F103RC_meeb
- jgaurora_a5s_a1
- STM32F103VE_longer
- mks_robin
- mks_robin_lite
- mks_robin_pro
- STM32F103RET6_creality
- mks_robin_nano35
# STM32 (ST) Environments
- STM32F407VE_black
- STM32F401VE_STEVAL
- BIGTREE_BTT002
- BIGTREE_SKR_PRO
- BIGTREE_GTR_V1_0
- mks_robin
- mks_robin_stm32
- ARMED
- FYSETC_S6
- STM32F070CB_malyan
- STM32F070RB_malyan
- malyan_M300
- mks_robin_lite
- FLYF407ZG
- rumba32
- mks_robin_pro
- STM32F103RET6_creality
- LERDGEX
- mks_robin_nano35
- mks_robin_nano35_stm32
- NUCLEO_F767ZI
- REMRAM_V1
# Put lengthy tests last
- LPC1768
- LPC1769
# STM32 with non-STM framework. both broken for now. they should use HAL_STM32 which is working.
#- STM32F4
#- STM32F7
# Non-working environment tests
#- at90usb1286_cdc
#- at90usb1286_dfu
#- STM32F103CB_malyan
#- mks_robin_mini
@@ -116,8 +118,4 @@ jobs:
- name: Run ${{ matrix.test-platform }} Tests
run: |
# Inline tests script
chmod +x buildroot/bin/*
chmod +x buildroot/tests/*
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH}
run_tests . ${{ matrix.test-platform }}
make tests-single-ci TEST_TARGET=${{ matrix.test-platform }}
+13 -7
View File
@@ -77,7 +77,6 @@ tags
*.out
*.app
#
# C
#
@@ -149,7 +148,7 @@ Marlin/*/*/*/*/readme.txt
# Secure Credentials
Configuration_Secure.h
#Visual Studio
# Visual Studio
*.sln
*.vcxproj
*.vcxproj.user
@@ -160,27 +159,34 @@ __vm/
.vs/
vc-fileutils.settings
#Visual Studio Code
# Visual Studio Code
.vscode
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/*.db
#cmake
# cmake
CMakeLists.txt
src/CMakeLists.txt
CMakeListsPrivate.txt
#CLion
# CLion
cmake-build-*
#Eclipse
# Eclipse
.project
.cproject
.pydevproject
.settings
.classpath
#Python
# Python
__pycache__
# IOLogger logs
*_log.csv
# Simulation / Native
eeprom.dat
imgui.ini
+52
View File
@@ -0,0 +1,52 @@
help:
@echo "Tasks for local development:"
@echo "* tests-single-ci: Run a single test from inside the CI"
@echo "* tests-single-local: Run a single test locally"
@echo "* tests-single-local-docker: Run a single test locally, using docker-compose"
@echo "* tests-all-local: Run all tests locally"
@echo "* tests-all-local-docker: Run all tests locally, using docker-compose"
@echo "* setup-local-docker: Setup local docker-compose"
@echo ""
@echo "Options for testing:"
@echo " TEST_TARGET Set when running tests-single-*, to select the"
@echo " test. If you set it to ALL it will run all "
@echo " tests, but some of them are broken: use "
@echo " tests-all-* instead to run only the ones that "
@echo " run on GitHub CI"
@echo " ONLY_TEST Limit tests to only those that contain this, or"
@echo " the index of the test (1-based)"
@echo " VERBOSE_PLATFORMIO If you want the full PIO output, set any value"
@echo " GIT_RESET_HARD Used by CI: reset all local changes. WARNING:"
@echo " THIS WILL UNDO ANY CHANGES YOU'VE MADE!"
.PHONY: help
tests-single-ci:
export GIT_RESET_HARD=true
$(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET)
.PHONY: tests-single-ci
tests-single-local:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local" ; return 1; fi
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& run_tests . $(TEST_TARGET) "$(ONLY_TEST)"
.PHONY: tests-single-local
tests-single-local-docker:
@if ! test -n "$(TEST_TARGET)" ; then echo "***ERROR*** Set TEST_TARGET=<your-module> or use make tests-all-local-docker" ; return 1; fi
docker-compose run --rm marlin $(MAKE) tests-single-local TEST_TARGET=$(TEST_TARGET) VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD) ONLY_TEST="$(ONLY_TEST)"
.PHONY: tests-single-local-docker
tests-all-local:
export PATH=./buildroot/bin/:./buildroot/tests/:${PATH} \
&& export VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) \
&& for TEST_TARGET in $$(./get_test_targets.py) ; do echo "Running tests for $$TEST_TARGET" ; run_tests . $$TEST_TARGET ; done
.PHONY: tests-all-local
tests-all-local-docker:
docker-compose run --rm marlin $(MAKE) tests-all-local VERBOSE_PLATFORMIO=$(VERBOSE_PLATFORMIO) GIT_RESET_HARD=$(GIT_RESET_HARD)
.PHONY: tests-all-local-docker
setup-local-docker:
docker-compose build
.PHONY: setup-local-docker
+571 -183
View File
File diff suppressed because it is too large Load Diff
+386 -172
View File
File diff suppressed because it is too large Load Diff
+129 -38
View File
@@ -22,8 +22,10 @@
# (e.g. UPLOAD_PORT = /dev/tty.USB0). If the exact name of this file
# changes, you can use * as a wild card (e.g. UPLOAD_PORT = /dev/tty.usb*).
#
# 3. Set the line containing "MCU" to match your board's processor.
# Older one's are atmega8 based, newer ones like Arduino Mini, Bluetooth
# 3. Set the line containing "MCU" to match your board's processor. Set
# "PROG_MCU" as the AVR part name corresponding to "MCU". You can use the
# following command to get a list of correspondences: `avrdude -c alf -p x`
# Older boards are atmega8 based, newer ones like Arduino Mini, Bluetooth
# or Diecimila have the atmega168. If you're using a LilyPad Arduino,
# change F_CPU to 8000000. If you are using Gen7 electronics, you
# probably need to use 20000000. Either way, you must regenerate
@@ -34,18 +36,18 @@
# 5. Type "make upload", reset your Arduino board, and press enter to
# upload your program to the Arduino board.
#
# Note that all settings at the top of this file can be overriden from
# Note that all settings at the top of this file can be overridden from
# the command line with, for example, "make HARDWARE_MOTHERBOARD=71"
#
# To compile for RAMPS (atmega2560) with Arduino 1.6.9 at root/arduino you would use...
#
# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
# HARDWARE_MOTHERBOARD=33 ARDUINO_INSTALL_DIR=/root/arduino
# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino
#
# To compile and upload simply add "upload" to the end of the line...
#
# make ARDUINO_VERSION=10609 AVR_TOOLS_PATH=/root/arduino/hardware/tools/avr/bin/ \
# HARDWARE_MOTHERBOARD=33 ARDUINO_INSTALL_DIR=/root/arduino upload
# HARDWARE_MOTHERBOARD=1200 ARDUINO_INSTALL_DIR=/root/arduino upload
#
# If uploading doesn't work try adding the parameter "AVRDUDE_PROGRAMMER=wiring" or
# start upload manually (using stk500) like so:
@@ -57,7 +59,26 @@
#
# This defines the board to compile for (see boards.h for your board's ID)
HARDWARE_MOTHERBOARD ?= 11
HARDWARE_MOTHERBOARD ?= 1020
ifeq ($(OS),Windows_NT)
# Windows
ARDUINO_INSTALL_DIR ?= ${HOME}/Arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
# Linux
ARDUINO_INSTALL_DIR ?= /usr/share/arduino
ARDUINO_USER_DIR ?= ${HOME}/Arduino
endif
ifeq ($(UNAME_S),Darwin)
# Darwin (macOS)
ARDUINO_INSTALL_DIR ?= /Applications/Arduino.app/Contents/Java
ARDUINO_USER_DIR ?= ${HOME}/Documents/Arduino
AVR_TOOLS_PATH ?= /Applications/Arduino.app/Contents/Java/hardware/tools/avr/bin/
endif
endif
# Arduino source install directory, and version number
# On most linuxes this will be /usr/share/arduino
@@ -67,32 +88,38 @@ ARDUINO_VERSION ?= 106
# The installed Libraries are in the User folder
ARDUINO_USER_DIR ?= ${HOME}/Arduino
# You can optionally set a path to the avr-gcc tools. Requires a trailing slash. (ex: /usr/local/avr-gcc/bin)
# You can optionally set a path to the avr-gcc tools.
# Requires a trailing slash. For example, /usr/local/avr-gcc/bin/
AVR_TOOLS_PATH ?=
#Programmer configuration
# Programmer configuration
UPLOAD_RATE ?= 57600
AVRDUDE_PROGRAMMER ?= arduino
# on most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1
# On most linuxes this will be /dev/ttyACM0 or /dev/ttyACM1
UPLOAD_PORT ?= /dev/ttyUSB0
#Directory used to build files in, contains all the build files, from object files to the final hex file
#on linux it is best to put an absolute path like /home/username/tmp .
# Directory used to build files in, contains all the build files, from object
# files to the final hex file on linux it is best to put an absolute path
# like /home/username/tmp .
BUILD_DIR ?= applet
# This defines whether Liquid_TWI2 support will be built
LIQUID_TWI2 ?= 0
# this defines if Wire is needed
# This defines if Wire is needed
WIRE ?= 0
# this defines if U8GLIB is needed (may require RELOC_WORKAROUND)
U8GLIB ?= 1
# This defines if Tone is needed (i.e SPEAKER is defined in Configuration.h)
# Disabling this (and SPEAKER) saves approximatively 350 bytes of memory.
TONE ?= 1
# this defines whether to include the Trinamic TMCStepper library
TMC ?= 1
# This defines if U8GLIB is needed (may require RELOC_WORKAROUND)
U8GLIB ?= 0
# this defines whether to include the AdaFruit NeoPixel library
# This defines whether to include the Trinamic TMCStepper library
TMC ?= 0
# This defines whether to include the AdaFruit NeoPixel library
NEOPIXEL ?= 0
############
@@ -208,7 +235,8 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1119)
else ifeq ($(HARDWARE_MOTHERBOARD),1120)
# Ultimaker (Older electronics. Pre 1.5.4. This is rare)
else ifeq ($(HARDWARE_MOTHERBOARD),1121)
MCU ?= atmega1280
MCU ?= atmega1280
PROG_MCU ?= m1280
# Azteeg X3
else ifeq ($(HARDWARE_MOTHERBOARD),1122)
@@ -350,9 +378,11 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1320)
# Minitronics v1.0/1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1400)
MCU ?= atmega1281
PROG_MCU ?= m1281
# Silvergate v1.0
else ifeq ($(HARDWARE_MOTHERBOARD),1401)
MCU ?= atmega1281
PROG_MCU ?= m1281
#
# Sanguinololu and Derivatives - ATmega644P, ATmega1284P
@@ -362,46 +392,57 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1401)
else ifeq ($(HARDWARE_MOTHERBOARD),1500)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Sanguinololu 1.2 and above
else ifeq ($(HARDWARE_MOTHERBOARD),1501)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Melzi
else ifeq ($(HARDWARE_MOTHERBOARD),1502)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Melzi V2.0
else ifeq ($(HARDWARE_MOTHERBOARD),1503)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi with ATmega1284 (MaKr3d version)
else ifeq ($(HARDWARE_MOTHERBOARD),1504)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi Creality3D board (for CR-10 etc)
else ifeq ($(HARDWARE_MOTHERBOARD),1505)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Melzi Malyan M150 board
else ifeq ($(HARDWARE_MOTHERBOARD),1506)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Tronxy X5S
else ifeq ($(HARDWARE_MOTHERBOARD),1507)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# STB V1.1
else ifeq ($(HARDWARE_MOTHERBOARD),1508)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Azteeg X1
else ifeq ($(HARDWARE_MOTHERBOARD),1509)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
# Anet 1.0 (Melzi clone)
else ifeq ($(HARDWARE_MOTHERBOARD),1510)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega1284p
PROG_MCU ?= m1284p
#
# Other ATmega644P, ATmega644, ATmega1284P
@@ -411,50 +452,61 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1510)
else ifeq ($(HARDWARE_MOTHERBOARD),1600)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen3+
else ifeq ($(HARDWARE_MOTHERBOARD),1601)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen6
else ifeq ($(HARDWARE_MOTHERBOARD),1602)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen6 deluxe
else ifeq ($(HARDWARE_MOTHERBOARD),1603)
HARDWARE_VARIANT ?= Gen6
MCU ?= atmega644p
PROG_MCU ?= m644p
# Gen7 custom (Alfons3 Version)
else ifeq ($(HARDWARE_MOTHERBOARD),1604)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644
PROG_MCU ?= m644
F_CPU ?= 20000000
# Gen7 v1.1, v1.2
else ifeq ($(HARDWARE_MOTHERBOARD),1605)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
PROG_MCU ?= m644p
F_CPU ?= 20000000
# Gen7 v1.3
else ifeq ($(HARDWARE_MOTHERBOARD),1606)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega644p
PROG_MCU ?= m644p
F_CPU ?= 20000000
# Gen7 v1.4
else ifeq ($(HARDWARE_MOTHERBOARD),1607)
HARDWARE_VARIANT ?= Gen7
MCU ?= atmega1284p
PROG_MCU ?= m1284p
F_CPU ?= 20000000
# Alpha OMCA board
else ifeq ($(HARDWARE_MOTHERBOARD),1608)
HARDWARE_VARIANT ?= SanguinoA
MCU ?= atmega644
PROG_MCU ?= m644
# Final OMCA board
else ifeq ($(HARDWARE_MOTHERBOARD),1609)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
# Sethi 3D_1
else ifeq ($(HARDWARE_MOTHERBOARD),1610)
HARDWARE_VARIANT ?= Sanguino
MCU ?= atmega644p
PROG_MCU ?= m644p
#
# Teensyduino - AT90USB1286, AT90USB1286P
@@ -464,51 +516,60 @@ else ifeq ($(HARDWARE_MOTHERBOARD),1610)
else ifeq ($(HARDWARE_MOTHERBOARD),1700)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Printrboard (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1701)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Printrboard Revision F (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1702)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Brainwave (AT90USB646)
else ifeq ($(HARDWARE_MOTHERBOARD),1703)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb646
PROG_MCU ?= usb646
# Brainwave Pro (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1704)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# SAV Mk-I (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1705)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# Teensy++2.0 (AT90USB1286)
else ifeq ($(HARDWARE_MOTHERBOARD),1706)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# 5DPrint D8 Driver Board
else ifeq ($(HARDWARE_MOTHERBOARD),1707)
HARDWARE_VARIANT ?= Teensy
MCU ?= at90usb1286
PROG_MCU ?= usb1286
# UltiMachine Archim1 (with DRV8825 drivers)
else ifeq ($(HARDWARE_MOTHERBOARD),3023)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
F_CPU = 84000000
IS_MCU = 0
# UltiMachine Archim2 (with TMC2130 drivers)
else ifeq ($(HARDWARE_MOTHERBOARD),3024)
HARDWARE_VARIANT ?= archim
MCPU = cortex-m3
F_CPU = 84000000L
F_CPU = 84000000
IS_MCU = 0
endif
# Be sure to regenerate speed_lookuptable.h with create_speed_lookuptable.py
# if you are setting this to something other than 16MHz
# Do not put the UL suffix, it's done later on.
# Set to 16Mhz if not yet set.
F_CPU ?= 16000000
@@ -518,7 +579,8 @@ IS_MCU ?= 1
ifeq ($(IS_MCU),1)
# Set to arduino, ATmega2560 if not yet set.
HARDWARE_VARIANT ?= arduino
MCU ?= atmega2560
MCU ?= atmega2560
PROG_MCU ?= m2560
TOOL_PREFIX = avr
MCU_FLAGS = -mmcu=$(MCU)
@@ -549,27 +611,36 @@ VPATH += $(BUILD_DIR)
VPATH += $(HARDWARE_SRC)
ifeq ($(HARDWARE_VARIANT), $(filter $(HARDWARE_VARIANT),arduino Teensy Sanguino))
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/LiquidCrystal/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/marlin/avr/libraries/SPI
# Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
endif
ifeq ($(IS_MCU),1)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/cores/arduino
# Old libraries (avr-core 1.6.21 < / Arduino < 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SPI/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/SoftwareSerial/src
endif
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidCrystal/src
ifeq ($(LIQUID_TWI2), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
WIRE = 1
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/LiquidTWI2
endif
ifeq ($(WIRE), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Wire/utility
# Old libraries (avr-core 1.6.21 / Arduino < 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/utility
# New libraries (avr-core >= 1.6.21 / Arduino >= 1.6.8)
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src
VPATH += $(ARDUINO_INSTALL_DIR)/hardware/arduino/avr/libraries/Wire/src/utility
endif
ifeq ($(NEOPIXEL), 1)
VPATH += $(ARDUINO_INSTALL_DIR)/libraries/Adafruit_NeoPixel
@@ -641,13 +712,23 @@ ifeq ($(WIRE), 1)
LIB_CXXSRC += Wire.cpp
endif
ifeq ($(TONE), 1)
LIB_CXXSRC += Tone.cpp
endif
ifeq ($(U8GLIB), 1)
LIB_CXXSRC += U8glib.cpp
LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c u8g_font_6x13.c u8g_font_04b_03.c u8g_font_5x8.c
LIB_SRC += u8g_ll_api.c u8g_bitmap.c u8g_clip.c u8g_com_null.c u8g_delay.c \
u8g_page.c u8g_pb.c u8g_pb16h1.c u8g_rect.c u8g_state.c u8g_font.c \
u8g_font_6x13.c u8g_font_04b_03.c u8g_font_5x8.c
endif
ifeq ($(TMC), 1)
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
LIB_CXXSRC += TMCStepper.cpp COOLCONF.cpp DRV_STATUS.cpp IHOLD_IRUN.cpp \
CHOPCONF.cpp GCONF.cpp PWMCONF.cpp DRV_CONF.cpp DRVCONF.cpp DRVCTRL.cpp \
DRVSTATUS.cpp ENCMODE.cpp RAMP_STAT.cpp SGCSCONF.cpp SHORT_CONF.cpp \
SMARTEN.cpp SW_MODE.cpp SW_SPI.cpp TMC2130Stepper.cpp TMC2208Stepper.cpp \
TMC2209Stepper.cpp TMC2660Stepper.cpp TMC5130Stepper.cpp TMC5160Stepper.cpp
endif
ifeq ($(RELOC_WORKAROUND), 1)
@@ -689,17 +770,23 @@ REMOVE = rm -f
MV = mv -f
# Place -D or -U options here
CDEFS = -DF_CPU=$(F_CPU) ${addprefix -D , $(DEFINES)} -DARDUINO=$(ARDUINO_VERSION)
CDEFS = -DF_CPU=$(F_CPU)UL ${addprefix -D , $(DEFINES)} -DARDUINO=$(ARDUINO_VERSION)
CXXDEFS = $(CDEFS)
ifeq ($(HARDWARE_VARIANT), Teensy)
CDEFS += -DUSB_SERIAL
CDEFS += -DUSB_SERIAL
LIB_SRC += usb.c pins_teensy.c
LIB_CXXSRC += usb_api.cpp
else ifeq ($(HARDWARE_VARIANT), archim)
CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__ -DUSB_VID=0x27b1 -DUSB_PID=0x0001 -DUSBCON '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT_STRING="Archim"'
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp PluggableUSB.cpp USBCore.cpp
CDEFS += -DARDUINO_SAM_ARCHIM -DARDUINO_ARCH_SAM -D__SAM3X8E__
CDEFS += -DUSB_VID=0x27B1 -DUSB_PID=0x0001 -DUSBCON
CDEFS += '-DUSB_MANUFACTURER="UltiMachine"' '-DUSB_PRODUCT_STRING="Archim"'
LIB_CXXSRC += variant.cpp IPAddress.cpp Reset.cpp RingBuffer.cpp Stream.cpp \
UARTClass.cpp USARTClass.cpp abi.cpp new.cpp watchdog.cpp CDC.cpp \
PluggableUSB.cpp USBCore.cpp
LIB_SRC += cortex_handlers.c iar_calls_sam3.c syscalls_sam3.c dtostrf.c itoa.c
ifeq ($(U8GLIB), 1)
@@ -725,16 +812,20 @@ CTUNING = -fsigned-char -funsigned-bitfields -fno-exceptions \
ifneq ($(HARDWARE_MOTHERBOARD),)
CTUNING += -DMOTHERBOARD=${HARDWARE_MOTHERBOARD}
endif
#CEXTRA = -Wa,-adhlns=$(<:.c=.lst)
CXXEXTRA = -fno-use-cxa-atexit -fno-threadsafe-statics -fno-rtti
CFLAGS := $(CDEBUG) $(CDEFS) $(CINCS) -O$(OPT) $(CEXTRA) $(CTUNING) $(CSTANDARD)
CXXFLAGS := $(CDEFS) $(CINCS) -O$(OPT) $(CXXEXTRA) $(CTUNING) $(CXXSTANDARD)
ASFLAGS := $(CDEFS)
#ASFLAGS = -Wa,-adhlns=$(<:.S=.lst),-gstabs
ifeq ($(HARDWARE_VARIANT), archim)
LD_PREFIX = -Wl,--gc-sections,-Map,Marlin.ino.map,--cref,--check-sections,--entry=Reset_Handler,--unresolved-symbols=report-all,--warn-common,--warn-section-align
LD_SUFFIX = $(LDLIBS)
LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
LDFLAGS = -lm -T$(LDSCRIPT) -u _sbrk -u link -u _close -u _fstat -u _isatty
LDFLAGS += -u _lseek -u _read -u _write -u _exit -u kill -u _getpid
else
LD_PREFIX = -Wl,--gc-sections,--relax
LDFLAGS = -lm
@@ -750,7 +841,7 @@ else
AVRDUDE_CONF = $(ARDUINO_INSTALL_DIR)/hardware/tools/avr/etc/avrdude.conf
endif
AVRDUDE_FLAGS = -D -C$(AVRDUDE_CONF) \
-p$(MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
-p$(PROG_MCU) -P$(AVRDUDE_PORT) -c$(AVRDUDE_PROGRAMMER) \
-b$(UPLOAD_RATE)
# Since Marlin 2.0, the source files may be distributed into several
@@ -851,7 +942,7 @@ extcoff: $(TARGET).elf
.elf.eep:
-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
--change-section-lma .eeprom=0 -O $(FORMAT) $< $@
# Create extended listing file from ELF output file.
.elf.lss:
@@ -865,7 +956,7 @@ extcoff: $(TARGET).elf
$(BUILD_DIR)/$(TARGET).elf: $(OBJ) Configuration.h
$(Pecho) " CXX $@"
$P $(CC) $(LD_PREFIX) $(ALL_CXXFLAGS) -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
$P $(CXX) $(LD_PREFIX) $(ALL_CXXFLAGS) -o $@ -L. $(OBJ) $(LDFLAGS) $(LD_SUFFIX)
# Object files that were found in "src" will be stored in $(BUILD_DIR)
# in directories that mirror the structure of "src"
+7 -7
View File
@@ -1,6 +1,6 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
@@ -28,25 +28,25 @@
/**
* Marlin release version identifier
*/
//#define SHORT_BUILD_VERSION "bugfix-2.0.x"
#define SHORT_BUILD_VERSION "2.0.7_SX1"
/**
* Verbose version identifier which should contain a reference to the location
* from where the binary was downloaded or the source code was compiled.
*/
//#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION
#define DETAILED_BUILD_VERSION SHORT_BUILD_VERSION " TM3D"
/**
* The STRING_DISTRIBUTION_DATE represents when the binary file was built,
* 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 "2021-01-03"
/**
* Defines a generic printer name to be output to the LCD after booting Marlin.
*/
//#define MACHINE_NAME "3D Printer"
#define MACHINE_NAME "TM3D SX4"
/**
* The SOURCE_CODE_URL is the location where users will find the Marlin Source
@@ -54,7 +54,7 @@
* has a distinct Github fork— the Source Code URL should just be the main
* Marlin repository.
*/
//#define SOURCE_CODE_URL "https://github.com/MarlinFirmware/Marlin"
#define SOURCE_CODE_URL "https://github.com/InsanityAutomation/Marlin/tree/TM_SX4_2.0"
/**
* Default generic printer UUID.
@@ -65,7 +65,7 @@
* The WEBSITE_URL is the location where users can get more information such as
* documentation about a specific Marlin release.
*/
//#define WEBSITE_URL "https://marlinfw.org"
#define WEBSITE_URL "tinymachines3d.com"
/**
* Set the vendor info the serial USB interface, if changable
+93
View File
@@ -0,0 +1,93 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Custom Bitmap for splashscreen
*
* You may use one of the following tools to generate the C++ bitmap array from
* a black and white image:
*
* - http://www.marlinfw.org/tools/u8glib/converter.html
* - http://www.digole.com/tools/PicturetoC_Hex_converter.php
*/
#define CUSTOM_BOOTSCREEN_TIMEOUT 2500
#define CUSTOM_BOOTSCREEN_BMPWIDTH 128
#define CUSTOM_BOOTSCREEN_INVERTED
const unsigned char custom_start_bmp[] PROGMEM = {
B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,B11111111,B11111111,B11111111,
B11111110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,B11111111,B11111111,B11111111,
B11111100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
B11111100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000101,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
B11111100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000110,B00000111,B11000000,B00000000,B00000001,B11110000,B00111111,
B11111110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000100,B00001010,B00100000,B00000000,B00000010,B00001000,B00011111,
B11111100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000110,B00010100,B00010000,B00000000,B00000101,B00000100,B00111111,
B11111110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000100,B00101000,B00001000,B00000000,B00001010,B00000010,B00011111,
B11111100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000110,B01010100,B00000100,B00000000,B00010101,B00000001,B00111111,
B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
B11111100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101110,B01010000,B00000100,B00000000,B00010100,B00000001,B00111111,
B11111110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010100,B01100000,B00000100,B00000000,B00011000,B00000001,B00011111,
B11111100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100110,B01010100,B00000100,B00011100,B00010101,B00000001,B00111111,
B11111110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010100,B00101000,B00001000,B00101010,B00001010,B00000010,B00011111,
B11111100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101110,B00010100,B00010000,B01010001,B00000101,B00000100,B00111111,
B11111110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00001010,B00100000,B01100001,B00000010,B10001000,B00011111,
B11111100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000110,B00000111,B11000000,B01010001,B00000001,B11110000,B00111111,
B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000100,B00000000,B00000000,B00101010,B00000000,B00000000,B00011111,
B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111110,B00000000,B00000000,B00011100,B00000000,B00000000,B00111111,
B11111110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010100,B00000000,B00000000,B00000000,B00000000,B00000000,B00011111,
B11111100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000110,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000110,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000100,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111100,B11000100,B00010000,B01000001,B00000100,B00010001,B10111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000110,B10000100,B00010000,B01000001,B00000100,B00010000,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010100,B11010101,B01010101,B01010101,B01010101,B01010101,B10111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111100,B11111111,B11111111,B11111111,B11111111,B11111111,B10011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111110,B00000000,B00000000,B00000000,B00000000,B00000000,B00111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111101,B01010101,B01010101,B01010101,B01010101,B01010101,B01011111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,B11111111,
B11100000,B00101110,B11111011,B01111101,B11111011,B11111011,B11001111,B11000001,B11011111,B10111011,B00111110,B11000000,B11100001,B11111110,B00111100,B00011111,
B11111101,B11101110,B01111011,B00111001,B11111001,B11110011,B11001111,B10011110,B11011111,B10111011,B00111110,B11011111,B11011110,B11111100,B11011101,B11100111,
B11111101,B11101110,B00111011,B10111011,B11111001,B11101011,B11010111,B10111111,B01011111,B10111011,B01011110,B11011111,B11011110,B11111101,B11101101,B11110111,
B11111101,B11101110,B10111011,B11010011,B11111010,B11101011,B10110111,B00111111,B11011111,B10111011,B01001110,B11011111,B11011111,B11111111,B11001101,B11110011,
B11111101,B11101110,B11011011,B11000111,B11111010,B11101011,B10111011,B01111111,B11000000,B00111011,B01101110,B11000000,B11100011,B11111111,B00011101,B11110011,
B11111101,B11101110,B11001011,B11101111,B11111010,B11011011,B10111011,B01111111,B11011111,B10111011,B01100110,B11011111,B11111000,B11111111,B11001101,B11110011,
B11111101,B11101110,B11101011,B11101111,B11111011,B01011011,B00000011,B00111111,B01011111,B10111011,B01110110,B11011111,B11111110,B01111111,B11101101,B11110011,
B11111101,B11101110,B11110011,B11101111,B11111011,B01011011,B01111001,B10111110,B11011111,B10111011,B01111010,B11011111,B11011110,B01111101,B11101101,B11110111,
B11111101,B11101110,B11110011,B11101111,B11111011,B10111010,B11111101,B10011110,B11011111,B10111011,B01111100,B11011111,B11011110,B11111101,B11001101,B11100111,
B11111101,B11101110,B11111011,B11101111,B11111011,B10111010,B11111101,B11000001,B11011111,B10111011,B01111110,B11000000,B11100000,B11111110,B00011100,B00011111
};
+74
View File
@@ -0,0 +1,74 @@
/**
* Marlin 3D Printer Firmware
* Copyright (C) 2016 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* Based on Sprinter and grbl.
* Copyright (C) 2011 Camiel Gubbels / Erik van der Zalm
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* Custom Status Screen bitmap
*
* Place this file in the root with your configuration files
* and enable CUSTOM_STATUS_SCREEN_IMAGE in Configuration.h.
*
* Use the Marlin Bitmap Converter to make your own:
* http://marlinfw.org/tools/u8glib/converter.html
*/
//
// Status Screen Logo bitmap
//
#define STATUS_LOGO_Y 3
#define STATUS_LOGO_WIDTH 24
const unsigned char status_logo_bmp[] PROGMEM = {
B11111111,B11111111,B11111111,
B10000000,B00000000,B00000001,
B10001110,B00000000,B11100001,
B10011111,B00000001,B11110001,
B10010011,B10000001,B00111001,
B10011111,B10000001,B11111001,
B10011111,B10000001,B11111001,
B10011111,B10111001,B11111001,
B10001111,B00101000,B11110001,
B10000000,B00111000,B00000001,
B10000000,B00000000,B00000001,
B10011111,B11111111,B11111001,
B10010001,B01110100,B10011001,
B10011011,B00000110,B10101001,
B10011011,B01010100,B10101001,
B10011011,B01010110,B10101001,
B10011011,B01010100,B10011001,
B10011111,B11111111,B11111001,
B11111111,B11111111,B11111111
};
//
// Use default bitmaps
//
#define STATUS_HOTEND_ANIM
#define STATUS_BED_ANIM
#if HOTENDS < 2
#define STATUS_LOGO_X 8
#define STATUS_HEATERS_X 40
#define STATUS_BED_X 72
#else
#define STATUS_LOGO_X 0
#define STATUS_HEATERS_X 32
#define STATUS_BED_X 80
#endif
+12 -6
View File
@@ -120,12 +120,18 @@ void HAL_init();
inline void HAL_clear_reset_source() { MCUSR = 0; }
inline uint8_t HAL_get_reset_source() { return MCUSR; }
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
extern "C" {
int freeMemory();
}
#pragma GCC diagnostic pop
inline void HAL_reboot() {} // reboot the board or restart the bootloader
#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
+14 -14
View File
@@ -34,17 +34,17 @@
#include "../../inc/MarlinConfig.h"
void spiBegin() {
OUT_WRITE(SS_PIN, HIGH);
SET_OUTPUT(SCK_PIN);
SET_INPUT(MISO_PIN);
SET_OUTPUT(MOSI_PIN);
OUT_WRITE(SD_SS_PIN, HIGH);
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(SS_PIN);
//SET_OUTPUT(SD_SS_PIN);
// set SS high - may be chip select for another SPI device
//#if SET_SPI_SS_HIGH
//WRITE(SS_PIN, HIGH);
//WRITE(SD_SS_PIN, HIGH);
//#endif
// set a default rate
spiInit(1);
@@ -195,19 +195,19 @@ void spiBegin() {
// no interrupts during byte receive - about 8µs
cli();
// output pin high - like sending 0xFF
WRITE(MOSI_PIN, HIGH);
WRITE(SD_MOSI_PIN, HIGH);
LOOP_L_N(i, 8) {
WRITE(SCK_PIN, HIGH);
WRITE(SD_SCK_PIN, HIGH);
nop; // adjust so SCK is nice
nop;
data <<= 1;
if (READ(MISO_PIN)) data |= 1;
if (READ(SD_MISO_PIN)) data |= 1;
WRITE(SCK_PIN, LOW);
WRITE(SD_SCK_PIN, LOW);
}
sei();
@@ -225,10 +225,10 @@ void spiBegin() {
// no interrupts during byte send - about 8µs
cli();
LOOP_L_N(i, 8) {
WRITE(SCK_PIN, LOW);
WRITE(MOSI_PIN, data & 0x80);
WRITE(SD_SCK_PIN, LOW);
WRITE(SD_MOSI_PIN, data & 0x80);
data <<= 1;
WRITE(SCK_PIN, HIGH);
WRITE(SD_SCK_PIN, HIGH);
}
nop; // hold SCK high for a few ns
@@ -236,7 +236,7 @@ void spiBegin() {
nop;
nop;
WRITE(SCK_PIN, LOW);
WRITE(SD_SCK_PIN, LOW);
sei();
}
+1 -1
View File
@@ -59,7 +59,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
+17 -17
View File
@@ -124,7 +124,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(X_MAX_PIN), "X_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(X_MAX_PIN);
#endif
#endif
@@ -132,7 +132,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(X_MIN_PIN), "X_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(X_MIN_PIN);
#endif
#endif
@@ -140,7 +140,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Y_MAX_PIN), "Y_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Y_MAX_PIN);
#endif
#endif
@@ -148,7 +148,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Y_MIN_PIN), "Y_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Y_MIN_PIN);
#endif
#endif
@@ -156,7 +156,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z_MAX_PIN), "Z_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z_MAX_PIN);
#endif
#endif
@@ -164,7 +164,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z_MIN_PIN), "Z_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z_MIN_PIN);
#endif
#endif
@@ -172,7 +172,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(X2_MAX_PIN), "X2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(X2_MAX_PIN);
#endif
#endif
@@ -180,7 +180,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(X2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(X2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(X2_MIN_PIN), "X2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(X2_MIN_PIN);
#endif
#endif
@@ -188,7 +188,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Y2_MAX_PIN), "Y2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Y2_MAX_PIN);
#endif
#endif
@@ -196,7 +196,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Y2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Y2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Y2_MIN_PIN), "Y2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Y2_MIN_PIN);
#endif
#endif
@@ -204,7 +204,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z2_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z2_MAX_PIN), "Z2_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z2_MAX_PIN);
#endif
#endif
@@ -212,7 +212,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z2_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z2_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z2_MIN_PIN), "Z2_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z2_MIN_PIN);
#endif
#endif
@@ -220,7 +220,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z3_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z3_MAX_PIN), "Z3_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z3_MAX_PIN);
#endif
#endif
@@ -228,7 +228,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z3_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z3_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z3_MIN_PIN), "Z3_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z3_MIN_PIN);
#endif
#endif
@@ -236,7 +236,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z4_MAX_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MAX_PIN);
#else
static_assert(digitalPinHasPCICR(Z4_MAX_PIN), "Z4_MAX_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z4_MAX_PIN), "Z4_MAX_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z4_MAX_PIN);
#endif
#endif
@@ -244,7 +244,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z4_MIN_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z4_MIN_PIN);
#else
static_assert(digitalPinHasPCICR(Z4_MIN_PIN), "Z4_MIN_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z4_MIN_PIN), "Z4_MIN_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z4_MIN_PIN);
#endif
#endif
@@ -252,7 +252,7 @@ void setup_endstop_interrupts() {
#if (digitalPinToInterrupt(Z_MIN_PROBE_PIN) != NOT_AN_INTERRUPT)
_ATTACH(Z_MIN_PROBE_PIN);
#else
static_assert(digitalPinHasPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable");
static_assert(digitalPinHasPCICR(Z_MIN_PROBE_PIN), "Z_MIN_PROBE_PIN is not interrupt-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue.");
pciSetup(Z_MIN_PROBE_PIN);
#endif
#endif
+2 -2
View File
@@ -185,8 +185,8 @@ void set_pwm_frequency(const pin_t pin, int f_desired) {
res_temp_phase_correct = rtf / 2;
}
LIMIT(res_temp_fast, 1u, size);
LIMIT(res_temp_phase_correct, 1u, size);
LIMIT(res_temp_fast, 1U, size);
LIMIT(res_temp_phase_correct, 1U, size);
// 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),
+8 -8
View File
@@ -51,15 +51,15 @@
#define AVR_SS_PIN 16
#endif
#ifndef SCK_PIN
#define SCK_PIN AVR_SCK_PIN
#ifndef SD_SCK_PIN
#define SD_SCK_PIN AVR_SCK_PIN
#endif
#ifndef MISO_PIN
#define MISO_PIN AVR_MISO_PIN
#ifndef SD_MISO_PIN
#define SD_MISO_PIN AVR_MISO_PIN
#endif
#ifndef MOSI_PIN
#define MOSI_PIN AVR_MOSI_PIN
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN AVR_MOSI_PIN
#endif
#ifndef SS_PIN
#define SS_PIN AVR_SS_PIN
#ifndef SD_SS_PIN
#define SD_SS_PIN AVR_SS_PIN
#endif
+12 -4
View File
@@ -105,13 +105,15 @@ void sei(); // Enable interrupts
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
inline void HAL_reboot() {} // reboot the board or restart the bootloader
//
// ADC
//
extern uint16_t HAL_adc_result; // result of last ADC conversion
#ifndef analogInputToDigitalPin
#define analogInputToDigitalPin(p) ((p < 12u) ? (p) + 54u : -1)
#define analogInputToDigitalPin(p) ((p < 12U) ? (p) + 54U : -1)
#endif
#define HAL_ANALOG_SELECT(ch)
@@ -151,10 +153,16 @@ void HAL_init();
//
void _delay_ms(const int delay);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
extern "C" {
+44 -44
View File
@@ -69,10 +69,10 @@
// run at ~8 .. ~10Mhz - Tx version (Rx data discarded)
static uint8_t spiTransferTx0(uint8_t bout) { // using Mode 0
uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(MOSI_PIN)) + 0x30; /* SODR of port */
uint32_t MOSI_MASK = PIN_MASK(MOSI_PIN);
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SCK_PIN);
uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(SD_MOSI_PIN)) + 0x30; /* SODR of port */
uint32_t MOSI_MASK = PIN_MASK(SD_MOSI_PIN);
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
uint32_t idx = 0;
/* Negate bout, as the assembler requires a negated value */
@@ -154,9 +154,9 @@
static uint8_t spiTransferRx0(uint8_t) { // using Mode 0
uint32_t bin = 0;
uint32_t work = 0;
uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(MISO_PIN))+0x3C, PIN_SHIFT(MISO_PIN)); /* PDSR of port in bitband area */
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SCK_PIN);
uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(SD_MISO_PIN))+0x3C, PIN_SHIFT(SD_MISO_PIN)); /* PDSR of port in bitband area */
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
/* The software SPI routine */
__asm__ __volatile__(
@@ -225,15 +225,15 @@
static uint8_t spiTransfer1(uint8_t b) { // using Mode 0
int bits = 8;
do {
WRITE(MOSI_PIN, b & 0x80);
WRITE(SD_MOSI_PIN, b & 0x80);
b <<= 1; // little setup time
WRITE(SCK_PIN, HIGH);
WRITE(SD_SCK_PIN, HIGH);
DELAY_NS(125); // 10 cycles @ 84mhz
b |= (READ(MISO_PIN) != 0);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SCK_PIN, LOW);
WRITE(SD_SCK_PIN, LOW);
DELAY_NS(125); // 10 cycles @ 84mhz
} while (--bits);
return b;
@@ -245,15 +245,15 @@
static uint8_t spiTransferX(uint8_t b) { // using Mode 0
int bits = 8;
do {
WRITE(MOSI_PIN, b & 0x80);
WRITE(SD_MOSI_PIN, b & 0x80);
b <<= 1; // little setup time
WRITE(SCK_PIN, HIGH);
WRITE(SD_SCK_PIN, HIGH);
__delay_4cycles(spiDelayCyclesX4);
b |= (READ(MISO_PIN) != 0);
b |= (READ(SD_MISO_PIN) != 0);
WRITE(SCK_PIN, LOW);
WRITE(SD_SCK_PIN, LOW);
__delay_4cycles(spiDelayCyclesX4);
} while (--bits);
return b;
@@ -271,10 +271,10 @@
// Block transfers run at ~8 .. ~10Mhz - Tx version (Rx data discarded)
static void spiTxBlock0(const uint8_t* ptr, uint32_t todo) {
uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(MOSI_PIN)) + 0x30; /* SODR of port */
uint32_t MOSI_MASK = PIN_MASK(MOSI_PIN);
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SCK_PIN);
uint32_t MOSI_PORT_PLUS30 = ((uint32_t) PORT(SD_MOSI_PIN)) + 0x30; /* SODR of port */
uint32_t MOSI_MASK = PIN_MASK(SD_MOSI_PIN);
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
uint32_t work = 0;
uint32_t txval = 0;
@@ -352,9 +352,9 @@
static void spiRxBlock0(uint8_t* ptr, uint32_t todo) {
uint32_t bin = 0;
uint32_t work = 0;
uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(MISO_PIN))+0x3C, PIN_SHIFT(MISO_PIN)); /* PDSR of port in bitband area */
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SCK_PIN);
uint32_t BITBAND_MISO_PORT = BITBAND_ADDRESS( ((uint32_t)PORT(SD_MISO_PIN))+0x3C, PIN_SHIFT(SD_MISO_PIN)); /* PDSR of port in bitband area */
uint32_t SCK_PORT_PLUS30 = ((uint32_t) PORT(SD_SCK_PIN)) + 0x30; /* SODR of port */
uint32_t SCK_MASK = PIN_MASK(SD_SCK_PIN);
/* The software SPI routine */
__asm__ __volatile__(
@@ -442,22 +442,22 @@
static pfnSpiRxBlock spiRxBlock = (pfnSpiRxBlock)spiRxBlockX;
#if MB(ALLIGATOR)
#define _SS_WRITE(S) WRITE(SS_PIN, S)
#define _SS_WRITE(S) WRITE(SD_SS_PIN, S)
#else
#define _SS_WRITE(S) NOOP
#endif
void spiBegin() {
SET_OUTPUT(SS_PIN);
SET_OUTPUT(SD_SS_PIN);
_SS_WRITE(HIGH);
SET_OUTPUT(SCK_PIN);
SET_INPUT(MISO_PIN);
SET_OUTPUT(MOSI_PIN);
SET_OUTPUT(SD_SCK_PIN);
SET_INPUT(SD_MISO_PIN);
SET_OUTPUT(SD_MOSI_PIN);
}
uint8_t spiRec() {
_SS_WRITE(LOW);
WRITE(MOSI_PIN, HIGH); // Output 1s 1
WRITE(SD_MOSI_PIN, HIGH); // Output 1s 1
uint8_t b = spiTransferRx(0xFF);
_SS_WRITE(HIGH);
return b;
@@ -466,7 +466,7 @@
void spiRead(uint8_t* buf, uint16_t nbyte) {
if (nbyte) {
_SS_WRITE(LOW);
WRITE(MOSI_PIN, HIGH); // Output 1s 1
WRITE(SD_MOSI_PIN, HIGH); // Output 1s 1
spiRxBlock(buf, nbyte);
_SS_WRITE(HIGH);
}
@@ -519,8 +519,8 @@
}
_SS_WRITE(HIGH);
WRITE(MOSI_PIN, HIGH);
WRITE(SCK_PIN, LOW);
WRITE(SD_MOSI_PIN, HIGH);
WRITE(SD_SCK_PIN, LOW);
}
/** Begin SPI transaction, set clock, bit order, data mode */
@@ -575,20 +575,20 @@
// Configure SPI pins
PIO_Configure(
g_APinDescription[SCK_PIN].pPort,
g_APinDescription[SCK_PIN].ulPinType,
g_APinDescription[SCK_PIN].ulPin,
g_APinDescription[SCK_PIN].ulPinConfiguration);
g_APinDescription[SD_SCK_PIN].pPort,
g_APinDescription[SD_SCK_PIN].ulPinType,
g_APinDescription[SD_SCK_PIN].ulPin,
g_APinDescription[SD_SCK_PIN].ulPinConfiguration);
PIO_Configure(
g_APinDescription[MOSI_PIN].pPort,
g_APinDescription[MOSI_PIN].ulPinType,
g_APinDescription[MOSI_PIN].ulPin,
g_APinDescription[MOSI_PIN].ulPinConfiguration);
g_APinDescription[SD_MOSI_PIN].pPort,
g_APinDescription[SD_MOSI_PIN].ulPinType,
g_APinDescription[SD_MOSI_PIN].ulPin,
g_APinDescription[SD_MOSI_PIN].ulPinConfiguration);
PIO_Configure(
g_APinDescription[MISO_PIN].pPort,
g_APinDescription[MISO_PIN].ulPinType,
g_APinDescription[MISO_PIN].ulPin,
g_APinDescription[MISO_PIN].ulPinConfiguration);
g_APinDescription[SD_MISO_PIN].pPort,
g_APinDescription[SD_MISO_PIN].ulPinType,
g_APinDescription[SD_MISO_PIN].ulPin,
g_APinDescription[SD_MISO_PIN].ulPinConfiguration);
// set master mode, peripheral select, fault detection
SPI_Configure(SPI0, ID_SPI0, SPI_MR_MSTR | SPI_MR_MODFDIS | SPI_MR_PS);
@@ -606,7 +606,7 @@
WRITE(SPI_EEPROM1_CS, HIGH);
WRITE(SPI_EEPROM2_CS, HIGH);
WRITE(SPI_FLASH_CS, HIGH);
WRITE(SS_PIN, HIGH);
WRITE(SD_SS_PIN, HIGH);
OUT_WRITE(SDSS, LOW);
@@ -64,12 +64,11 @@
#include "../../../MarlinCore.h"
void spiBegin();
void spiInit(uint8_t spiRate);
void spiSend(uint8_t b);
void spiSend(const uint8_t* buf, size_t n);
#ifndef LCD_SPI_SPEED
#define LCD_SPI_SPEED SPI_QUARTER_SPEED
#endif
#include "../../shared/Marduino.h"
#include "../../shared/HAL_SPI.h"
#include "../fastio.h"
void u8g_SetPIOutput_DUE_hw_spi(u8g_t *u8g, uint8_t pin_index) {
@@ -100,11 +99,7 @@ uint8_t u8g_com_HAL_DUE_shared_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va
spiBegin();
#ifndef SPI_SPEED
#define SPI_SPEED SPI_FULL_SPEED // use same SPI speed as SD card
#endif
spiInit(2);
spiInit(LCD_SPI_SPEED);
break;
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
@@ -145,7 +145,7 @@ uint8_t u8g_com_HAL_DUE_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_va
}
#if ENABLED(LIGHTWEIGHT_UI)
#include "../../../lcd/ultralcd.h"
#include "../../../lcd/marlinui.h"
#include "../../shared/HAL_ST7920.h"
#define ST7920_CS_PIN LCD_PINS_RS
@@ -59,9 +59,6 @@
#if HAS_MARLINUI_U8GLIB && DISABLED(U8GLIB_ST7920)
#undef SPI_SPEED
#define SPI_SPEED 2 // About 2 MHz
#include "u8g_com_HAL_DUE_sw_spi_shared.h"
#include "../../shared/Marduino.h"
+2 -2
View File
@@ -60,7 +60,7 @@
#define EEPROMSize 4096
#define PagesPerGroup 128
#define GroupCount 2
#define PageSize 256u
#define PageSize 256U
/* Flash storage */
typedef struct FLASH_SECTOR {
@@ -996,7 +996,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = ee_Read(uint32_t(pos));
if (writing) *value = c;
+1 -1
View File
@@ -62,7 +62,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
+4 -1
View File
@@ -163,6 +163,9 @@
#define SET_INPUT(IO) _SET_INPUT(IO)
// Set pin as input with pullup (wrapper)
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
// Set pin as input with pulldown (substitution)
#define SET_INPUT_PULLDOWN SET_INPUT
// Set pin as output (wrapper) - reads the pin and sets the output to that value
#define SET_OUTPUT(IO) _SET_OUTPUT(IO)
// Set pin as PWM
@@ -477,7 +480,7 @@
#define DIO91_PIN 15
#define DIO91_WPORT PIOB
#if ARDUINO_SAM_ARCHIM
#ifdef ARDUINO_SAM_ARCHIM
#define DIO92_PIN 11
#define DIO92_WPORT PIOC
+1 -1
View File
@@ -154,7 +154,7 @@ void Stepper::digipot_init() {
NVIC_SetPriority(PWM_IRQn, NVIC_EncodePriority(0, 10, 0)); // normal priority for PWM module (can stand some jitter on the Vref signals)
}
void Stepper::digipot_current(const uint8_t driver, const int16_t current) {
void Stepper::set_digipot_current(const uint8_t driver, const int16_t current) {
if (!(PWM->PWM_CH_NUM[0].PWM_CPRD == PWM_PERIOD_US)) digipot_init(); // Init PWM system if needed
+1 -1
View File
@@ -40,7 +40,7 @@
* Usually the hardware SPI pins are only available to the LCD. This makes the DUE hard SPI used at the same time
* as the TMC2130 soft SPI the most common setup.
*/
#define _IS_HW_SPI(P) (defined(TMC_SW_##P) && (TMC_SW_##P == MOSI_PIN || TMC_SW_##P == MISO_PIN || TMC_SW_##P == SCK_PIN))
#define _IS_HW_SPI(P) (defined(TMC_SW_##P) && (TMC_SW_##P == SD_MOSI_PIN || TMC_SW_##P == SD_MISO_PIN || TMC_SW_##P == SD_SCK_PIN))
#if ENABLED(SDSUPPORT) && HAS_DRIVER(TMC2130)
#if ENABLED(TMC_USE_SW_SPI)
+10 -10
View File
@@ -43,22 +43,22 @@
#define SPI_PIN 87
#define SPI_CHAN 1
#endif
#define SCK_PIN 76
#define MISO_PIN 74
#define MOSI_PIN 75
#define SD_SCK_PIN 76
#define SD_MISO_PIN 74
#define SD_MOSI_PIN 75
#else
// defaults
#define DUE_SOFTWARE_SPI
#ifndef SCK_PIN
#define SCK_PIN 52
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 52
#endif
#ifndef MISO_PIN
#define MISO_PIN 50
#ifndef SD_MISO_PIN
#define SD_MISO_PIN 50
#endif
#ifndef MOSI_PIN
#define MOSI_PIN 51
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN 51
#endif
#endif
/* A.28, A.29, B.21, C.26, C.29 */
#define SS_PIN SDSS
#define SD_SS_PIN SDSS
+63 -63
View File
@@ -609,37 +609,37 @@ typedef struct
# define clz(u) ((u) ? __CLZ(u) : 32)
#else
# define clz(u) (((u) == 0) ? 32 : \
((u) & (1ul << 31)) ? 0 : \
((u) & (1ul << 30)) ? 1 : \
((u) & (1ul << 29)) ? 2 : \
((u) & (1ul << 28)) ? 3 : \
((u) & (1ul << 27)) ? 4 : \
((u) & (1ul << 26)) ? 5 : \
((u) & (1ul << 25)) ? 6 : \
((u) & (1ul << 24)) ? 7 : \
((u) & (1ul << 23)) ? 8 : \
((u) & (1ul << 22)) ? 9 : \
((u) & (1ul << 21)) ? 10 : \
((u) & (1ul << 20)) ? 11 : \
((u) & (1ul << 19)) ? 12 : \
((u) & (1ul << 18)) ? 13 : \
((u) & (1ul << 17)) ? 14 : \
((u) & (1ul << 16)) ? 15 : \
((u) & (1ul << 15)) ? 16 : \
((u) & (1ul << 14)) ? 17 : \
((u) & (1ul << 13)) ? 18 : \
((u) & (1ul << 12)) ? 19 : \
((u) & (1ul << 11)) ? 20 : \
((u) & (1ul << 10)) ? 21 : \
((u) & (1ul << 9)) ? 22 : \
((u) & (1ul << 8)) ? 23 : \
((u) & (1ul << 7)) ? 24 : \
((u) & (1ul << 6)) ? 25 : \
((u) & (1ul << 5)) ? 26 : \
((u) & (1ul << 4)) ? 27 : \
((u) & (1ul << 3)) ? 28 : \
((u) & (1ul << 2)) ? 29 : \
((u) & (1ul << 1)) ? 30 : \
((u) & (1UL << 31)) ? 0 : \
((u) & (1UL << 30)) ? 1 : \
((u) & (1UL << 29)) ? 2 : \
((u) & (1UL << 28)) ? 3 : \
((u) & (1UL << 27)) ? 4 : \
((u) & (1UL << 26)) ? 5 : \
((u) & (1UL << 25)) ? 6 : \
((u) & (1UL << 24)) ? 7 : \
((u) & (1UL << 23)) ? 8 : \
((u) & (1UL << 22)) ? 9 : \
((u) & (1UL << 21)) ? 10 : \
((u) & (1UL << 20)) ? 11 : \
((u) & (1UL << 19)) ? 12 : \
((u) & (1UL << 18)) ? 13 : \
((u) & (1UL << 17)) ? 14 : \
((u) & (1UL << 16)) ? 15 : \
((u) & (1UL << 15)) ? 16 : \
((u) & (1UL << 14)) ? 17 : \
((u) & (1UL << 13)) ? 18 : \
((u) & (1UL << 12)) ? 19 : \
((u) & (1UL << 11)) ? 20 : \
((u) & (1UL << 10)) ? 21 : \
((u) & (1UL << 9)) ? 22 : \
((u) & (1UL << 8)) ? 23 : \
((u) & (1UL << 7)) ? 24 : \
((u) & (1UL << 6)) ? 25 : \
((u) & (1UL << 5)) ? 26 : \
((u) & (1UL << 4)) ? 27 : \
((u) & (1UL << 3)) ? 28 : \
((u) & (1UL << 2)) ? 29 : \
((u) & (1UL << 1)) ? 30 : \
31)
#endif
#endif
@@ -654,38 +654,38 @@ typedef struct
#if (defined __GNUC__) || (defined __CC_ARM)
# define ctz(u) ((u) ? __builtin_ctz(u) : 32)
#else
# define ctz(u) ((u) & (1ul << 0) ? 0 : \
(u) & (1ul << 1) ? 1 : \
(u) & (1ul << 2) ? 2 : \
(u) & (1ul << 3) ? 3 : \
(u) & (1ul << 4) ? 4 : \
(u) & (1ul << 5) ? 5 : \
(u) & (1ul << 6) ? 6 : \
(u) & (1ul << 7) ? 7 : \
(u) & (1ul << 8) ? 8 : \
(u) & (1ul << 9) ? 9 : \
(u) & (1ul << 10) ? 10 : \
(u) & (1ul << 11) ? 11 : \
(u) & (1ul << 12) ? 12 : \
(u) & (1ul << 13) ? 13 : \
(u) & (1ul << 14) ? 14 : \
(u) & (1ul << 15) ? 15 : \
(u) & (1ul << 16) ? 16 : \
(u) & (1ul << 17) ? 17 : \
(u) & (1ul << 18) ? 18 : \
(u) & (1ul << 19) ? 19 : \
(u) & (1ul << 20) ? 20 : \
(u) & (1ul << 21) ? 21 : \
(u) & (1ul << 22) ? 22 : \
(u) & (1ul << 23) ? 23 : \
(u) & (1ul << 24) ? 24 : \
(u) & (1ul << 25) ? 25 : \
(u) & (1ul << 26) ? 26 : \
(u) & (1ul << 27) ? 27 : \
(u) & (1ul << 28) ? 28 : \
(u) & (1ul << 29) ? 29 : \
(u) & (1ul << 30) ? 30 : \
(u) & (1ul << 31) ? 31 : \
# define ctz(u) ((u) & (1UL << 0) ? 0 : \
(u) & (1UL << 1) ? 1 : \
(u) & (1UL << 2) ? 2 : \
(u) & (1UL << 3) ? 3 : \
(u) & (1UL << 4) ? 4 : \
(u) & (1UL << 5) ? 5 : \
(u) & (1UL << 6) ? 6 : \
(u) & (1UL << 7) ? 7 : \
(u) & (1UL << 8) ? 8 : \
(u) & (1UL << 9) ? 9 : \
(u) & (1UL << 10) ? 10 : \
(u) & (1UL << 11) ? 11 : \
(u) & (1UL << 12) ? 12 : \
(u) & (1UL << 13) ? 13 : \
(u) & (1UL << 14) ? 14 : \
(u) & (1UL << 15) ? 15 : \
(u) & (1UL << 16) ? 16 : \
(u) & (1UL << 17) ? 17 : \
(u) & (1UL << 18) ? 18 : \
(u) & (1UL << 19) ? 19 : \
(u) & (1UL << 20) ? 20 : \
(u) & (1UL << 21) ? 21 : \
(u) & (1UL << 22) ? 22 : \
(u) & (1UL << 23) ? 23 : \
(u) & (1UL << 24) ? 24 : \
(u) & (1UL << 25) ? 25 : \
(u) & (1UL << 26) ? 26 : \
(u) & (1UL << 27) ? 27 : \
(u) & (1UL << 28) ? 28 : \
(u) & (1UL << 29) ? 29 : \
(u) & (1UL << 30) ? 30 : \
(u) & (1UL << 31) ? 31 : \
32)
#endif
#endif
+2 -2
View File
@@ -84,7 +84,7 @@ Ctrl_status sd_mmc_spi_usb_read_10(uint32_t addr, uint16_t nb_sector) {
card.getSd2Card().readData(sector_buf);
// RAM -> USB
if (!udi_msc_trans_block(true, sector_buf, SD_MMC_BLOCK_SIZE, NULL)) {
if (!udi_msc_trans_block(true, sector_buf, SD_MMC_BLOCK_SIZE, nullptr)) {
card.getSd2Card().readStop();
return CTRL_FAIL;
}
@@ -120,7 +120,7 @@ Ctrl_status sd_mmc_spi_usb_write_10(uint32_t addr, uint16_t nb_sector) {
while (nb_sector--) {
// USB -> RAM
if (!udi_msc_trans_block(false, sector_buf, SD_MMC_BLOCK_SIZE, NULL)) {
if (!udi_msc_trans_block(false, sector_buf, SD_MMC_BLOCK_SIZE, nullptr)) {
card.getSd2Card().writeStop();
return CTRL_FAIL;
}
+1 -1
View File
@@ -36,7 +36,7 @@ void watchdogSetup() {
#if ENABLED(USE_WATCHDOG)
// 4 seconds timeout
uint32_t timeout = 4000;
uint32_t timeout = TERN(WATCHDOG_DURATION_8S, 8000, 4000);
// Calculate timeout value in WDT counter ticks: This assumes
// the slow clock is running at 32.768 kHz watchdog
+1 -1
View File
@@ -86,7 +86,7 @@ volatile int numPWMUsed = 0,
#endif
void HAL_init() { i2s_init(); }
void HAL_init() { TERN_(I2S_STEPPER_STREAM, i2s_init()); }
void HAL_init_board() {
+13 -5
View File
@@ -96,12 +96,20 @@ void HAL_clear_reset_source();
// reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(int delay);
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
void analogWrite(pin_t pin, int value);
@@ -155,14 +163,14 @@ FORCE_INLINE static void DELAY_CYCLES(uint32_t x) {
if (stop >= start) {
// no overflow, so only loop while in between start and stop:
// 0x00000000 -----------------start****stop-- 0xffffffff
// 0x00000000 -----------------start****stop-- 0xFFFFFFFF
while (ccount >= start && ccount < stop) {
__asm__ __volatile__ ( "rsr %0, ccount" : "=a" (ccount) );
}
}
else {
// stop did overflow, so only loop while outside of stop and start:
// 0x00000000 **stop-------------------start** 0xffffffff
// 0x00000000 **stop-------------------start** 0xFFFFFFFF
while (ccount >= start || ccount < stop) {
__asm__ __volatile__ ( "rsr %0, ccount" : "=a" (ccount) );
}
+3 -3
View File
@@ -53,11 +53,11 @@ static SPISettings spiConfig;
// ------------------------
void spiBegin() {
#if !PIN_EXISTS(SS)
#error "SS_PIN not defined!"
#if !PIN_EXISTS(SD_SS)
#error "SD_SS_PIN not defined!"
#endif
OUT_WRITE(SS_PIN, HIGH);
OUT_WRITE(SD_SS_PIN, HIGH);
}
void spiInit(uint8_t spiRate) {
+1 -1
View File
@@ -44,7 +44,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
for (size_t i = 0; i < size; i++) {
uint8_t c = EEPROM.read(pos++);
if (writing) value[i] = c;
+3
View File
@@ -52,6 +52,9 @@
// Set pin as input with pullup wrapper
#define SET_INPUT_PULLUP(IO) do{ _SET_INPUT(IO); _PULLUP(IO, HIGH); }while(0)
// Set pin as input with pulldown (substitution)
#define SET_INPUT_PULLDOWN SET_INPUT
// Set pin as output wrapper
#define SET_OUTPUT(IO) do{ _SET_OUTPUT(IO); }while(0)
+2 -2
View File
@@ -184,7 +184,7 @@ int i2s_init() {
// Allocate the array of pointers to the buffers
dma.buffers = (uint32_t **)malloc(sizeof(uint32_t*) * DMA_BUF_COUNT);
if (dma.buffers == nullptr) return -1;
if (!dma.buffers) return -1;
// Allocate each buffer that can be used by the DMA controller
for (int buf_idx = 0; buf_idx < DMA_BUF_COUNT; buf_idx++) {
@@ -194,7 +194,7 @@ int i2s_init() {
// Allocate the array of DMA descriptors
dma.desc = (lldesc_t**) malloc(sizeof(lldesc_t*) * DMA_BUF_COUNT);
if (dma.desc == nullptr) return -1;
if (!dma.desc) return -1;
// Allocate each DMA descriptor that will be used by the DMA controller
for (int buf_idx = 0; buf_idx < DMA_BUF_COUNT; buf_idx++) {
+4 -4
View File
@@ -18,7 +18,7 @@
*/
#pragma once
#define SS_PIN SDSS
#define SCK_PIN 18
#define MISO_PIN 19
#define MOSI_PIN 23
#define SD_SS_PIN SDSS
#define SD_SCK_PIN 18
#define SD_MISO_PIN 19
#define SD_MOSI_PIN 23
+5 -9
View File
@@ -24,15 +24,9 @@
#include <stdint.h>
#include <driver/timer.h>
// Includes needed to get I2S_STEPPER_STREAM. Note that pins.h
// is included in case this header is being included early.
#include "../../inc/MarlinConfig.h"
#include "../../pins/pins.h"
// ------------------------
// Defines
// ------------------------
//
#define FORCE_INLINE __attribute__((always_inline)) inline
typedef uint64_t hal_timer_t;
@@ -97,9 +91,11 @@ typedef uint64_t hal_timer_t;
#define HAL_PWM_TIMER_ISR() extern "C" void pwmTC_Handler()
#endif
extern "C" void tempTC_Handler();
extern "C" void stepTC_Handler();
extern "C" void pwmTC_Handler();
extern "C" {
void tempTC_Handler();
void stepTC_Handler();
void pwmTC_Handler();
}
// ------------------------
// Types
+2
View File
@@ -25,6 +25,8 @@
#if ENABLED(USE_WATCHDOG)
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
#include "watchdog.h"
void watchdogSetup() {
+5 -1
View File
@@ -23,6 +23,10 @@
#include "platforms.h"
#ifndef GCC_VERSION
#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif
#include HAL_PATH(.,HAL.h)
#ifdef SERIAL_PORT_2
@@ -34,7 +38,7 @@
#define HAL_ADC_RANGE _BV(HAL_ADC_RESOLUTION)
#ifndef I2C_ADDRESS
#define I2C_ADDRESS(A) (A)
#define I2C_ADDRESS(A) uint8_t(A)
#endif
// Needed for AVR sprintf_P PROGMEM extension
+6 -11
View File
@@ -27,18 +27,13 @@
HalSerial usb_serial;
// U8glib required functions
extern "C" void u8g_xMicroDelay(uint16_t val) {
DELAY_US(val);
}
extern "C" void u8g_MicroDelay() {
u8g_xMicroDelay(1);
}
extern "C" void u8g_10MicroDelay() {
u8g_xMicroDelay(10);
}
extern "C" void u8g_Delay(uint16_t val) {
delay(val);
extern "C" {
void u8g_xMicroDelay(uint16_t val) { DELAY_US(val); }
void u8g_MicroDelay() { u8g_xMicroDelay(1); }
void u8g_10MicroDelay() { u8g_xMicroDelay(10); }
void u8g_Delay(uint16_t val) { delay(val); }
}
//************************//
// return free heap space
+12 -4
View File
@@ -23,7 +23,7 @@
#define CPU_32_BIT
#define F_CPU 100000000
#define F_CPU 100000000UL
#define SystemCoreClock F_CPU
#include <iostream>
#include <stdint.h>
@@ -79,10 +79,16 @@ extern HalSerial usb_serial;
inline void HAL_init() {}
// Utility functions
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
// ADC
#define HAL_ADC_VREF 5.0
@@ -101,6 +107,8 @@ uint16_t HAL_adc_get_result();
inline void HAL_clear_reset_source(void) {}
inline uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; }
inline void HAL_reboot() {} // reboot the board or restart the bootloader
/* ---------------- Delay in cycles */
FORCE_INLINE static void DELAY_CYCLES(uint64_t x) {
Clock::delayCycles(x);
+3 -3
View File
@@ -40,7 +40,7 @@ size_t PersistentStore::capacity() { return MARLIN_EEPROM_SIZE; }
bool PersistentStore::access_start() {
const char eeprom_erase_value = 0xFF;
FILE * eeprom_file = fopen(filename, "rb");
if (eeprom_file == nullptr) return false;
if (!eeprom_file) return false;
fseek(eeprom_file, 0L, SEEK_END);
std::size_t file_size = ftell(eeprom_file);
@@ -59,7 +59,7 @@ bool PersistentStore::access_start() {
bool PersistentStore::access_finish() {
FILE * eeprom_file = fopen(filename, "wb");
if (eeprom_file == nullptr) return false;
if (!eeprom_file) return false;
fwrite(buffer, sizeof(uint8_t), sizeof(buffer), eeprom_file);
fclose(eeprom_file);
return true;
@@ -78,7 +78,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return (bytes_written != size); // return true for any error
}
bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
std::size_t bytes_read = 0;
if (writing) {
for (std::size_t i = 0; i < size; i++) {
+6 -6
View File
@@ -86,10 +86,10 @@ public:
GpioEvent::Type evt_type = value > 1 ? GpioEvent::SET_VALUE : value > pin_map[pin].value ? GpioEvent::RISE : value < pin_map[pin].value ? GpioEvent::FALL : GpioEvent::NOP;
pin_map[pin].value = value;
GpioEvent evt(Clock::nanos(), pin, evt_type);
if (pin_map[pin].cb != nullptr) {
if (pin_map[pin].cb) {
pin_map[pin].cb->interrupt(evt);
}
if (Gpio::logger != nullptr) Gpio::logger->log(evt);
if (Gpio::logger) Gpio::logger->log(evt);
}
static uint16_t get(pin_type pin) {
@@ -105,8 +105,8 @@ public:
if (!valid_pin(pin)) return;
pin_map[pin].mode = value;
GpioEvent evt(Clock::nanos(), pin, GpioEvent::Type::SETM);
if (pin_map[pin].cb != nullptr) pin_map[pin].cb->interrupt(evt);
if (Gpio::logger != nullptr) Gpio::logger->log(evt);
if (pin_map[pin].cb) pin_map[pin].cb->interrupt(evt);
if (Gpio::logger) Gpio::logger->log(evt);
}
static uint8_t getMode(pin_type pin) {
@@ -118,8 +118,8 @@ public:
if (!valid_pin(pin)) return;
pin_map[pin].dir = value;
GpioEvent evt(Clock::nanos(), pin, GpioEvent::Type::SETD);
if (pin_map[pin].cb != nullptr) pin_map[pin].cb->interrupt(evt);
if (Gpio::logger != nullptr) Gpio::logger->log(evt);
if (pin_map[pin].cb) pin_map[pin].cb->interrupt(evt);
if (Gpio::logger) Gpio::logger->log(evt);
}
static uint8_t getDir(pin_type pin) {
+6 -5
View File
@@ -67,8 +67,11 @@ void cli(); // Disable
void sei(); // Enable
void attachInterrupt(uint32_t pin, void (*callback)(), uint32_t mode);
void detachInterrupt(uint32_t pin);
extern "C" void GpioEnableInt(uint32_t port, uint32_t pin, uint32_t mode);
extern "C" void GpioDisableInt(uint32_t port, uint32_t pin);
extern "C" {
void GpioEnableInt(uint32_t port, uint32_t pin, uint32_t mode);
void GpioDisableInt(uint32_t port, uint32_t pin);
}
// Program Memory
#define pgm_read_ptr(addr) (*((void**)(addr)))
@@ -92,9 +95,7 @@ using std::memcpy;
#define strlen_P strlen
// Time functions
extern "C" {
void delay(const int milis);
}
extern "C" void delay(const int milis);
void _delay_ms(const int delay);
void delayMicroseconds(unsigned long);
uint32_t millis();
+11 -12
View File
@@ -19,22 +19,23 @@
*/
#ifdef __PLAT_LINUX__
extern void setup();
extern void loop();
#include <thread>
#include <iostream>
#include <fstream>
//#define GPIO_LOGGING // Full GPIO and Positional Logging
#include "../../inc/MarlinConfig.h"
#include <stdio.h>
#include <stdarg.h>
#include "../shared/Delay.h"
#include "hardware/IOLoggerCSV.h"
#include "hardware/Heater.h"
#include "hardware/LinearAxis.h"
#include <stdio.h>
#include <stdarg.h>
#include <thread>
#include <iostream>
#include <fstream>
extern void setup();
extern void loop();
// simple stdout / stdin implementation for fake serial port
void write_serial_thread() {
for (;;) {
@@ -64,8 +65,6 @@ void simulation_loop() {
LinearAxis z_axis(Z_ENABLE_PIN, Z_DIR_PIN, Z_STEP_PIN, Z_MIN_PIN, Z_MAX_PIN);
LinearAxis extruder0(E0_ENABLE_PIN, E0_DIR_PIN, E0_STEP_PIN, P_NC, P_NC);
//#define GPIO_LOGGING // Full GPIO and Positional Logging
#ifdef GPIO_LOGGING
IOLoggerCSV logger("all_gpio_log.csv");
Gpio::attachLogger(&logger);
@@ -88,7 +87,7 @@ void simulation_loop() {
#ifdef GPIO_LOGGING
if (x_axis.position != x || y_axis.position != y || z_axis.position != z) {
uint64_t update = MAX3(x_axis.last_update, y_axis.last_update, z_axis.last_update);
uint64_t update = _MAX(x_axis.last_update, y_axis.last_update, z_axis.last_update);
position_log << update << ", " << x_axis.position << ", " << y_axis.position << ", " << z_axis.position << std::endl;
position_log.flush();
x = x_axis.position;
+6 -6
View File
@@ -26,15 +26,15 @@
*/
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define pwm_details(pin) pin = pin // do nothing // print PWM details
#define pwm_status(pin) false //Print a pin's PWM status. Return true if it's currently a PWM pin.
#define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0)
#define pwm_details(pin) NOOP // (do nothing)
#define pwm_status(pin) false // Print a pin's PWM status. Return true if it's currently a PWM pin.
#define IS_ANALOG(P) (DIGITAL_PIN_TO_ANALOG_PIN(P) >= 0 ? 1 : 0)
#define digitalRead_mod(p) digitalRead(p)
#define PRINT_PORT(p)
#define GET_ARRAY_PIN(p) pin_array[p].pin
#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 MULTI_NAME_PAD 16 // space needed to be pretty if not first name assigned to a pin
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3d "), p); 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
constexpr int8_t ADC_pin_mode(pin_t pin) {
+17 -16
View File
@@ -24,31 +24,32 @@
#include "../../core/macros.h"
#include "../../inc/MarlinConfigPre.h"
#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SCK_PIN || LCD_PINS_ENABLE == MOSI_PIN || DOGLCD_SCK == SCK_PIN || DOGLCD_MOSI == MOSI_PIN)
#if BOTH(HAS_MARLINUI_U8GLIB, SDSUPPORT) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN)
#define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
// spiBeginTransaction.
#endif
/** onboard SD card */
//#define SCK_PIN P0_07
//#define MISO_PIN P0_08
//#define MOSI_PIN P0_09
//#define SS_PIN P0_06
/** external */
#ifndef SCK_PIN
#define SCK_PIN 50
// Onboard SD
//#define SD_SCK_PIN P0_07
//#define SD_MISO_PIN P0_08
//#define SD_MOSI_PIN P0_09
//#define SD_SS_PIN P0_06
// External SD
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 50
#endif
#ifndef MISO_PIN
#define MISO_PIN 51
#ifndef SD_MISO_PIN
#define SD_MISO_PIN 51
#endif
#ifndef MOSI_PIN
#define MOSI_PIN 52
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN 52
#endif
#ifndef SS_PIN
#define SS_PIN 53
#ifndef SD_SS_PIN
#define SD_SS_PIN 53
#endif
#ifndef SDSS
#define SDSS SS_PIN
#define SDSS SD_SS_PIN
#endif
+2
View File
@@ -27,6 +27,8 @@
#include "watchdog.h"
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
void watchdog_init() {}
void HAL_watchdog_refresh() {}
-2
View File
@@ -21,7 +21,5 @@
*/
#pragma once
#define WDT_TIMEOUT 4000000 // 4 second timeout
void watchdog_init();
void HAL_watchdog_refresh();
+6 -11
View File
@@ -32,18 +32,13 @@
uint32_t HAL_adc_reading = 0;
// U8glib required functions
extern "C" void u8g_xMicroDelay(uint16_t val) {
DELAY_US(val);
}
extern "C" void u8g_MicroDelay() {
u8g_xMicroDelay(1);
}
extern "C" void u8g_10MicroDelay() {
u8g_xMicroDelay(10);
}
extern "C" void u8g_Delay(uint16_t val) {
delay(val);
extern "C" {
void u8g_xMicroDelay(uint16_t val) { DELAY_US(val); }
void u8g_MicroDelay() { u8g_xMicroDelay(1); }
void u8g_10MicroDelay() { u8g_xMicroDelay(10); }
void u8g_Delay(uint16_t val) { delay(val); }
}
//************************//
// return free heap space
+19 -6
View File
@@ -47,9 +47,6 @@ extern "C" volatile uint32_t _millis;
#include <pinmapping.h>
#include <CDCSerial.h>
// i2c uses 8-bit shifted address
#define I2C_ADDRESS(A) uint8_t((A) << 1)
//
// Default graphical display delays
//
@@ -107,10 +104,16 @@ extern "C" volatile uint32_t _millis;
//
// Utility functions
//
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
//
// ADC API
@@ -200,7 +203,17 @@ void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size=255,
void HAL_clear_reset_source(void);
uint8_t HAL_get_reset_source(void);
inline void HAL_reboot() {} // reboot the board or restart the bootloader
// Add strcmp_P if missing
#ifndef strcmp_P
#define strcmp_P(a, b) strcmp((a), (b))
#endif
#ifndef strcat_P
#define strcat_P(a, b) strcat((a), (b))
#endif
#ifndef strcpy_P
#define strcpy_P(a, b) strcpy((a), (b))
#endif
+49 -42
View File
@@ -55,27 +55,33 @@
#include <lpc17xx_pinsel.h>
#include <lpc17xx_clkpwr.h>
#include "../shared/HAL_SPI.h"
// ------------------------
// Public functions
// ------------------------
#if ENABLED(LPC_SOFTWARE_SPI)
#include <SoftwareSPI.h>
// Software SPI
static uint8_t SPI_speed = 0;
#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 spiTransfer(uint8_t b) {
return swSpiTransfer(b, SPI_speed, SCK_PIN, MISO_PIN, MOSI_PIN);
return swSpiTransfer(b, SPI_speed, SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN);
}
void spiBegin() {
swSpiBegin(SCK_PIN, MISO_PIN, MOSI_PIN);
swSpiBegin(SD_SCK_PIN, SD_MISO_PIN, SD_MOSI_PIN);
}
void spiInit(uint8_t spiRate) {
SPI_speed = swSpiInit(spiRate, SCK_PIN, MOSI_PIN);
SPI_speed = swSpiInit(spiRate, SD_SCK_PIN, SD_MOSI_PIN);
}
uint8_t spiRec() { return spiTransfer(0xFF); }
@@ -100,14 +106,20 @@
#else
void spiBegin() { // setup SCK, MOSI & MISO pins for SSP0
spiInit(SPI_SPEED);
}
#ifndef HAL_SPI_SPEED
#ifdef SD_SPI_SPEED
#define HAL_SPI_SPEED SD_SPI_SPEED
#else
#define HAL_SPI_SPEED SPI_FULL_SPEED
#endif
#endif
void spiBegin() { spiInit(HAL_SPI_SPEED); } // Set up SCK, MOSI & MISO pins for SSP0
void spiInit(uint8_t spiRate) {
#if MISO_PIN == BOARD_SPI1_MISO_PIN
#if SD_MISO_PIN == BOARD_SPI1_MISO_PIN
SPI.setModule(1);
#elif MISO_PIN == BOARD_SPI2_MISO_PIN
#elif SD_MISO_PIN == BOARD_SPI2_MISO_PIN
SPI.setModule(2);
#endif
SPI.setDataSize(DATA_SIZE_8BIT);
@@ -127,11 +139,9 @@
for (uint16_t i = 0; i < nbyte; i++) doio(buf[i]);
}
void spiSend(uint32_t chan, byte b) {
}
void spiSend(uint32_t chan, byte b) {}
void spiSend(uint32_t chan, const uint8_t* buf, size_t nbyte) {
}
void spiSend(uint32_t chan, const uint8_t* buf, size_t nbyte) {}
// Read single byte from SPI
uint8_t spiRec() { return doio(0xFF); }
@@ -143,9 +153,7 @@
for (uint16_t i = 0; i < nbyte; i++) buf[i] = doio(0xFF);
}
uint8_t spiTransfer(uint8_t b) {
return doio(b);
}
uint8_t spiTransfer(uint8_t b) { return doio(b); }
// Write from buffer to SPI
void spiSendBlock(uint8_t token, const uint8_t* buf) {
@@ -154,10 +162,9 @@
(void)spiTransfer(buf[i]);
}
/** Begin SPI transaction, set clock, bit order, data mode */
// Begin SPI transaction, set clock, bit order, data mode
void spiBeginTransaction(uint32_t spiClock, uint8_t bitOrder, uint8_t dataMode) {
// TODO: to be implemented
// TODO: Implement this method
}
#endif // LPC_SOFTWARE_SPI
@@ -201,6 +208,15 @@ SPIClass::SPIClass(uint8_t device) {
GPDMA_Init();
}
SPIClass::SPIClass(pin_t mosi, pin_t miso, pin_t sclk, pin_t ssel) {
#if BOARD_NR_SPI >= 1
if (mosi == BOARD_SPI1_MOSI_PIN) SPIClass(1);
#endif
#if BOARD_NR_SPI >= 2
if (mosi == BOARD_SPI2_MOSI_PIN) SPIClass(2);
#endif
}
void SPIClass::begin() {
// Init the SPI pins in the first begin call
if ((_currentSetting->spi_d == LPC_SSP0 && spiInitialised[0] == false) ||
@@ -263,8 +279,9 @@ uint16_t SPIClass::transfer16(const uint16_t data) {
}
void SPIClass::end() {
// SSP_Cmd(_currentSetting->spi_d, DISABLE); // stop device or SSP_DeInit?
SSP_DeInit(_currentSetting->spi_d);
// Neither is needed for Marlin
//SSP_Cmd(_currentSetting->spi_d, DISABLE);
//SSP_DeInit(_currentSetting->spi_d);
}
void SPIClass::send(uint8_t data) {
@@ -330,25 +347,15 @@ void SPIClass::read(uint8_t *buf, uint32_t len) {
for (uint16_t i = 0; i < len; i++) buf[i] = transfer(0xFF);
}
void SPIClass::setClock(uint32_t clock) {
_currentSetting->clock = clock;
}
void SPIClass::setClock(uint32_t clock) { _currentSetting->clock = clock; }
void SPIClass::setModule(uint8_t device) {
_currentSetting = &_settings[device - 1];// SPI channels are called 1 2 and 3 but the array is zero indexed
}
void SPIClass::setModule(uint8_t device) { _currentSetting = &_settings[device - 1]; } // SPI channels are called 1, 2, and 3 but the array is zero-indexed
void SPIClass::setBitOrder(uint8_t bitOrder) {
_currentSetting->bitOrder = bitOrder;
}
void SPIClass::setBitOrder(uint8_t bitOrder) { _currentSetting->bitOrder = bitOrder; }
void SPIClass::setDataMode(uint8_t dataMode) {
_currentSetting->dataMode = dataMode;
}
void SPIClass::setDataMode(uint8_t dataMode) { _currentSetting->dataMode = dataMode; }
void SPIClass::setDataSize(uint32_t ds) {
_currentSetting->dataSize = ds;
}
void SPIClass::setDataSize(uint32_t dataSize) { _currentSetting->dataSize = dataSize; }
/**
* Set up/tear down
@@ -356,8 +363,8 @@ void SPIClass::setDataSize(uint32_t ds) {
void SPIClass::updateSettings() {
//SSP_DeInit(_currentSetting->spi_d); //todo: need force de init?!
// divide PCLK by 2 for SSP0
CLKPWR_SetPCLKDiv(_currentSetting->spi_d == LPC_SSP0 ? CLKPWR_PCLKSEL_SSP0 : CLKPWR_PCLKSEL_SSP1, CLKPWR_PCLKSEL_CCLK_DIV_2);
// Divide PCLK by 2 for SSP0
//CLKPWR_SetPCLKDiv(_currentSetting->spi_d == LPC_SSP0 ? CLKPWR_PCLKSEL_SSP0 : CLKPWR_PCLKSEL_SSP1, CLKPWR_PCLKSEL_CCLK_DIV_2);
SSP_CFG_Type HW_SPI_init; // data structure to hold init values
SSP_ConfigStructInit(&HW_SPI_init); // set values for SPI mode
@@ -396,9 +403,9 @@ void SPIClass::updateSettings() {
SSP_Init(_currentSetting->spi_d, &HW_SPI_init); // puts the values into the proper bits in the SSP0 registers
}
#if MISO_PIN == BOARD_SPI1_MISO_PIN
#if SD_MISO_PIN == BOARD_SPI1_MISO_PIN
SPIClass SPI(1);
#elif MISO_PIN == BOARD_SPI2_MISO_PIN
#elif SD_MISO_PIN == BOARD_SPI2_MISO_PIN
SPIClass SPI(2);
#endif
+45
View File
@@ -0,0 +1,45 @@
/**
* 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
* (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>
/**
* Marlin currently requires 3 SPI classes:
*
* SPIClass:
* This class is normally provided by frameworks and has a semi-default interface.
* This is needed because some libraries reference it globally.
*
* SPISettings:
* Container for SPI configs for SPIClass. As above, libraries may reference it globally.
*
* These two classes are often provided by frameworks so we cannot extend them to add
* useful methods for Marlin.
*
* MarlinSPI:
* Provides the default SPIClass interface plus some Marlin goodies such as a simplified
* interface for SPI DMA transfer.
*
*/
using MarlinSPI = SPIClass;
+4 -15
View File
@@ -26,30 +26,19 @@
#if USING_SERIAL_0
MarlinSerial MSerial(LPC_UART0);
extern "C" void UART0_IRQHandler() {
MSerial.IRQHandler();
}
extern "C" void UART0_IRQHandler() { MSerial.IRQHandler(); }
#endif
#if USING_SERIAL_1
MarlinSerial MSerial1((LPC_UART_TypeDef *) LPC_UART1);
extern "C" void UART1_IRQHandler() {
MSerial1.IRQHandler();
}
extern "C" void UART1_IRQHandler() { MSerial1.IRQHandler(); }
#endif
#if USING_SERIAL_2
MarlinSerial MSerial2(LPC_UART2);
extern "C" void UART2_IRQHandler() {
MSerial2.IRQHandler();
}
extern "C" void UART2_IRQHandler() { MSerial2.IRQHandler(); }
#endif
#if USING_SERIAL_3
MarlinSerial MSerial3(LPC_UART3);
extern "C" void UART3_IRQHandler() {
MSerial3.IRQHandler();
}
extern "C" void UART3_IRQHandler() { MSerial3.IRQHandler(); }
#endif
#endif // TARGET_LPC1768
+1 -1
View File
@@ -119,7 +119,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false; // return true for any error
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
const uint8_t * const buff = writing ? &value[0] : &ram_eeprom[pos];
if (writing) for (size_t i = 0; i < size; i++) value[i] = ram_eeprom[pos + i];
crc16(crc, buff, size);
+1 -1
View File
@@ -143,7 +143,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return bytes_written != size; // return true for any error
}
bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
if (!eeprom_file_open) return true;
UINT bytes_read = 0;
FRESULT s;
+1 -1
View File
@@ -64,7 +64,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
// Read from external EEPROM
const uint8_t c = eeprom_read_byte((uint8_t*)pos);
+13 -13
View File
@@ -46,79 +46,79 @@ void setup_endstop_interrupts() {
#if HAS_X_MAX
#if !LPC1768_PIN_INTERRUPT_M(X_MAX_PIN)
#error "X_MAX_PIN is not INTERRUPT-capable."
#error "X_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(X_MAX_PIN);
#endif
#if HAS_X_MIN
#if !LPC1768_PIN_INTERRUPT_M(X_MIN_PIN)
#error "X_MIN_PIN is not INTERRUPT-capable."
#error "X_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(X_MIN_PIN);
#endif
#if HAS_Y_MAX
#if !LPC1768_PIN_INTERRUPT_M(Y_MAX_PIN)
#error "Y_MAX_PIN is not INTERRUPT-capable."
#error "Y_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Y_MAX_PIN);
#endif
#if HAS_Y_MIN
#if !LPC1768_PIN_INTERRUPT_M(Y_MIN_PIN)
#error "Y_MIN_PIN is not INTERRUPT-capable."
#error "Y_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Y_MIN_PIN);
#endif
#if HAS_Z_MAX
#if !LPC1768_PIN_INTERRUPT_M(Z_MAX_PIN)
#error "Z_MAX_PIN is not INTERRUPT-capable."
#error "Z_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z_MAX_PIN);
#endif
#if HAS_Z_MIN
#if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PIN)
#error "Z_MIN_PIN is not INTERRUPT-capable."
#error "Z_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z_MIN_PIN);
#endif
#if HAS_Z2_MAX
#if !LPC1768_PIN_INTERRUPT_M(Z2_MAX_PIN)
#error "Z2_MAX_PIN is not INTERRUPT-capable."
#error "Z2_MAX_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z2_MAX_PIN);
#endif
#if HAS_Z2_MIN
#if !LPC1768_PIN_INTERRUPT_M(Z2_MIN_PIN)
#error "Z2_MIN_PIN is not INTERRUPT-capable."
#error "Z2_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z2_MIN_PIN);
#endif
#if HAS_Z3_MAX
#if !LPC1768_PIN_INTERRUPT_M(Z3_MAX_PIN)
#error "Z3_MIN_PIN is not INTERRUPT-capable."
#error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z3_MAX_PIN);
#endif
#if HAS_Z3_MIN
#if !LPC1768_PIN_INTERRUPT_M(Z3_MIN_PIN)
#error "Z3_MIN_PIN is not INTERRUPT-capable."
#error "Z3_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z3_MIN_PIN);
#endif
#if HAS_Z4_MAX
#if !LPC1768_PIN_INTERRUPT_M(Z4_MAX_PIN)
#error "Z4_MIN_PIN is not INTERRUPT-capable."
#error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z4_MAX_PIN);
#endif
#if HAS_Z4_MIN
#if !LPC1768_PIN_INTERRUPT_M(Z4_MIN_PIN)
#error "Z4_MIN_PIN is not INTERRUPT-capable."
#error "Z4_MIN_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z4_MIN_PIN);
#endif
#if HAS_Z_MIN_PROBE_PIN
#if !LPC1768_PIN_INTERRUPT_M(Z_MIN_PROBE_PIN)
#error "Z_MIN_PROBE_PIN is not INTERRUPT-capable."
#error "Z_MIN_PROBE_PIN is not INTERRUPT-capable. Disable ENDSTOP_INTERRUPTS_FEATURE to continue."
#endif
_ATTACH(Z_MIN_PROBE_PIN);
#endif
@@ -24,10 +24,3 @@
#if HAS_FSMC_TFT
#error "Sorry! FSMC TFT displays are not current available for HAL/LPC1768."
#endif
// This emulated DOGM has 'touch/xpt2046', not 'tft/xpt2046'
#if ENABLED(TOUCH_SCREEN) && !HAS_GRAPHICAL_TFT
#undef TOUCH_SCREEN
#undef TOUCH_SCREEN_CALIBRATION
#define HAS_TOUCH_XPT2046 1
#endif
@@ -20,3 +20,7 @@
*
*/
#pragma once
#if DISABLED(NO_SD_HOST_DRIVE)
#define HAS_SD_HOST_DRIVE 1
#endif
+9 -9
View File
@@ -24,7 +24,7 @@
#if PIO_PLATFORM_VERSION < 1001
#error "nxplpc-arduino-lpc176x package is out of date, Please update the PlatformIO platforms, frameworks and libraries. You may need to remove the platform and let it reinstall automatically."
#endif
#if PIO_FRAMEWORK_VERSION < 2005
#if PIO_FRAMEWORK_VERSION < 2006
#error "framework-arduino-lpc176x package is out of date, Please update the PlatformIO platforms, frameworks and libraries."
#endif
@@ -72,7 +72,7 @@ static_assert(!(NUM_SERVOS && ENABLED(FAST_PWM_FAN)), "BLTOUCH and Servos are in
//#endif
#if MB(RAMPS_14_RE_ARM_EFB, RAMPS_14_RE_ARM_EEB, RAMPS_14_RE_ARM_EFF, RAMPS_14_RE_ARM_EEF, RAMPS_14_RE_ARM_SF)
#if ENABLED(REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER) && HAS_DRIVER(TMC2130) && DISABLED(TMC_USE_SW_SPI)
#if IS_RRD_FG_SC && HAS_DRIVER(TMC2130) && DISABLED(TMC_USE_SW_SPI)
#error "Re-ARM with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER and TMC2130 requires TMC_USE_SW_SPI."
#endif
#endif
@@ -97,8 +97,8 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#define IS_RX0(P) (P == P0_03)
#if IS_TX0(TMC_SW_MISO) || IS_RX0(TMC_SW_MOSI)
#error "Serial port pins (0) conflict with Trinamic SPI pins!"
#elif ENABLED(MK2_MULTIPLEXER) && (IS_TX0(E_MUX1_PIN) || IS_RX0(E_MUX0_PIN))
#error "Serial port pins (0) conflict with MK2 multiplexer pins!"
#elif HAS_PRUSA_MMU1 && (IS_TX0(E_MUX1_PIN) || IS_RX0(E_MUX0_PIN))
#error "Serial port pins (0) conflict with Multi-Material-Unit multiplexer pins!"
#elif (AXIS_HAS_SPI(X) && IS_TX0(X_CS_PIN)) || (AXIS_HAS_SPI(Y) && IS_RX0(Y_CS_PIN))
#error "Serial port pins (0) conflict with X/Y axis SPI pins!"
#endif
@@ -116,8 +116,8 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#elif HAS_WIRED_LCD
#if IS_TX1(BTN_EN2) || IS_RX1(BTN_EN1)
#error "Serial port pins (1) conflict with Encoder Buttons!"
#elif ANY_TX(1, SCK_PIN, LCD_PINS_D4, DOGLCD_SCK, LCD_RESET_PIN, LCD_PINS_RS, SHIFT_CLK) \
|| ANY_RX(1, LCD_SDSS, LCD_PINS_RS, MISO_PIN, DOGLCD_A0, SS_PIN, LCD_SDSS, DOGLCD_CS, LCD_RESET_PIN, LCD_BACKLIGHT_PIN)
#elif ANY_TX(1, SD_SCK_PIN, LCD_PINS_D4, DOGLCD_SCK, LCD_RESET_PIN, LCD_PINS_RS, SHIFT_CLK) \
|| ANY_RX(1, LCD_SDSS, LCD_PINS_RS, SD_MISO_PIN, DOGLCD_A0, SD_SS_PIN, LCD_SDSS, DOGLCD_CS, LCD_RESET_PIN, LCD_BACKLIGHT_PIN)
#error "Serial port pins (1) conflict with LCD pins!"
#endif
#endif
@@ -191,7 +191,7 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
//
// Flag any i2c pin conflicts
//
#if ANY(HAS_I2C_DIGIPOT, DAC_STEPPER_CURRENT, EXPERIMENTAL_I2CBUS, I2C_POSITION_ENCODERS, PCA9632, I2C_EEPROM)
#if ANY(HAS_MOTOR_CURRENT_I2C, HAS_MOTOR_CURRENT_DAC, EXPERIMENTAL_I2CBUS, I2C_POSITION_ENCODERS, PCA9632, I2C_EEPROM)
#define USEDI2CDEV_M 1 // <Arduino>/Wire.cpp
#if USEDI2CDEV_M == 0 // P0_27 [D57] (AUX-1) .......... P0_28 [D58] (AUX-1)
@@ -205,8 +205,8 @@ static_assert(DISABLED(BAUD_RATE_GCODE), "BAUD_RATE_GCODE is not yet supported o
#error "SDA0 overlaps with BEEPER_PIN!"
#elif IS_SCL0(BTN_ENC)
#error "SCL0 overlaps with Encoder Button!"
#elif IS_SCL0(SS_PIN)
#error "SCL0 overlaps with SS_PIN!"
#elif IS_SCL0(SD_SS_PIN)
#error "SCL0 overlaps with SD_SS_PIN!"
#elif IS_SCL0(LCD_SDSS)
#error "SCL0 overlaps with LCD_SDSS!"
#endif
+13 -7
View File
@@ -37,13 +37,14 @@
#define DATA_SIZE_8BIT SSP_DATABIT_8
#define DATA_SIZE_16BIT SSP_DATABIT_16
#define SPI_CLOCK_DIV2 8333333 //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
#define SPI_CLOCK_DIV4 4166667 //(SCR: 5) desired: 4,000,000 actual: 4,166,667 +4.2% SPI_HALF_SPEED
#define SPI_CLOCK_DIV8 2083333 //(SCR: 11) desired: 2,000,000 actual: 2,083,333 +4.2% SPI_QUARTER_SPEED
#define SPI_CLOCK_DIV16 1000000 //(SCR: 24) desired: 1,000,000 actual: 1,000,000 SPI_EIGHTH_SPEED
#define SPI_CLOCK_DIV32 500000 //(SCR: 49) desired: 500,000 actual: 500,000 SPI_SPEED_5
#define SPI_CLOCK_DIV64 250000 //(SCR: 99) desired: 250,000 actual: 250,000 SPI_SPEED_6
#define SPI_CLOCK_DIV128 125000 //(SCR:199) desired: 125,000 actual: 125,000 Default from HAL.h
#define SPI_CLOCK_MAX_TFT 30000000UL
#define SPI_CLOCK_DIV2 8333333 //(SCR: 2) desired: 8,000,000 actual: 8,333,333 +4.2% SPI_FULL_SPEED
#define SPI_CLOCK_DIV4 4166667 //(SCR: 5) desired: 4,000,000 actual: 4,166,667 +4.2% SPI_HALF_SPEED
#define SPI_CLOCK_DIV8 2083333 //(SCR: 11) desired: 2,000,000 actual: 2,083,333 +4.2% SPI_QUARTER_SPEED
#define SPI_CLOCK_DIV16 1000000 //(SCR: 24) desired: 1,000,000 actual: 1,000,000 SPI_EIGHTH_SPEED
#define SPI_CLOCK_DIV32 500000 //(SCR: 49) desired: 500,000 actual: 500,000 SPI_SPEED_5
#define SPI_CLOCK_DIV64 250000 //(SCR: 99) desired: 250,000 actual: 250,000 SPI_SPEED_6
#define SPI_CLOCK_DIV128 125000 //(SCR:199) desired: 125,000 actual: 125,000 Default from HAL.h
#define SPI_CLOCK_MAX SPI_CLOCK_DIV2
@@ -125,6 +126,11 @@ public:
*/
SPIClass(uint8_t spiPortNumber);
/**
* Init using pins
*/
SPIClass(pin_t mosi, pin_t miso, pin_t sclk, pin_t ssel = (pin_t)-1);
/**
* Select and configure the current selected SPI device to use
*/
+12 -11
View File
@@ -31,17 +31,18 @@
#include <CDCSerial.h>
#include <usb/mscuser.h>
extern "C" {
#include <debug_frmwrk.h>
}
#include "../../sd/cardreader.h"
#include "../../inc/MarlinConfig.h"
#include "../../core/millis_t.h"
#include "../../sd/cardreader.h"
extern uint32_t MSC_SD_Init(uint8_t pdrv);
extern "C" int isLPC1769();
extern "C" void disk_timerproc();
extern "C" {
#include <debug_frmwrk.h>
extern "C" int isLPC1769();
extern "C" void disk_timerproc();
}
void SysTick_Callback() { disk_timerproc(); }
@@ -89,11 +90,11 @@ void HAL_init() {
//debug_frmwrk_init();
//_DBG("\n\nDebug running\n");
// Initialize the SD card chip select pins as soon as possible
#if PIN_EXISTS(SS)
OUT_WRITE(SS_PIN, HIGH);
#if PIN_EXISTS(SD_SS)
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
#if PIN_EXISTS(ONBOARD_SD_CS) && ONBOARD_SD_CS_PIN != SS_PIN
#if PIN_EXISTS(ONBOARD_SD_CS) && ONBOARD_SD_CS_PIN != SD_SS_PIN
OUT_WRITE(ONBOARD_SD_CS_PIN, HIGH);
#endif
@@ -122,7 +123,7 @@ void HAL_init() {
delay(1000); // Give OS time to notice
USB_Connect(TRUE);
#if DISABLED(NO_SD_HOST_DRIVE)
#if HAS_SD_HOST_DRIVE
MSC_SD_Init(0); // Enable USB SD card access
#endif
+14 -14
View File
@@ -23,7 +23,7 @@
#include "../../core/macros.h"
#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SCK_PIN || LCD_PINS_ENABLE == MOSI_PIN || DOGLCD_SCK == SCK_PIN || DOGLCD_MOSI == MOSI_PIN)
#if BOTH(SDSUPPORT, HAS_MARLINUI_U8GLIB) && (LCD_PINS_D4 == SD_SCK_PIN || LCD_PINS_ENABLE == SD_MOSI_PIN || DOGLCD_SCK == SD_SCK_PIN || DOGLCD_MOSI == SD_MOSI_PIN)
#define LPC_SOFTWARE_SPI // If the SD card and LCD adapter share the same SPI pins, then software SPI is currently
// needed due to the speed and mode required for communicating with each device being different.
// This requirement can be removed if the SPI access to these devices is updated to use
@@ -31,24 +31,24 @@
#endif
/** onboard SD card */
//#define SCK_PIN P0_07
//#define MISO_PIN P0_08
//#define MOSI_PIN P0_09
//#define SS_PIN P0_06
//#define SD_SCK_PIN P0_07
//#define SD_MISO_PIN P0_08
//#define SD_MOSI_PIN P0_09
//#define SD_SS_PIN P0_06
/** external */
#ifndef SCK_PIN
#define SCK_PIN P0_15
#ifndef SD_SCK_PIN
#define SD_SCK_PIN P0_15
#endif
#ifndef MISO_PIN
#define MISO_PIN P0_17
#ifndef SD_MISO_PIN
#define SD_MISO_PIN P0_17
#endif
#ifndef MOSI_PIN
#define MOSI_PIN P0_18
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN P0_18
#endif
#ifndef SS_PIN
#define SS_PIN P1_23
#ifndef SD_SS_PIN
#define SD_SS_PIN P1_23
#endif
#if !defined(SDSS) || SDSS == P_NC // gets defaulted in pins.h
#undef SDSS
#define SDSS SS_PIN
#define SDSS SD_SS_PIN
#endif
+2 -2
View File
@@ -89,7 +89,7 @@ void TFT_SPI::Init() {
#elif TFT_MISO_PIN == BOARD_SPI2_MISO_PIN
SPIx.setModule(2);
#endif
SPIx.setClock(SPI_CLOCK_MAX);
SPIx.setClock(SPI_CLOCK_MAX_TFT);
SPIx.setBitOrder(MSBFIRST);
SPIx.setDataMode(SPI_MODE0);
}
@@ -125,7 +125,7 @@ uint32_t TFT_SPI::ReadID(uint16_t Reg) {
}
DataTransferEnd();
SPIx.setClock(SPI_CLOCK_MAX);
SPIx.setClock(SPI_CLOCK_MAX_TFT);
#endif
return data >> 7;
+1 -1
View File
@@ -36,7 +36,7 @@
#define DATASIZE_8BIT SSP_DATABIT_8
#define DATASIZE_16BIT SSP_DATABIT_16
#define TFT_IO TFT_SPI
#define TFT_IO_DRIVER TFT_SPI
#define DMA_MINC_ENABLE 1
#define DMA_MINC_DISABLE 0
+5 -2
View File
@@ -1,6 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* 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
@@ -19,7 +22,7 @@
#include "../../../inc/MarlinConfig.h"
#if HAS_TFT_XPT2046 || HAS_TOUCH_XPT2046
#if HAS_TFT_XPT2046 || HAS_TOUCH_BUTTONS
#include "xpt2046.h"
#include <SPI.h>
+8 -5
View File
@@ -1,6 +1,9 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2019 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
* 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
@@ -25,16 +28,16 @@
#endif
#ifndef TOUCH_MISO_PIN
#define TOUCH_MISO_PIN MISO_PIN
#define TOUCH_MISO_PIN SD_MISO_PIN
#endif
#ifndef TOUCH_MOSI_PIN
#define TOUCH_MOSI_PIN MOSI_PIN
#define TOUCH_MOSI_PIN SD_MOSI_PIN
#endif
#ifndef TOUCH_SCK_PIN
#define TOUCH_SCK_PIN SCK_PIN
#define TOUCH_SCK_PIN SD_SCK_PIN
#endif
#ifndef TOUCH_CS_PIN
#define TOUCH_CS_PIN CS_PIN
#define TOUCH_CS_PIN SD_SS_PIN
#endif
#ifndef TOUCH_INT_PIN
#define TOUCH_INT_PIN -1
@@ -62,10 +62,13 @@
#include <U8glib.h>
#include "../../shared/HAL_SPI.h"
void spiBegin();
void spiInit(uint8_t spiRate);
void spiSend(uint8_t b);
void spiSend(const uint8_t* buf, size_t n);
#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_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val, void *arg_ptr) {
switch (msg) {
@@ -81,10 +84,7 @@ uint8_t u8g_com_HAL_LPC1768_hw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val,
u8g_SetPIOutput(u8g, U8G_PI_RESET);
u8g_Delay(5);
spiBegin();
#ifndef SPI_SPEED
#define SPI_SPEED SPI_FULL_SPEED // use same SPI speed as SD card
#endif
spiInit(SPI_SPEED);
spiInit(LCD_SPI_SPEED);
break;
case U8G_COM_MSG_ADDRESS: /* define cmd (arg_val = 0) or data mode (arg_val = 1) */
@@ -62,9 +62,11 @@
#include <U8glib.h>
#include <SoftwareSPI.h>
#include "../../shared/Delay.h"
#include "../../shared/HAL_SPI.h"
#undef SPI_SPEED
#define SPI_SPEED 3 // About 1 MHz
#ifndef LCD_SPI_SPEED
#define LCD_SPI_SPEED SPI_EIGHTH_SPEED // About 1 MHz
#endif
static pin_t SCK_pin_ST7920_HAL, MOSI_pin_ST7920_HAL_HAL;
static uint8_t SPI_speed = 0;
@@ -92,7 +94,7 @@ uint8_t u8g_com_HAL_LPC1768_ST7920_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t ar
u8g_SetPIOutput(u8g, U8G_PI_MOSI);
u8g_Delay(5);
SPI_speed = swSpiInit(SPI_SPEED, SCK_pin_ST7920_HAL, MOSI_pin_ST7920_HAL_HAL);
SPI_speed = swSpiInit(LCD_SPI_SPEED, SCK_pin_ST7920_HAL, MOSI_pin_ST7920_HAL_HAL);
u8g_SetPILevel(u8g, U8G_PI_CS, 0);
u8g_SetPILevel(u8g, U8G_PI_SCK, 0);
@@ -60,9 +60,11 @@
#if HAS_MARLINUI_U8GLIB && DISABLED(U8GLIB_ST7920)
#include <SoftwareSPI.h>
#include "../../shared/HAL_SPI.h"
#undef SPI_SPEED
#define SPI_SPEED 2 // About 2 MHz
#ifndef LCD_SPI_SPEED
#define LCD_SPI_SPEED SPI_QUARTER_SPEED // About 2 MHz
#endif
#include <Arduino.h>
#include <algorithm>
@@ -145,7 +147,7 @@ uint8_t u8g_com_HAL_LPC1768_sw_spi_fn(u8g_t *u8g, uint8_t msg, uint8_t arg_val,
u8g_SetPIOutput(u8g, U8G_PI_CS);
u8g_SetPIOutput(u8g, U8G_PI_A0);
if (U8G_PIN_NONE != u8g->pin_list[U8G_PI_RESET]) u8g_SetPIOutput(u8g, U8G_PI_RESET);
SPI_speed = swSpiInit(SPI_SPEED, u8g->pin_list[U8G_PI_SCK], u8g->pin_list[U8G_PI_MOSI]);
SPI_speed = swSpiInit(LCD_SPI_SPEED, u8g->pin_list[U8G_PI_SCK], u8g->pin_list[U8G_PI_MOSI]);
u8g_SetPILevel(u8g, U8G_PI_SCK, 0);
u8g_SetPILevel(u8g, U8G_PI_MOSI, 0);
break;
+33 -55
View File
@@ -23,63 +23,50 @@ def print_error(e):
%(e, env.get('PIOENV')))
try:
#
# Find a disk for upload
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
if current_OS == 'Windows':
#
# platformio.ini will accept this for a Windows upload port designation: 'upload_port = L:'
# Windows - doesn't care about the disk's name, only cares about the drive letter
#
#
# get all drives on this computer
#
import subprocess
# typical result (string): 'Drives: C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\ L:\ M:\ Y:\ Z:\'
driveStr = str(subprocess.check_output("fsutil fsinfo drives"))
# typical result (string): 'C:\ D:\ E:\ F:\ G:\ H:\ I:\ J:\ K:\ L:\ M:\ Y:\ Z:\'
# driveStr = driveStr.strip().lstrip('Drives: ') <- Doesn't work in other Languages as English. In German is "Drives:" = "Laufwerke:"
FirstFound = driveStr.find(':',0,-1) # Find the first ":" and
driveStr = driveStr[FirstFound + 1 : -1] # truncate to the rest
# typical result (array of stings): ['C:\\', 'D:\\', 'E:\\', 'F:\\',
# 'G:\\', 'H:\\', 'I:\\', 'J:\\', 'K:\\', 'L:\\', 'M:\\', 'Y:\\', 'Z:\\']
drives = driveStr.split()
from ctypes import windll
import string
# getting list of drives
# https://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python
drives = []
bitmask = windll.kernel32.GetLogicalDrives()
for letter in string.ascii_uppercase:
if bitmask & 1:
drives.append(letter)
bitmask >>= 1
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
for drive in drives:
final_drive_name = drive.strip().rstrip('\\') # typical result (string): 'C:'
final_drive_name = drive + ':\\'
# print ('disc check: {}'.format(final_drive_name))
try:
volume_info = str(subprocess.check_output('cmd /C dir ' + final_drive_name, stderr=subprocess.STDOUT))
except Exception as e:
print ('error:{}'.format(e))
continue
else:
if target_drive in volume_info and target_file_found == False: # set upload if not found target file yet
if target_drive in volume_info and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = final_drive_name
if target_filename in volume_info:
if target_file_found == False:
if not target_file_found:
upload_disk = final_drive_name
target_file_found = True
#
# set upload_port to drive if found
#
if target_file_found == True or target_drive_found == True:
env.Replace(
UPLOAD_PORT=upload_disk
)
print('upload disk: ', upload_disk)
else:
print_error('Autodetect Error')
elif current_OS == 'Linux':
#
# platformio.ini will accept this for a Linux upload port designation: 'upload_port = /media/media_name/drive'
#
upload_disk = 'Disk not found'
target_file_found = False
target_drive_found = False
drives = os.listdir(os.path.join(os.sep, 'media', getpass.getuser()))
if target_drive in drives: # If target drive is found, use it.
target_drive_found = True
@@ -101,22 +88,15 @@ try:
if target_file_found or target_drive_found:
env.Replace(
UPLOAD_FLAGS="-P$UPLOAD_PORT",
UPLOAD_PORT=upload_disk
UPLOAD_FLAGS="-P$UPLOAD_PORT"
)
print('upload disk: ', upload_disk)
else:
print_error('Autodetect Error')
elif current_OS == 'Darwin': # MAC
#
# platformio.ini will accept this for a OSX upload port designation: 'upload_port = /media/media_name/drive'
#
upload_disk = 'Disk not found'
drives = os.listdir('/Volumes') # human readable names
target_file_found = False
target_drive_found = False
if target_drive in drives and target_file_found == False: # set upload if not found target file yet
if target_drive in drives and not target_file_found: # set upload if not found target file yet
target_drive_found = True
upload_disk = '/Volumes/' + target_drive + '/'
for drive in drives:
@@ -126,20 +106,18 @@ try:
continue
else:
if target_filename in filenames:
if target_file_found == False:
if not target_file_found:
upload_disk = '/Volumes/' + drive + '/'
target_file_found = True
#
# set upload_port to drive if found
#
if target_file_found == True or target_drive_found == True:
env.Replace(
UPLOAD_PORT=upload_disk
)
print('\nupload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
#
# Set upload_port to drive if found
#
if target_file_found or target_drive_found:
env.Replace(UPLOAD_PORT=upload_disk)
print('\nUpload disk: ', upload_disk, '\n')
else:
print_error('Autodetect Error')
except Exception as e:
print_error(str(e))
+3 -1
View File
@@ -28,6 +28,8 @@
#include <lpc17xx_wdt.h>
#include "watchdog.h"
#define WDT_TIMEOUT_US TERN(WATCHDOG_DURATION_8S, 8000000, 4000000) // 4 or 8 second timeout
void watchdog_init() {
#if ENABLED(WATCHDOG_RESET_MANUAL)
// We enable the watchdog timer, but only for the interrupt.
@@ -52,7 +54,7 @@ void watchdog_init() {
#else
WDT_Init(WDT_CLKSRC_IRC, WDT_MODE_RESET);
#endif
WDT_Start(WDT_TIMEOUT);
WDT_Start(WDT_TIMEOUT_US);
}
void HAL_watchdog_refresh() {
-2
View File
@@ -21,8 +21,6 @@
*/
#pragma once
#define WDT_TIMEOUT 4000000 // 4 second timeout
void watchdog_init();
void HAL_watchdog_refresh();
+2 -2
View File
@@ -300,7 +300,7 @@ uint16_t HAL_adc_result;
DMA_ADDRESS_INCREMENT_STEP_SIZE_1, // STEPSIZE
DMA_STEPSEL_SRC // STEPSEL
);
if (descriptor != nullptr)
if (descriptor)
descriptor->BTCTRL.bit.EVOSEL = DMA_EVENT_OUTPUT_BEAT;
adc0DMAProgram.startJob();
}
@@ -337,7 +337,7 @@ uint16_t HAL_adc_result;
DMA_ADDRESS_INCREMENT_STEP_SIZE_1, // STEPSIZE
DMA_STEPSEL_SRC // STEPSEL
);
if (descriptor != nullptr)
if (descriptor)
descriptor->BTCTRL.bit.EVOSEL = DMA_EVENT_OUTPUT_BEAT;
adc1DMAProgram.startJob();
}
+13 -4
View File
@@ -35,7 +35,8 @@
// MYSERIAL0 required before MarlinSerial includes!
#define _MSERIAL(X) Serial##X
#define __MSERIAL(X) Serial##X
#define _MSERIAL(X) __MSERIAL(X)
#define MSERIAL(X) _MSERIAL(INCREMENT(X))
#if SERIAL_PORT == -1
@@ -88,6 +89,8 @@ typedef int8_t pin_t;
void HAL_clear_reset_source(); // clear reset reason
uint8_t HAL_get_reset_source(); // get reset reason
inline void HAL_reboot() {} // reboot the board or restart the bootloader
//
// ADC
//
@@ -132,10 +135,16 @@ void HAL_idletask();
//
FORCE_INLINE void _delay_ms(const int delay_ms) { delay(delay_ms); }
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#if GCC_VERSION <= 50000
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-function"
#endif
int freeMemory();
#pragma GCC diagnostic pop
#if GCC_VERSION <= 50000
#pragma GCC diagnostic pop
#endif
#ifdef __cplusplus
extern "C" {
+3 -3
View File
@@ -26,7 +26,7 @@
#include "QSPIFlash.h"
#define INVALID_ADDR 0xffffffff
#define INVALID_ADDR 0xFFFFFFFF
#define SECTOR_OF(a) (a & ~(SFLASH_SECTOR_SIZE - 1))
#define OFFSET_OF(a) (a & (SFLASH_SECTOR_SIZE - 1))
@@ -35,10 +35,10 @@ uint8_t QSPIFlash::_buf[SFLASH_SECTOR_SIZE];
uint32_t QSPIFlash::_addr = INVALID_ADDR;
void QSPIFlash::begin() {
if (_flashBase != nullptr) return;
if (_flashBase) return;
_flashBase = new Adafruit_SPIFlashBase(new Adafruit_FlashTransport_QSPI());
_flashBase->begin(NULL);
_flashBase->begin(nullptr);
}
size_t QSPIFlash::size() {
+1 -1
View File
@@ -79,7 +79,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
while (size--) {
SYNC(NVMCTRL->SEESTAT.bit.BUSY);
uint8_t c = ((volatile uint8_t *)SEEPROM_ADDR)[pos];
+1 -1
View File
@@ -56,7 +56,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
while (size--) {
uint8_t c = qspi.readByte(pos);
if (writing) *value = c;
+1 -1
View File
@@ -59,7 +59,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
while (size--) {
uint8_t c = eeprom_read_byte((uint8_t*)pos);
if (writing) *value = c;
+8 -8
View File
@@ -30,16 +30,16 @@
* SPI | 53 52 50 51 |
* SPI1 | 83 81 80 82 |
* +-------------------------+
* Any pin can be used for Chip Select (SS_PIN)
* Any pin can be used for Chip Select (SD_SS_PIN)
*/
#ifndef SCK_PIN
#define SCK_PIN 52
#ifndef SD_SCK_PIN
#define SD_SCK_PIN 52
#endif
#ifndef MISO_PIN
#define MISO_PIN 50
#ifndef SD_MISO_PIN
#define SD_MISO_PIN 50
#endif
#ifndef MOSI_PIN
#define MOSI_PIN 51
#ifndef SD_MOSI_PIN
#define SD_MOSI_PIN 51
#endif
#ifndef SDSS
#define SDSS 53
@@ -51,4 +51,4 @@
#endif
#define SS_PIN SDSS
#define SD_SS_PIN SDSS
+18 -16
View File
@@ -24,28 +24,30 @@
#if ENABLED(USE_WATCHDOG)
#include "watchdog.h"
#include "watchdog.h"
void watchdog_init() {
// The low-power oscillator used by the WDT runs at 32,768 Hz with
// a 1:32 prescale, thus 1024 Hz, though probably not super precise.
#define WDT_TIMEOUT_REG TERN(WATCHDOG_DURATION_8S, WDT_CONFIG_PER_CYC8192, WDT_CONFIG_PER_CYC4096) // 4 or 8 second timeout
// Setup WDT clocks
MCLK->APBAMASK.bit.OSC32KCTRL_ = true;
MCLK->APBAMASK.bit.WDT_ = true;
OSC32KCTRL->OSCULP32K.bit.EN1K = true; // Enable out 1K (this is what WDT uses)
void watchdog_init() {
// The low-power oscillator used by the WDT runs at 32,768 Hz with
// a 1:32 prescale, thus 1024 Hz, though probably not super precise.
WDT->CTRLA.bit.ENABLE = false; // Disable watchdog for config
SYNC(WDT->SYNCBUSY.bit.ENABLE);
// Setup WDT clocks
MCLK->APBAMASK.bit.OSC32KCTRL_ = true;
MCLK->APBAMASK.bit.WDT_ = true;
OSC32KCTRL->OSCULP32K.bit.EN1K = true; // Enable out 1K (this is what WDT uses)
WDT->INTENCLR.reg = WDT_INTENCLR_EW; // Disable early warning interrupt
WDT->CONFIG.reg = WDT_CONFIG_PER_CYC4096; // Set at least 4s period for chip reset
WDT->CTRLA.bit.ENABLE = false; // Disable watchdog for config
SYNC(WDT->SYNCBUSY.bit.ENABLE);
HAL_watchdog_refresh();
WDT->INTENCLR.reg = WDT_INTENCLR_EW; // Disable early warning interrupt
WDT->CONFIG.reg = WDT_TIMEOUT_REG; // Set a 4s or 8s period for chip reset
WDT->CTRLA.reg = WDT_CTRLA_ENABLE; // Start watchdog now in normal mode
SYNC(WDT->SYNCBUSY.bit.ENABLE);
}
HAL_watchdog_refresh();
WDT->CTRLA.reg = WDT_CTRLA_ENABLE; // Start watchdog now in normal mode
SYNC(WDT->SYNCBUSY.bit.ENABLE);
}
#endif // USE_WATCHDOG
+8 -2
View File
@@ -81,7 +81,9 @@ void HAL_init() {
SetTimerInterruptPriorities();
TERN_(EMERGENCY_PARSER, USB_Hook_init());
#if ENABLED(EMERGENCY_PARSER) && USBD_USE_CDC
USB_Hook_init();
#endif
}
void HAL_clear_reset_source() { __HAL_RCC_CLEAR_RESET_FLAGS(); }
@@ -128,8 +130,12 @@ uint16_t HAL_adc_get_result() { return HAL_adc_result; }
void flashFirmware(const int16_t) { NVIC_SystemReset(); }
// Maple Compatibility
volatile uint32_t systick_uptime_millis = 0;
systickCallback_t systick_user_callback;
void systick_attach_callback(systickCallback_t cb) { systick_user_callback = cb; }
void HAL_SYSTICK_Callback() { if (systick_user_callback) systick_user_callback(); }
void HAL_SYSTICK_Callback() {
systick_uptime_millis++;
if (systick_user_callback) systick_user_callback();
}
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
+26 -3
View File
@@ -29,6 +29,7 @@
#include "../shared/math_32bit.h"
#include "../shared/HAL_SPI.h"
#include "fastio.h"
#include "Servo.h"
#include "watchdog.h"
#include "MarlinSerial.h"
@@ -110,6 +111,8 @@
typedef int16_t pin_t;
#define HAL_SERVO_LIB libServo
#define PAUSE_SERVO_OUTPUT() libServo::pause_all_servos()
#define RESUME_SERVO_OUTPUT() libServo::resume_all_servos()
// ------------------------
// Public Variables
@@ -134,6 +137,8 @@ void HAL_clear_reset_source();
// Reset reason
uint8_t HAL_get_reset_source();
inline void HAL_reboot() {} // reboot the board or restart the bootloader
void _delay_ms(const int delay);
extern "C" char* _sbrk(int incr);
@@ -154,14 +159,14 @@ static inline int freeMemory() {
#define HAL_ANALOG_SELECT(pin) pinMode(pin, INPUT)
inline void HAL_adc_init() {}
#define HAL_ADC_VREF 3.3
#define HAL_ADC_RESOLUTION 10
#define HAL_ADC_RESOLUTION ADC_RESOLUTION // 12
#define HAL_START_ADC(pin) HAL_adc_start_conversion(pin)
#define HAL_READ_ADC() HAL_adc_result
#define HAL_ADC_READY() true
inline void HAL_adc_init() { analogReadResolution(HAL_ADC_RESOLUTION); }
void HAL_adc_start_conversion(const uint8_t adc_pin);
uint16_t HAL_adc_get_result();
@@ -182,3 +187,21 @@ void flashFirmware(const int16_t);
typedef void (*systickCallback_t)(void);
void systick_attach_callback(systickCallback_t cb);
void HAL_SYSTICK_Callback();
extern volatile uint32_t systick_uptime_millis;
#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 Timer PWM pins run at the same frequency
*/
void set_pwm_frequency(const pin_t pin, int f_desired);
/**
* 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);
+13 -14
View File
@@ -45,10 +45,10 @@ static SPISettings spiConfig;
#include "../shared/Delay.h"
void spiBegin(void) {
OUT_WRITE(SS_PIN, HIGH);
OUT_WRITE(SCK_PIN, HIGH);
SET_INPUT(MISO_PIN);
OUT_WRITE(MOSI_PIN, HIGH);
OUT_WRITE(SD_SS_PIN, HIGH);
OUT_WRITE(SD_SCK_PIN, HIGH);
SET_INPUT(SD_MISO_PIN);
OUT_WRITE(SD_MOSI_PIN, HIGH);
}
static uint16_t delay_STM32_soft_spi;
@@ -72,15 +72,15 @@ static SPISettings spiConfig;
uint8_t HAL_SPI_STM32_SpiTransfer_Mode_3(uint8_t b) { // using Mode 3
for (uint8_t bits = 8; bits--;) {
WRITE(SCK_PIN, LOW);
WRITE(MOSI_PIN, b & 0x80);
WRITE(SD_SCK_PIN, LOW);
WRITE(SD_MOSI_PIN, b & 0x80);
DELAY_NS(delay_STM32_soft_spi);
WRITE(SCK_PIN, HIGH);
WRITE(SD_SCK_PIN, HIGH);
DELAY_NS(delay_STM32_soft_spi);
b <<= 1; // little setup time
b |= (READ(MISO_PIN) != 0);
b |= (READ(SD_MISO_PIN) != 0);
}
DELAY_NS(125);
return b;
@@ -132,8 +132,8 @@ static SPISettings spiConfig;
* @details Only configures SS pin since stm32duino creates and initialize the SPI object
*/
void spiBegin() {
#if PIN_EXISTS(SS)
OUT_WRITE(SS_PIN, HIGH);
#if PIN_EXISTS(SD_SS)
OUT_WRITE(SD_SS_PIN, HIGH);
#endif
}
@@ -154,10 +154,9 @@ static SPISettings spiConfig;
spiConfig = SPISettings(clock, MSBFIRST, SPI_MODE0);
#if ENABLED(CUSTOM_SPI_PINS)
SPI.setMISO(MISO_PIN);
SPI.setMOSI(MOSI_PIN);
SPI.setSCLK(SCK_PIN);
SPI.setSSEL(SS_PIN);
SPI.setMISO(SD_MISO_PIN);
SPI.setMOSI(SD_MOSI_PIN);
SPI.setSCLK(SD_SCK_PIN);
#endif
SPI.begin();
+168
View File
@@ -0,0 +1,168 @@
/**
* 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
* (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/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "MarlinSPI.h"
static void spi_init(spi_t *obj, uint32_t speed, spi_mode_e mode, uint8_t msb, uint32_t dataSize) {
spi_init(obj, speed, mode, msb);
// spi_init set 8bit always
// TODO: copy the code from spi_init and handle data size, to avoid double init always!!
if (dataSize != SPI_DATASIZE_8BIT) {
obj->handle.Init.DataSize = dataSize;
HAL_SPI_Init(&obj->handle);
__HAL_SPI_ENABLE(&obj->handle);
}
}
void MarlinSPI::setClockDivider(uint8_t _div) {
_speed = spi_getClkFreq(&_spi);// / _div;
_clockDivider = _div;
}
void MarlinSPI::begin(void) {
//TODO: only call spi_init if any parameter changed!!
spi_init(&_spi, _speed, _dataMode, _bitOrder, _dataSize);
}
void MarlinSPI::setupDma(SPI_HandleTypeDef &_spiHandle, DMA_HandleTypeDef &_dmaHandle, uint32_t direction, bool minc) {
_dmaHandle.Init.Direction = direction;
_dmaHandle.Init.PeriphInc = DMA_PINC_DISABLE;
_dmaHandle.Init.Mode = DMA_NORMAL;
_dmaHandle.Init.Priority = DMA_PRIORITY_LOW;
_dmaHandle.Init.MemInc = minc ? DMA_MINC_ENABLE : DMA_MINC_DISABLE;
if (_dataSize == DATA_SIZE_8BIT) {
_dmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
_dmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
}
else {
_dmaHandle.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
_dmaHandle.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
}
#ifdef STM32F4xx
_dmaHandle.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
#endif
// start DMA hardware
// TODO: check if hardware is already enabled
#ifdef SPI1_BASE
if (_spiHandle.Instance == SPI1) {
#ifdef STM32F1xx
__HAL_RCC_DMA1_CLK_ENABLE();
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA1_Channel3 : DMA1_Channel2;
#elif defined(STM32F4xx)
__HAL_RCC_DMA2_CLK_ENABLE();
_dmaHandle.Init.Channel = DMA_CHANNEL_3;
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA2_Stream3 : DMA2_Stream0;
#endif
}
#endif
#ifdef SPI2_BASE
if (_spiHandle.Instance == SPI2) {
#ifdef STM32F1xx
__HAL_RCC_DMA1_CLK_ENABLE();
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA1_Channel5 : DMA1_Channel4;
#elif defined(STM32F4xx)
__HAL_RCC_DMA1_CLK_ENABLE();
_dmaHandle.Init.Channel = DMA_CHANNEL_0;
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA1_Stream4 : DMA1_Stream3;
#endif
}
#endif
#ifdef SPI3_BASE
if (_spiHandle.Instance == SPI3) {
#ifdef STM32F1xx
__HAL_RCC_DMA2_CLK_ENABLE();
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA2_Channel2 : DMA2_Channel1;
#elif defined(STM32F4xx)
__HAL_RCC_DMA1_CLK_ENABLE();
_dmaHandle.Init.Channel = DMA_CHANNEL_0;
_dmaHandle.Instance = (direction == DMA_MEMORY_TO_PERIPH) ? DMA1_Stream5 : DMA1_Stream2;
#endif
}
#endif
HAL_DMA_Init(&_dmaHandle);
}
byte MarlinSPI::transfer(uint8_t _data) {
uint8_t rxData = 0xFF;
HAL_SPI_TransmitReceive(&_spi.handle, &_data, &rxData, 1, HAL_MAX_DELAY);
return rxData;
}
uint8_t MarlinSPI::dmaTransfer(const void *transmitBuf, void *receiveBuf, uint16_t length) {
const uint8_t ff = 0xFF;
//if ((hspi->Instance->CR1 & SPI_CR1_SPE) != SPI_CR1_SPE) //only enable if disabled
__HAL_SPI_ENABLE(&_spi.handle);
if (receiveBuf) {
setupDma(_spi.handle, _dmaRx, DMA_PERIPH_TO_MEMORY, true);
HAL_DMA_Start(&_dmaRx, (uint32_t)&(_spi.handle.Instance->DR), (uint32_t)receiveBuf, length);
SET_BIT(_spi.handle.Instance->CR2, SPI_CR2_RXDMAEN); /* Enable Rx DMA Request */
}
// check for 2 lines transfer
bool mincTransmit = true;
if (transmitBuf == nullptr && _spi.handle.Init.Direction == SPI_DIRECTION_2LINES && _spi.handle.Init.Mode == SPI_MODE_MASTER) {
transmitBuf = &ff;
mincTransmit = false;
}
if (transmitBuf) {
setupDma(_spi.handle, _dmaTx, DMA_MEMORY_TO_PERIPH, mincTransmit);
HAL_DMA_Start(&_dmaTx, (uint32_t)transmitBuf, (uint32_t)&(_spi.handle.Instance->DR), length);
SET_BIT(_spi.handle.Instance->CR2, SPI_CR2_TXDMAEN); /* Enable Tx DMA Request */
}
if (transmitBuf) {
HAL_DMA_PollForTransfer(&_dmaTx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY);
HAL_DMA_Abort(&_dmaTx);
HAL_DMA_DeInit(&_dmaTx);
}
// while ((_spi.handle.Instance->SR & SPI_FLAG_RXNE) != SPI_FLAG_RXNE) {}
if (receiveBuf) {
HAL_DMA_PollForTransfer(&_dmaRx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY);
HAL_DMA_Abort(&_dmaRx);
HAL_DMA_DeInit(&_dmaRx);
}
return 1;
}
uint8_t MarlinSPI::dmaSend(const void * transmitBuf, uint16_t length, bool minc) {
setupDma(_spi.handle, _dmaTx, DMA_MEMORY_TO_PERIPH, minc);
HAL_DMA_Start(&_dmaTx, (uint32_t)transmitBuf, (uint32_t)&(_spi.handle.Instance->DR), length);
__HAL_SPI_ENABLE(&_spi.handle);
SET_BIT(_spi.handle.Instance->CR2, SPI_CR2_TXDMAEN); /* Enable Tx DMA Request */
HAL_DMA_PollForTransfer(&_dmaTx, HAL_DMA_FULL_TRANSFER, HAL_MAX_DELAY);
HAL_DMA_Abort(&_dmaTx);
// DeInit objects
HAL_DMA_DeInit(&_dmaTx);
return 1;
}
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
+107
View File
@@ -0,0 +1,107 @@
/**
* 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
* (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 "HAL.h"
#include <SPI.h>
extern "C" {
#include <utility/spi_com.h>
}
/**
* Marlin currently requires 3 SPI classes:
*
* SPIClass:
* This class is normally provided by frameworks and has a semi-default interface.
* This is needed because some libraries reference it globally.
*
* SPISettings:
* Container for SPI configs for SPIClass. As above, libraries may reference it globally.
*
* These two classes are often provided by frameworks so we cannot extend them to add
* useful methods for Marlin.
*
* MarlinSPI:
* Provides the default SPIClass interface plus some Marlin goodies such as a simplified
* interface for SPI DMA transfer.
*
*/
#define DATA_SIZE_8BIT SPI_DATASIZE_8BIT
#define DATA_SIZE_16BIT SPI_DATASIZE_16BIT
class MarlinSPI {
public:
MarlinSPI() : MarlinSPI(NC, NC, NC, NC) {}
MarlinSPI(pin_t mosi, pin_t miso, pin_t sclk, pin_t ssel = (pin_t)NC) : _mosiPin(mosi), _misoPin(miso), _sckPin(sclk), _ssPin(ssel) {
_spi.pin_miso = digitalPinToPinName(_misoPin);
_spi.pin_mosi = digitalPinToPinName(_mosiPin);
_spi.pin_sclk = digitalPinToPinName(_sckPin);
_spi.pin_ssel = digitalPinToPinName(_ssPin);
_dataSize = DATA_SIZE_8BIT;
_bitOrder = MSBFIRST;
_dataMode = SPI_MODE_0;
_spi.handle.State = HAL_SPI_STATE_RESET;
setClockDivider(SPI_SPEED_CLOCK_DIV2_MHZ);
}
void begin(void);
void end(void) {}
byte transfer(uint8_t _data);
uint8_t dmaTransfer(const void *transmitBuf, void *receiveBuf, uint16_t length);
uint8_t dmaSend(const void * transmitBuf, uint16_t length, bool minc = true);
/* These methods are deprecated and kept for compatibility.
* Use SPISettings with SPI.beginTransaction() to configure SPI parameters.
*/
void setBitOrder(BitOrder _order) { _bitOrder = _order; }
void setDataMode(uint8_t _mode) {
switch (_mode) {
case SPI_MODE0: _dataMode = SPI_MODE_0; break;
case SPI_MODE1: _dataMode = SPI_MODE_1; break;
case SPI_MODE2: _dataMode = SPI_MODE_2; break;
case SPI_MODE3: _dataMode = SPI_MODE_3; break;
}
}
void setClockDivider(uint8_t _div);
private:
void setupDma(SPI_HandleTypeDef &_spiHandle, DMA_HandleTypeDef &_dmaHandle, uint32_t direction, bool minc = false);
spi_t _spi;
DMA_HandleTypeDef _dmaTx;
DMA_HandleTypeDef _dmaRx;
BitOrder _bitOrder;
spi_mode_e _dataMode;
uint8_t _clockDivider;
uint32_t _speed;
uint32_t _dataSize;
pin_t _mosiPin;
pin_t _misoPin;
pin_t _sckPin;
pin_t _ssPin;
};
-1
View File
@@ -16,7 +16,6 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../inc/MarlinConfig.h"
@@ -19,10 +19,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../inc/MarlinConfig.h"
#if ENABLED(SDIO_SUPPORT) && !defined(STM32GENERIC)
#if ENABLED(SDIO_SUPPORT)
#include <stdint.h>
#include <stdbool.h>
@@ -31,7 +32,7 @@
#error "ERROR - Only STM32F103xE, STM32F103xG, STM32F4xx or STM32F7xx CPUs supported"
#endif
#ifdef USBD_USE_CDC_COMPOSITE
#if HAS_SD_HOST_DRIVE
// use USB drivers
@@ -87,18 +88,37 @@
MKS Robin board seems to have stable SDIO with BusWide 1bit and ClockDiv 8 i.e. 4.8MHz SDIO clock frequency
Additional testing is required as there are clearly some 4bit initialization problems
Add -DTRANSFER_CLOCK_DIV=8 to build parameters to improve SDIO stability
*/
#ifndef TRANSFER_CLOCK_DIV
#define TRANSFER_CLOCK_DIV (uint8_t(SDIO_INIT_CLK_DIV) / 40)
#endif
#ifndef USBD_OK
#define USBD_OK 0
#endif
// Target Clock, configurable. Default is 18MHz, from STM32F1
#ifndef SDIO_CLOCK
#define SDIO_CLOCK 18000000 /* 18 MHz */
#endif
// SDIO retries, configurable. Default is 3, from STM32F1
#ifndef SDIO_READ_RETRIES
#define SDIO_READ_RETRIES 3
#endif
// SDIO Max Clock (naming from STM Manual, don't change)
#define SDIOCLK 48000000
static uint32_t clock_to_divider(uint32_t clk) {
// limit the SDIO master clock to 8/3 of PCLK2. See STM32 Manuals
// Also limited to no more than 48Mhz (SDIOCLK).
const uint32_t pclk2 = HAL_RCC_GetPCLK2Freq();
clk = min(clk, (uint32_t)(pclk2 * 8 / 3));
clk = min(clk, (uint32_t)SDIOCLK);
// Round up divider, so we don't run the card over the speed supported,
// and subtract by 2, because STM32 will add 2, as written in the manual:
// SDIO_CK frequency = SDIOCLK / [CLKDIV + 2]
return pclk2 / clk + (pclk2 % clk != 0) - 2;
}
void go_to_transfer_speed() {
SD_InitTypeDef Init;
@@ -108,7 +128,7 @@
Init.ClockPowerSave = hsd.Init.ClockPowerSave;
Init.BusWide = hsd.Init.BusWide;
Init.HardwareFlowControl = hsd.Init.HardwareFlowControl;
Init.ClockDiv = TRANSFER_CLOCK_DIV;
Init.ClockDiv = clock_to_divider(SDIO_CLOCK);
/* Initialize SDIO peripheral interface with default configuration */
SDIO_Init(hsd.Instance, Init);
@@ -154,38 +174,25 @@
//Initialize the SDIO (with initial <400Khz Clock)
tempreg = 0; //Reset value
tempreg |= SDIO_CLKCR_CLKEN; // Clock enabled
tempreg |= (uint32_t)0x76; // Clock Divider. Clock = 48000 / (118 + 2) = 400Khz
tempreg |= SDIO_INIT_CLK_DIV; // Clock Divider. Clock = 48000 / (118 + 2) = 400Khz
// Keep the rest at 0 => HW_Flow Disabled, Rising Clock Edge, Disable CLK ByPass, Bus Width = 0, Power save Disable
SDIO->CLKCR = tempreg;
// Power up the SDIO
SDIO->POWER = 0x03;
SDIO_PowerState_ON(SDIO);
}
void HAL_SD_MspInit(SD_HandleTypeDef *hsd) { // application specific init
UNUSED(hsd); /* Prevent unused argument(s) compilation warning */
UNUSED(hsd); // Prevent unused argument(s) compilation warning
__HAL_RCC_SDIO_CLK_ENABLE(); // turn on SDIO clock
}
constexpr uint8_t SD_RETRY_COUNT = TERN(SD_CHECK_AND_RETRY, 3, 1);
bool SDIO_Init() {
//init SDIO and get SD card info
uint8_t retryCnt = SD_RETRY_COUNT;
uint8_t retryCnt = SDIO_READ_RETRIES;
bool status;
hsd.Instance = SDIO;
hsd.State = (HAL_SD_StateTypeDef) 0; // HAL_SD_STATE_RESET
/*
hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
hsd.Init.ClockDiv = 8;
*/
hsd.State = HAL_SD_STATE_RESET;
SD_LowLevel_Init();
@@ -257,7 +264,7 @@
bool SDIO_ReadBlock(uint32_t block, uint8_t *dst) {
hsd.Instance = SDIO;
uint8_t retryCnt = SD_RETRY_COUNT;
uint8_t retryCnt = SDIO_READ_RETRIES;
bool status;
for (;;) {
@@ -306,7 +313,7 @@
bool SDIO_WriteBlock(uint32_t block, const uint8_t *src) {
hsd.Instance = SDIO;
uint8_t retryCnt = SD_RETRY_COUNT;
uint8_t retryCnt = SDIO_READ_RETRIES;
bool status;
for (;;) {
status = (bool) HAL_SD_WriteBlocks(&hsd, (uint8_t*)src, block, 1, 500); // write one 512 byte block with 500mS timeout
@@ -319,3 +326,4 @@
#endif // !USBD_USE_CDC_COMPOSITE
#endif // SDIO_SUPPORT
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
+6 -15
View File
@@ -28,15 +28,6 @@
#include "../shared/eeprom_api.h"
#if HAS_SERVOS
#include "Servo.h"
#define PAUSE_SERVO_OUTPUT() libServo::pause_all_servos()
#define RESUME_SERVO_OUTPUT() libServo::resume_all_servos()
#else
#define PAUSE_SERVO_OUTPUT()
#define RESUME_SERVO_OUTPUT()
#endif
/**
* The STM32 HAL supports chips that deal with "pages" and some with "sectors" and some that
* even have multiple "banks" of flash.
@@ -113,7 +104,7 @@ bool PersistentStore::access_start() {
// This must be the first time since power on that we have accessed the storage, or someone
// loaded and called write_data and never called access_finish.
// Lets go looking for the slot that holds our configuration.
if (eeprom_data_written) DEBUG_ECHOLN("Dangling EEPROM write_data");
if (eeprom_data_written) DEBUG_ECHOLNPGM("Dangling EEPROM write_data");
uint32_t address = FLASH_ADDRESS_START;
while (address <= FLASH_ADDRESS_END) {
uint32_t address_value = (*(__IO uint32_t*)address);
@@ -172,11 +163,11 @@ bool PersistentStore::access_finish() {
current_slot = EEPROM_SLOTS - 1;
UNLOCK_FLASH();
PAUSE_SERVO_OUTPUT();
TERN_(HAS_PAUSE_SERVO_OUTPUT, PAUSE_SERVO_OUTPUT());
DISABLE_ISRS();
status = HAL_FLASHEx_Erase(&EraseInitStruct, &SectorError);
ENABLE_ISRS();
RESUME_SERVO_OUTPUT();
TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT());
if (status != HAL_OK) {
DEBUG_ECHOLNPAIR("HAL_FLASHEx_Erase=", status);
DEBUG_ECHOLNPAIR("GetError=", HAL_FLASH_GetError());
@@ -227,11 +218,11 @@ bool PersistentStore::access_finish() {
// Interrupts during this time can have unpredictable results, such as killing Servo
// output. Servo output still glitches with interrupts disabled, but recovers after the
// erase.
PAUSE_SERVO_OUTPUT();
TERN_(HAS_PAUSE_SERVO_OUTPUT, PAUSE_SERVO_OUTPUT());
DISABLE_ISRS();
eeprom_buffer_flush();
ENABLE_ISRS();
RESUME_SERVO_OUTPUT();
TERN_(HAS_PAUSE_SERVO_OUTPUT, RESUME_SERVO_OUTPUT());
eeprom_data_written = false;
#endif
@@ -261,7 +252,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
const uint8_t c = TERN(FLASH_EEPROM_LEVELING, ram_eeprom[pos], eeprom_buffered_read_byte(pos));
if (writing) *value = c;
+3 -4
View File
@@ -19,13 +19,12 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
/**
* Implementation of EEPROM settings in SD Card
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../inc/MarlinConfig.h"
#if ENABLED(SDCARD_EEPROM_EMULATION)
@@ -78,7 +77,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, const size_t size, uint16_t *crc, const bool writing/*=true*/) {
for (size_t i = 0; i < size; i++) {
uint8_t c = HAL_eeprom_data[pos + i];
if (writing) value[i] = c;
@@ -89,4 +88,4 @@ bool PersistentStore::read_data(int &pos, uint8_t* value, const size_t size, uin
}
#endif // SDCARD_EEPROM_EMULATION
#endif // STM32 && !STM32GENERIC
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
+1 -1
View File
@@ -52,7 +52,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
// Read from either external EEPROM, program flash or Backup SRAM
const uint8_t c = ( *(__IO uint8_t *)(BKPSRAM_BASE + ((uint8_t*)pos)) );
+1 -1
View File
@@ -65,7 +65,7 @@ bool PersistentStore::write_data(int &pos, const uint8_t *value, size_t size, ui
return false;
}
bool PersistentStore::read_data(int &pos, uint8_t* value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
bool PersistentStore::read_data(int &pos, uint8_t *value, size_t size, uint16_t *crc, const bool writing/*=true*/) {
do {
// Read from either external EEPROM, program flash or Backup SRAM
const uint8_t c = eeprom_read_byte((uint8_t*)pos);
+59
View File
@@ -0,0 +1,59 @@
/**
* 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
* (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/>.
*
*/
#if defined(ARDUINO_ARCH_STM32) && !defined(STM32GENERIC)
#include "../../inc/MarlinConfigPre.h"
#if NEEDS_HARDWARE_PWM
#include "HAL.h"
#include "timers.h"
void set_pwm_frequency(const pin_t pin, int f_desired) {
if (!PWM_PIN(pin)) return; // Don't proceed if no hardware timer
PinName pin_name = digitalPinToPinName(pin);
TIM_TypeDef *Instance = (TIM_TypeDef *)pinmap_peripheral(pin_name, PinMap_PWM); // Get HAL timer instance
LOOP_S_L_N(i, 0, NUM_HARDWARE_TIMERS) // Protect used timers
if (timer_instance[i] && timer_instance[i]->getHandle()->Instance == Instance)
return;
pwm_start(pin_name, f_desired, 0, RESOLUTION_8B_COMPARE_FORMAT);
}
void set_pwm_duty(const pin_t pin, const uint16_t v, const uint16_t v_size/*=255*/, const bool invert/*=false*/) {
PinName pin_name = digitalPinToPinName(pin);
TIM_TypeDef *Instance = (TIM_TypeDef *)pinmap_peripheral(pin_name, PinMap_PWM);
uint16_t adj_val = Instance->ARR * v / v_size;
if (invert) adj_val = Instance->ARR - adj_val;
switch (get_pwm_channel(pin_name)) {
case TIM_CHANNEL_1: LL_TIM_OC_SetCompareCH1(Instance, adj_val); break;
case TIM_CHANNEL_2: LL_TIM_OC_SetCompareCH2(Instance, adj_val); break;
case TIM_CHANNEL_3: LL_TIM_OC_SetCompareCH3(Instance, adj_val); break;
case TIM_CHANNEL_4: LL_TIM_OC_SetCompareCH4(Instance, adj_val); break;
}
}
#endif // NEEDS_HARDWARE_PWM
#endif // ARDUINO_ARCH_STM32 && !STM32GENERIC
+9 -9
View File
@@ -51,19 +51,19 @@ void FastIO_init(); // Must be called before using fast io macros
#if defined(STM32F0xx) || defined(STM32F1xx) || defined(STM32F3xx) || defined(STM32L0xx) || defined(STM32L4xx)
#define _WRITE(IO, V) do { \
if (V) FastIOPortMap[STM_PORT(digitalPin[IO])]->BSRR = _BV32(STM_PIN(digitalPin[IO])) ; \
else FastIOPortMap[STM_PORT(digitalPin[IO])]->BRR = _BV32(STM_PIN(digitalPin[IO])) ; \
if (V) FastIOPortMap[STM_PORT(digitalPinToPinName(IO))]->BSRR = _BV32(STM_PIN(digitalPinToPinName(IO))) ; \
else FastIOPortMap[STM_PORT(digitalPinToPinName(IO))]->BRR = _BV32(STM_PIN(digitalPinToPinName(IO))) ; \
}while(0)
#else
#define _WRITE(IO, V) (FastIOPortMap[STM_PORT(digitalPin[IO])]->BSRR = _BV32(STM_PIN(digitalPin[IO]) + ((V) ? 0 : 16)))
#define _WRITE(IO, V) (FastIOPortMap[STM_PORT(digitalPinToPinName(IO))]->BSRR = _BV32(STM_PIN(digitalPinToPinName(IO)) + ((V) ? 0 : 16)))
#endif
#define _READ(IO) bool(READ_BIT(FastIOPortMap[STM_PORT(digitalPin[IO])]->IDR, _BV32(STM_PIN(digitalPin[IO]))))
#define _TOGGLE(IO) (FastIOPortMap[STM_PORT(digitalPin[IO])]->ODR ^= _BV32(STM_PIN(digitalPin[IO])))
#define _READ(IO) bool(READ_BIT(FastIOPortMap[STM_PORT(digitalPinToPinName(IO))]->IDR, _BV32(STM_PIN(digitalPinToPinName(IO)))))
#define _TOGGLE(IO) (FastIOPortMap[STM_PORT(digitalPinToPinName(IO))]->ODR ^= _BV32(STM_PIN(digitalPinToPinName(IO))))
#define _GET_MODE(IO)
#define _SET_MODE(IO,M) pinMode(IO, M)
#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) /*!< Output Push Pull Mode & GPIO_NOPULL */
#define _SET_OUTPUT(IO) pinMode(IO, OUTPUT) //!< Output Push Pull Mode & GPIO_NOPULL
#define _SET_OUTPUT_OD(IO) pinMode(IO, OUTPUT_OPEN_DRAIN)
#define WRITE(IO,V) _WRITE(IO,V)
@@ -73,9 +73,9 @@ void FastIO_init(); // Must be called before using fast io macros
#define OUT_WRITE(IO,V) do{ _SET_OUTPUT(IO); WRITE(IO,V); }while(0)
#define OUT_WRITE_OD(IO,V) do{ _SET_OUTPUT_OD(IO); WRITE(IO,V); }while(0)
#define SET_INPUT(IO) _SET_MODE(IO, INPUT) /*!< Input Floating Mode */
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) /*!< Input with Pull-up activation */
#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN) /*!< Input with Pull-down activation */
#define SET_INPUT(IO) _SET_MODE(IO, INPUT) //!< Input Floating Mode
#define SET_INPUT_PULLUP(IO) _SET_MODE(IO, INPUT_PULLUP) //!< Input with Pull-up activation
#define SET_INPUT_PULLDOWN(IO) _SET_MODE(IO, INPUT_PULLDOWN) //!< Input with Pull-down activation
#define SET_OUTPUT(IO) OUT_WRITE(IO, LOW)
#define SET_PWM(IO) _SET_MODE(IO, PWM)
@@ -20,3 +20,7 @@
*
*/
#pragma once
#if defined(USBD_USE_CDC_COMPOSITE) && DISABLED(NO_SD_HOST_DRIVE)
#define HAS_SD_HOST_DRIVE 1
#endif
+4 -3
View File
@@ -28,9 +28,6 @@
// #error "SPINDLE_LASER_PWM_PIN must use SERVO0, SERVO1 or SERVO3 connector"
//#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 STM32."
#endif
#if ENABLED(SDCARD_EEPROM_EMULATION) && DISABLED(SDSUPPORT)
#undef SDCARD_EEPROM_EMULATION // Avoid additional error noise
@@ -54,3 +51,7 @@
#elif ENABLED(SERIAL_STATS_DROPPED_RX)
#error "SERIAL_STATS_DROPPED_RX is not supported on this platform."
#endif
#if ANY(TFT_COLOR_UI, TFT_LVGL_UI, TFT_CLASSIC_UI) && NOT_TARGET(STM32F4xx, STM32F1xx)
#error "TFT_COLOR_UI, TFT_LVGL_UI and TFT_CLASSIC_UI are currently only supported on STM32F4 and STM32F1 hardware."
#endif
+239 -9
View File
@@ -18,17 +18,247 @@
*/
#pragma once
#if !(defined(NUM_DIGITAL_PINS) || defined(BOARD_NR_GPIO_PINS))
#error "M43 not supported for this board"
#include <Arduino.h>
#ifndef NUM_DIGITAL_PINS
// Only in ST's Arduino core (STM32duino, STM32Core)
#error "Expected NUM_DIGITAL_PINS not found"
#endif
// Strange - STM32F4 comes to HAL_STM32 rather than HAL_STM32F4 for these files
#ifdef STM32F4
#ifdef NUM_DIGITAL_PINS // Only in ST's Arduino core (STM32duino, STM32Core)
#include "pinsDebug_STM32duino.h"
#elif defined(BOARD_NR_GPIO_PINS) // Only in STM32GENERIC (Maple)
#include "pinsDebug_STM32GENERIC.h"
/**
* Life gets complicated if you want an easy to use 'M43 I' output (in port/pin order)
* because the variants in this platform do not always define all the I/O port/pins
* that a CPU has.
*
* VARIABLES:
* Ard_num - Arduino pin number - defined by the platform. It is used by digitalRead and
* digitalWrite commands and by M42.
* - does not contain port/pin info
* - is not in port/pin order
* - typically a variant will only assign Ard_num to port/pins that are actually used
* Index - M43 counter - only used to get Ard_num
* x - a parameter/argument used to search the pin_array to try to find a signal name
* associated with a Ard_num
* Port_pin - port number and pin number for use with CPU registers and printing reports
*
* Since M43 uses digitalRead and digitalWrite commands, only the Port_pins with an Ard_num
* are accessed and/or displayed.
*
* Three arrays are used.
*
* digitalPin[] is provided by the platform. It consists of the Port_pin numbers in
* Arduino pin number order.
*
* pin_array is a structure generated by the pins/pinsDebug.h header file. It is generated by
* the preprocessor. Only the signals associated with enabled options are in this table.
* It contains:
* - name of the signal
* - the Ard_num assigned by the pins_YOUR_BOARD.h file using the platform defines.
* EXAMPLE: "#define KILL_PIN PB1" results in Ard_num of 57. 57 is then used as the
* argument to digitalPinToPinName(IO) to get the Port_pin number
* - if it is a digital or analog signal. PWMs are considered digital here.
*
* pin_xref is a structure generated by this header file. It is generated by the
* preprocessor. It is in port/pin order. It contains just the port/pin numbers defined by the
* platform for this variant.
* - Ard_num
* - printable version of Port_pin
*
* Routines with an "x" as a parameter/argument are used to search the pin_array to try to
* find a signal name associated with a port/pin.
*
* NOTE - the Arduino pin number is what is used by the M42 command, NOT the port/pin for that
* signal. The Arduino pin number is listed by the M43 I command.
*/
////////////////////////////////////////////////////////
//
// make a list of the Arduino pin numbers in the Port/Pin order
//
#define _PIN_ADD_2(NAME_ALPHA, ARDUINO_NUM) { {NAME_ALPHA}, ARDUINO_NUM },
#define _PIN_ADD(NAME_ALPHA, ARDUINO_NUM) { NAME_ALPHA, ARDUINO_NUM },
#define PIN_ADD(NAME) _PIN_ADD(#NAME, NAME)
typedef struct {
char Port_pin_alpha[5];
pin_t Ard_num;
} XrefInfo;
const XrefInfo pin_xref[] PROGMEM = {
#include "pins_Xref.h"
};
////////////////////////////////////////////////////////////
#define MODE_PIN_INPUT 0 // Input mode (reset state)
#define MODE_PIN_OUTPUT 1 // General purpose output mode
#define MODE_PIN_ALT 2 // Alternate function mode
#define MODE_PIN_ANALOG 3 // Analog mode
#define PIN_NUM(P) (P & 0x000F)
#define PIN_NUM_ALPHA_LEFT(P) (((P & 0x000F) < 10) ? ('0' + (P & 0x000F)) : '1')
#define PIN_NUM_ALPHA_RIGHT(P) (((P & 0x000F) > 9) ? ('0' + (P & 0x000F) - 10) : 0 )
#define PORT_NUM(P) ((P >> 4) & 0x0007)
#define PORT_ALPHA(P) ('A' + (P >> 4))
/**
* Translation of routines & variables used by pinsDebug.h
*/
#define NUMBER_PINS_TOTAL NUM_DIGITAL_PINS
#define VALID_PIN(ANUM) ((ANUM) >= 0 && (ANUM) < NUMBER_PINS_TOTAL)
#define digitalRead_mod(Ard_num) extDigitalRead(Ard_num) // must use Arduino pin numbers when doing reads
#define PRINT_PIN(Q)
#define PRINT_PORT(ANUM) port_print(ANUM)
#define DIGITAL_PIN_TO_ANALOG_PIN(ANUM) -1 // will report analog pin number in the print port routine
#define GET_PIN_MAP_PIN_M43(Index) pin_xref[Index].Ard_num
// x is a variable used to search pin_array
#define GET_ARRAY_IS_DIGITAL(x) ((bool) pin_array[x].is_digital)
#define GET_ARRAY_PIN(x) ((pin_t) pin_array[x].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 MULTI_NAME_PAD 33 // space needed to be pretty if not first name assigned to a pin
#ifndef M43_NEVER_TOUCH
#define _M43_NEVER_TOUCH(Index) (Index >= 9 && Index <= 12) // SERIAL/USB pins: PA9(TX) PA10(RX) PA11(USB_DM) PA12(USB_DP)
#ifdef KILL_PIN
#define M43_NEVER_TOUCH(Index) m43_never_touch(Index)
bool m43_never_touch(const pin_t Index) {
static pin_t M43_kill_index = -1;
if (M43_kill_index < 0)
for (M43_kill_index = 0; M43_kill_index < NUMBER_PINS_TOTAL; M43_kill_index++)
if (KILL_PIN == GET_PIN_MAP_PIN_M43(M43_kill_index)) break;
return _M43_NEVER_TOUCH(Index) || Index == M43_kill_index; // KILL_PIN and SERIAL/USB
}
#else
#error "M43 not supported for this board"
#define M43_NEVER_TOUCH(Index) _M43_NEVER_TOUCH(Index)
#endif
#endif
uint8_t get_pin_mode(const pin_t Ard_num) {
const PinName dp = digitalPinToPinName(Ard_num);
uint32_t ll_pin = STM_LL_GPIO_PIN(dp);
GPIO_TypeDef *port = get_GPIO_Port(STM_PORT(dp));
uint32_t mode = LL_GPIO_GetPinMode(port, ll_pin);
switch (mode) {
case LL_GPIO_MODE_ANALOG: return MODE_PIN_ANALOG;
case LL_GPIO_MODE_INPUT: return MODE_PIN_INPUT;
case LL_GPIO_MODE_OUTPUT: return MODE_PIN_OUTPUT;
case LL_GPIO_MODE_ALTERNATE: return MODE_PIN_ALT;
TERN_(STM32F1xx, case LL_GPIO_MODE_FLOATING:)
default: return 0;
}
}
bool GET_PINMODE(const pin_t Ard_num) {
const uint8_t pin_mode = get_pin_mode(Ard_num);
return pin_mode == MODE_PIN_OUTPUT || pin_mode == MODE_PIN_ALT; // assume all alt definitions are PWM
}
int8_t digital_pin_to_analog_pin(pin_t Ard_num) {
Ard_num -= NUM_ANALOG_FIRST;
return (Ard_num >= 0 && Ard_num < NUM_ANALOG_INPUTS) ? Ard_num : -1;
}
bool IS_ANALOG(const pin_t Ard_num) {
return get_pin_mode(Ard_num) == MODE_PIN_ANALOG;
}
bool is_digital(const pin_t x) {
const uint8_t pin_mode = get_pin_mode(pin_array[x].pin);
return pin_mode == MODE_PIN_INPUT || pin_mode == MODE_PIN_OUTPUT;
}
void port_print(const pin_t Ard_num) {
char buffer[16];
pin_t Index;
for (Index = 0; Index < NUMBER_PINS_TOTAL; Index++)
if (Ard_num == GET_PIN_MAP_PIN_M43(Index)) break;
const char * ppa = pin_xref[Index].Port_pin_alpha;
sprintf_P(buffer, PSTR("%s"), ppa);
SERIAL_ECHO(buffer);
if (ppa[3] == '\0') SERIAL_CHAR(' ');
// print analog pin number
const int8_t Port_pin = digital_pin_to_analog_pin(Ard_num);
if (Port_pin >= 0) {
sprintf_P(buffer, PSTR(" (A%d) "), Port_pin);
SERIAL_ECHO(buffer);
if (Port_pin < 10) SERIAL_CHAR(' ');
}
else
SERIAL_ECHO_SP(7);
// Print number to be used with M42
sprintf_P(buffer, PSTR(" M42 P%d "), Ard_num);
SERIAL_ECHO(buffer);
if (Ard_num < 10) SERIAL_CHAR(' ');
if (Ard_num < 100) SERIAL_CHAR(' ');
}
bool pwm_status(const pin_t Ard_num) {
return get_pin_mode(Ard_num) == MODE_PIN_ALT;
}
void pwm_details(const pin_t Ard_num) {
#ifndef STM32F1xx
if (pwm_status(Ard_num)) {
uint32_t alt_all = 0;
const PinName dp = digitalPinToPinName(Ard_num);
pin_t pin_number = uint8_t(PIN_NUM(dp));
const bool over_7 = pin_number >= 8;
const uint8_t ind = over_7 ? 1 : 0;
switch (PORT_ALPHA(dp)) { // get alt function
case 'A' : alt_all = GPIOA->AFR[ind]; break;
case 'B' : alt_all = GPIOB->AFR[ind]; break;
case 'C' : alt_all = GPIOC->AFR[ind]; break;
case 'D' : alt_all = GPIOD->AFR[ind]; break;
#ifdef PE_0
case 'E' : alt_all = GPIOE->AFR[ind]; break;
#elif defined (PF_0)
case 'F' : alt_all = GPIOF->AFR[ind]; break;
#elif defined (PG_0)
case 'G' : alt_all = GPIOG->AFR[ind]; break;
#elif defined (PH_0)
case 'H' : alt_all = GPIOH->AFR[ind]; break;
#elif defined (PI_0)
case 'I' : alt_all = GPIOI->AFR[ind]; break;
#elif defined (PJ_0)
case 'J' : alt_all = GPIOJ->AFR[ind]; break;
#elif defined (PK_0)
case 'K' : alt_all = GPIOK->AFR[ind]; break;
#elif defined (PL_0)
case 'L' : alt_all = GPIOL->AFR[ind]; break;
#endif
}
if (over_7) pin_number -= 8;
uint8_t alt_func = (alt_all >> (4 * pin_number)) & 0x0F;
SERIAL_ECHOPAIR("Alt Function: ", alt_func);
if (alt_func < 10) SERIAL_CHAR(' ');
SERIAL_ECHOPGM(" - ");
switch (alt_func) {
case 0 : SERIAL_ECHOPGM("system (misc. I/O)"); break;
case 1 : SERIAL_ECHOPGM("TIM1/TIM2 (probably PWM)"); break;
case 2 : SERIAL_ECHOPGM("TIM3..5 (probably PWM)"); break;
case 3 : SERIAL_ECHOPGM("TIM8..11 (probably PWM)"); break;
case 4 : SERIAL_ECHOPGM("I2C1..3"); break;
case 5 : SERIAL_ECHOPGM("SPI1/SPI2"); break;
case 6 : SERIAL_ECHOPGM("SPI3"); break;
case 7 : SERIAL_ECHOPGM("USART1..3"); break;
case 8 : SERIAL_ECHOPGM("USART4..6"); break;
case 9 : SERIAL_ECHOPGM("CAN1/CAN2, TIM12..14 (probably PWM)"); break;
case 10 : SERIAL_ECHOPGM("OTG"); break;
case 11 : SERIAL_ECHOPGM("ETH"); break;
case 12 : SERIAL_ECHOPGM("FSMC, SDIO, OTG"); break;
case 13 : SERIAL_ECHOPGM("DCMI"); break;
case 14 : SERIAL_ECHOPGM("unused (shouldn't see this)"); break;
case 15 : SERIAL_ECHOPGM("EVENTOUT"); break;
}
}
#else
// TODO: F1 doesn't support changing pins function, so we need to check the function of the PIN and if it's enabled
#endif
} // pwm_details
@@ -1,125 +0,0 @@
/**
* Marlin 3D Printer Firmware
* Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
*
* 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
/**
* Support routines for STM32GENERIC (Maple)
*/
/**
* Translation of routines & variables used by pinsDebug.h
*/
#ifdef BOARD_NR_GPIO_PINS // Only in STM32GENERIC (Maple)
#ifdef __STM32F1__
#include "../STM32F1/fastio.h"
#elif defined(STM32F4) || defined(STM32F7)
#include "../STM32_F4_F7/fastio.h"
#else
#include "fastio.h"
#endif
extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS];
#define NUM_DIGITAL_PINS BOARD_NR_GPIO_PINS
#define NUMBER_PINS_TOTAL BOARD_NR_GPIO_PINS
#define VALID_PIN(pin) (pin >= 0 && pin < BOARD_NR_GPIO_PINS)
#define GET_ARRAY_PIN(p) pin_t(pin_array[p].pin)
#define pwm_status(pin) PWM_PIN(pin)
#define digitalRead_mod(p) extDigitalRead(p)
#define PRINT_PIN(p) do{ sprintf_P(buffer, PSTR("%3hd "), int16_t(p)); SERIAL_ECHO(buffer); }while(0)
#define PRINT_PORT(p) 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 MULTI_NAME_PAD 21 // space needed to be pretty if not first name assigned to a pin
// pins that will cause hang/reset/disconnect in M43 Toggle and Watch utilities
#ifndef M43_NEVER_TOUCH
#define M43_NEVER_TOUCH(Q) (Q >= 9 && Q <= 12) // SERIAL/USB pins PA9(TX) PA10(RX)
#endif
static inline int8_t get_pin_mode(pin_t pin) {
return VALID_PIN(pin) ? _GET_MODE(pin) : -1;
}
static inline pin_t DIGITAL_PIN_TO_ANALOG_PIN(pin_t pin) {
if (!VALID_PIN(pin)) return -1;
int8_t adc_channel = int8_t(PIN_MAP[pin].adc_channel);
#ifdef NUM_ANALOG_INPUTS
if (adc_channel >= NUM_ANALOG_INPUTS) adc_channel = ADCx;
#endif
return pin_t(adc_channel);
}
static inline bool IS_ANALOG(pin_t pin) {
if (!VALID_PIN(pin)) return false;
if (PIN_MAP[pin].adc_channel != ADCx) {
#ifdef NUM_ANALOG_INPUTS
if (PIN_MAP[pin].adc_channel >= NUM_ANALOG_INPUTS) return false;
#endif
return _GET_MODE(pin) == GPIO_INPUT_ANALOG && !M43_NEVER_TOUCH(pin);
}
return false;
}
static inline bool GET_PINMODE(const pin_t pin) {
return VALID_PIN(pin) && !IS_INPUT(pin);
}
static inline bool GET_ARRAY_IS_DIGITAL(const int16_t array_pin) {
const pin_t pin = GET_ARRAY_PIN(array_pin);
return (!IS_ANALOG(pin)
#ifdef NUM_ANALOG_INPUTS
|| PIN_MAP[pin].adc_channel >= NUM_ANALOG_INPUTS
#endif
);
}
#include "../../inc/MarlinConfig.h" // Allow pins/pins.h to set density
static inline void pwm_details(const pin_t pin) {
if (PWM_PIN(pin)) {
timer_dev * const tdev = PIN_MAP[pin].timer_device;
const uint8_t channel = PIN_MAP[pin].timer_channel;
const char num = (
#if EITHER(STM32_HIGH_DENSITY, STM32_XL_DENSITY)
tdev == &timer8 ? '8' :
tdev == &timer5 ? '5' :
#endif
tdev == &timer4 ? '4' :
tdev == &timer3 ? '3' :
tdev == &timer2 ? '2' :
tdev == &timer1 ? '1' : '?'
);
char buffer[10];
sprintf_P(buffer, PSTR(" TIM%c CH%c"), num, ('0' + channel));
SERIAL_ECHO(buffer);
}
}
static inline void print_port(pin_t pin) {
const char port = 'A' + char(pin >> 4); // pin div 16
const int16_t gbit = PIN_MAP[pin].gpio_bit;
char buffer[8];
sprintf_P(buffer, PSTR("P%c%hd "), port, gbit);
if (gbit < 10) SERIAL_CHAR(' ');
SERIAL_ECHO(buffer);
}
#endif // BOARD_NR_GPIO_PINS

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