a6fbd4a5d8
Currently we draw and send the screens for a graphical LCD all at once. We draw in two or four parts but draw them directly behind each other. For the tested status screen this takes 59-62ms in a single block. During this time nothing else (except the interrupts) can be done. When printing a sequence of very short moves the buffer drains - sometimes until it's empty. This PR splits the screen update into parts. Currently we have 10 time slots. During the first one the complete screen is drawn. (60,0,0,0,0,0,0,0,0,0,0) Here i introduce pauses for doing other things. (30,30,0,0,0,0,0,0) or (15,15,15,15,0,0,0,0,0,0) Drawing in consecutive time slots prevents from lagging too much. Even with a 4 stripe display all the drawing is done after 400ms. Previous experiments with a even better distribution of the time slots like (30,0,0,0,0,30,0,0,0,0) and (15,0,15,0,15,0,15,0,0,0) did not feel good when using the menu, because of too much lag. Because of the previous PRs to speed up the display updates and especially reducing the difference between drawing 2 or 4 stripes, it now makes sense for the REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER to go from 2 to 4 stripes. This costs about 1-2ms per complete screen update, but is payed back by having partial updates lasting only the half time and two additional brakes. Also ~256 byte of framebuffer are saved in RAM. 13:45:59.213 : echo: #:17 >:13 s:30; #:16 >:13 s:29; S#:33 S>:26 S:59 13:46:00.213 : echo: #:16 >:14 s:30; #:17 >:13 s:30; S#:33 S>:27 S:60 13:46:01.215 : echo: #:17 >:13 s:30; #:16 >:13 s:29; S#:33 S>:26 S:59 13:46:02.215 : echo: #:16 >:13 s:29; #:16 >:14 s:30; S#:32 S>:27 S:59 13:46:03.214 : echo: #:17 >:13 s:30; #:17 >:13 s:30; S#:34 S>:26 S:60 13:46:04.214 : echo: #:16 >:13 s:29; #:16 >:14 s:30; S#:32 S>:27 S:59 13:46:05.212 : echo: #:16 >:14 s:30; #:17 >:13 s:30; S#:33 S>:27 S:60 13:46:06.212 : echo: #:17 >:13 s:30; #:16 >:13 s:29; S#:33 S>:26 S:59 03:30:36.779 : echo: #:8 >:7 s:15; #:10 >:7 s:17; #:8 >:6 s:14; #:8 >:7 s:15; S#:34 S>:27 S:61 03:30:37.778 : echo: #:8 >:6 s:14; #:10 >:7 s:17; #:9 >:7 s:16; #:8 >:6 s:14; S#:35 S>:26 S:61 03:30:38.778 : echo: #:8 >:6 s:14; #:11 >:7 s:18; #:8 >:6 s:14; #:8 >:7 s:15; S#:35 S>:26 S:61 03:30:39.777 : echo: #:8 >:6 s:14; #:10 >:7 s:17; #:8 >:8 s:16; #:8 >:6 s:14; S#:34 S>:27 S:61 03:30:40.780 : echo: #:8 >:6 s:14; #:11 >:7 s:18; #:8 >:6 s:14; #:8 >:6 s:14; S#:35 S>:25 S:60 03:30:41.780 : echo: #:9 >:6 s:15; #:10 >:7 s:17; #:8 >:6 s:14; #:9 >:6 s:15; S#:36 S>:25 S:61 03:30:42.779 : echo: #:8 >:6 s:14; #:10 >:8 s:18; #:8 >:6 s:14; #:8 >:6 s:14; S#:34 S>:26 S:60 03:30:43.778 : echo: #:9 >:6 s:15; #:10 >:7 s:17; #:8 >:7 s:15; #:9 >:6 s:15; S#:36 S>:26 S:62 #: draw a stripe >: transfer a stripe s: sum of of draw and transfer for one stripe S#: sum of draws for a complete screen S>: sum of transfers for a complete screen S: time to draw and transfer a complete screen |
||
---|---|---|
buildroot | ||
Marlin | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
README.md |
Marlin 3D Printer Firmware
Additional documentation can be found at The Marlin Documentation Project. Please test this firmware and inform us if it misbehaves in any way, volunteers are standing by!
Release Candidate -- Marlin 1.1.0-RCBugFix - 26 July 2016
Not for production use – use with caution!
You can download earlier versions of Marlin on the Releases page. (The latest "stable" release of Marlin is 1.0.2-1.)
The latest Release Candidate lives in the "RC" branch. Bugs that we find in the current Release Candidate are patched in the "RCBugFix" branch, so during beta testing this is where you can always find the latest code on its way towards release.
Recent Changes
-
RCBugFix
-
RC7 - 26 Jul 2016
- Add Print Job Timer and Print Counter (
PRINTCOUNTER
) - New
M600
Filament Change (FILAMENT_CHANGE_FEATURE
) - New
G12
Nozzle Clean (NOZZLE_CLEAN_FEATURE
) - New
G27
Nozzle Park (NOZZLE_PARK_FEATURE
) - Add support for
COREYZ
- Add a new Advance Extrusion algorithm (
LIN_ADVANCE
) - Add support for inches, Fahrenheit, Kelvin units (
INCH_MODE_SUPPORT
,TEMPERATURE_UNITS_SUPPORT
) - Better handling of
G92
shifting of the coordinate space - Add Greek and Croatian languages
- Improve the Manual (Mesh) Bed Leveling user interface
- Add support for more boards, controllers, and probes:
- Vellemann K8400 (
BOARD_K8400
) - RigidBot V2 (
BOARD_RIGIDBOARD_V2
) - Cartesio UI (
BOARD_CNCONTROLS_12
) - BLTouch probe sensor (
BLTOUCH
) - Viki 2 with RAMPS and MKS boards
- Vellemann K8400 (
- Improve support for
DELTA
and other kinematics - Improve thermal management, add
WATCH_BED_TEMP_PERIOD
- Better handling of toolchange, multiple tools
- Add support for two X steppers
X_DUAL_STEPPER_DRIVERS
- Add support for
SINGLENOZZLE
,MIXING_EXTRUDER
, andSWITCHING_EXTRUDER
- Simplified probe configuration, allow usage without bed leveling
- And much more… See the 1.1.0-RC7 Change Log for the complete list of changes.
- Add Print Job Timer and Print Counter (
-
RC6 - 24 Apr 2016
- Marlin now requires Arduino version 1.6.0 or later
- Completed support for CoreXY / CoreXZ
- See the 1.1.0-RC6 Change Log for all the changes.
-
RC5 - 01 Apr 2016
- Warn if compiling with older versions (<1.50) of Arduino
- Fix various LCD menu issues
- Add formal support for MKSv1.3 and Sainsmart (RAMPS variants)
- Fix bugs in M104, M109, and M190
- Fix broken M404 command
- Fix issues with M23 and "Start SD Print"
- More output for M111
- Rename FILAMENT_SENSOR to FILAMENT_WIDTH_SENSOR
- Fix SD card bugs
- and a lot more
- See the 1.1.0-RC5 Change Log for more!
-
RC4 - 24 Mar 2016
- Many lingering bugs and nagging issues addressed
- Improvements to LCD menus, CoreXY/CoreXZ, Delta, Bed Leveling, and more…
-
RC3 - 01 Dec 2015
- A number of language sensitive strings have been revised
- Formatting of the LCD display has been improved to handle negative coordinates better
- Various compiler-related issues have been corrected
-
RC2 - 29 Sep 2015
- File styling reverted
- LCD update frequency reduced
-
RC1 - 19 Sep 2015
- Published for testing
Submitting Patches
Proposed patches should be submitted as a Pull Request against the RCBugFix branch.
- Don't submit new feature proposals. The RCBugFix branch is for fixing bugs in existing features.
- Do submit questions and concerns. The "naive" question is often the one we forget to ask.
- Follow the proper coding style. Pull requests with styling errors will be delayed. See our Coding Standards page for more information.
RepRap.org Wiki Page
Credits
The current Marlin dev team consists of:
- Scott Lahteine [@thinkyhead] - English
- [@Wurstnase] - Deutsch, English
- F. Malpartida [@fmalpartida] - English, Spanish
- Jochen Groppe [@CONSULitAS] - Deutsch, English
- [@maverikou]
- Chris Palmer [@nophead]
- [@paclema]
- Edward Patel [@epatel] - Swedish, English
- Erik van der Zalm [@ErikZalm]
- David Braam [@daid]
- Bernhard Kubicek [@bkubicek]
- Roxanne Neufeld [@Roxy-3DPrintBoard] - English
More features have been added by:
- Alberto Cotronei [@MagoKimbra]
- Lampmaker,
- Bradley Feldman,
- and others...
License
Marlin is published under the GPL license because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork.
While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own.