Compare commits
31 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
b2c20a8c0f | ||
|
ece7a2bf36 | ||
|
d87845052d | ||
|
ea74ceb791 | ||
|
87b591bf53 | ||
|
515f05093f | ||
|
b6d5886dce | ||
|
17f8a494bf | ||
|
5996c3a907 | ||
|
bb7e3f1d07 | ||
|
c9bfe7004c | ||
|
fa9e54146a | ||
|
0079166388 | ||
|
232f5d235d | ||
|
41cf1c9e6a | ||
|
2e61c1fb37 | ||
|
a68084f417 | ||
|
d5346a0689 | ||
|
c45b668142 | ||
|
ad0e5928f5 | ||
|
06ca56a13c | ||
|
fbd021a756 | ||
|
d99794f11d | ||
|
c0f1052efb | ||
|
bf7ecc761f | ||
|
d0480c15ef | ||
|
771f42744a | ||
|
3a44157ee8 | ||
|
a666ff1255 | ||
|
264f0960f7 | ||
|
03f94a7a18 |
@@ -5921,6 +5921,25 @@ inline void gcode_M17() {
|
||||
return true;
|
||||
}
|
||||
|
||||
static void ensure_safe_temperature() {
|
||||
bool did_show = false;
|
||||
wait_for_heatup = true;
|
||||
while (wait_for_heatup) {
|
||||
idle();
|
||||
wait_for_heatup = false;
|
||||
HOTEND_LOOP() {
|
||||
if (thermalManager.degTargetHotend(e) && abs(thermalManager.degHotend(e) - thermalManager.degTargetHotend(e)) > 3) {
|
||||
wait_for_heatup = true;
|
||||
if (!did_show) { // Show "wait for heating"
|
||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_WAIT_FOR_NOZZLES_TO_HEAT);
|
||||
did_show = true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void wait_for_filament_reload(int8_t max_beep_count = 0) {
|
||||
bool nozzle_timed_out = false;
|
||||
|
||||
@@ -5937,8 +5956,7 @@ inline void gcode_M17() {
|
||||
nozzle_timed_out |= thermalManager.is_heater_idle(e);
|
||||
|
||||
#if ENABLED(ULTIPANEL)
|
||||
if (nozzle_timed_out)
|
||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_CLICK_TO_HEAT_NOZZLE);
|
||||
if (nozzle_timed_out) ensure_safe_temperature();
|
||||
#endif
|
||||
|
||||
idle(true);
|
||||
@@ -9204,6 +9222,8 @@ inline void gcode_M503() {
|
||||
*/
|
||||
inline void gcode_M600() {
|
||||
|
||||
ensure_safe_temperature();
|
||||
|
||||
// Initial retract before move to filament change position
|
||||
const float retract = parser.seen('E') ? parser.value_axis_units(E_AXIS) : 0
|
||||
#if defined(PAUSE_PARK_RETRACT_LENGTH) && PAUSE_PARK_RETRACT_LENGTH > 0
|
||||
|
@@ -35,7 +35,7 @@
|
||||
/**
|
||||
* Marlin release version identifier
|
||||
*/
|
||||
#define SHORT_BUILD_VERSION "bugfix-1.1.x"
|
||||
#define SHORT_BUILD_VERSION "1.1.3"
|
||||
|
||||
/**
|
||||
* Verbose version identifier which should contain a reference to the location
|
||||
@@ -48,7 +48,7 @@
|
||||
* here we define this default string as the date where the latest release
|
||||
* version was tagged.
|
||||
*/
|
||||
#define STRING_DISTRIBUTION_DATE "2017-05-04 12:00"
|
||||
#define STRING_DISTRIBUTION_DATE "2017-06-04 12:00"
|
||||
|
||||
/**
|
||||
* Required minimum Configuration.h and Configuration_adv.h file versions.
|
||||
|
@@ -1353,7 +1353,6 @@ void Stepper::report_positions() {
|
||||
// No other ISR should ever interrupt this!
|
||||
void Stepper::babystep(const AxisEnum axis, const bool direction) {
|
||||
cli();
|
||||
uint8_t old_dir;
|
||||
|
||||
switch (axis) {
|
||||
|
||||
|
@@ -1094,6 +1094,7 @@ void kill_screen(const char* lcd_msg) {
|
||||
#endif
|
||||
|
||||
#if ENABLED(ADVANCED_PAUSE_FEATURE)
|
||||
|
||||
void lcd_enqueue_filament_change() {
|
||||
if (!DEBUGGING(DRYRUN) && thermalManager.tooColdToExtrude(active_extruder)) {
|
||||
lcd_save_previous_screen();
|
||||
@@ -1103,7 +1104,8 @@ void kill_screen(const char* lcd_msg) {
|
||||
lcd_advanced_pause_show_message(ADVANCED_PAUSE_MESSAGE_INIT);
|
||||
enqueue_and_echo_commands_P(PSTR("M600 B0"));
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // ADVANCED_PAUSE_FEATURE
|
||||
|
||||
/**
|
||||
*
|
||||
|
@@ -406,12 +406,17 @@ FORCE_INLINE void _draw_axis_label(const AxisEnum axis, const char* const pstr,
|
||||
|
||||
inline void lcd_implementation_status_message() {
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
static bool last_blink = false;
|
||||
lcd_print_utf(lcd_status_message + status_scroll_pos);
|
||||
const uint8_t slen = lcd_strlen(lcd_status_message);
|
||||
if (slen > LCD_WIDTH) {
|
||||
// Skip any non-printing bytes
|
||||
while (!PRINTABLE(lcd_status_message[status_scroll_pos++])) { /* nada */ }
|
||||
if (status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
|
||||
const bool new_blink = lcd_blink();
|
||||
if (last_blink != new_blink) {
|
||||
last_blink = new_blink;
|
||||
// Skip any non-printing bytes
|
||||
while (!PRINTABLE(lcd_status_message[status_scroll_pos])) status_scroll_pos++;
|
||||
if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
lcd_print_utf(lcd_status_message);
|
||||
@@ -422,7 +427,7 @@ inline void lcd_implementation_status_message() {
|
||||
|
||||
static void lcd_implementation_status_screen() {
|
||||
|
||||
bool blink = lcd_blink();
|
||||
const bool blink = lcd_blink();
|
||||
|
||||
// Status Menu Font
|
||||
lcd_setFont(FONT_STATUSMENU);
|
||||
|
@@ -655,7 +655,7 @@ Possible status screens:
|
||||
|01234567890123456789|
|
||||
*/
|
||||
static void lcd_implementation_status_screen() {
|
||||
bool blink = lcd_blink();
|
||||
const bool blink = lcd_blink();
|
||||
|
||||
//
|
||||
// Line 1
|
||||
@@ -825,12 +825,16 @@ static void lcd_implementation_status_screen() {
|
||||
#endif // FILAMENT_LCD_DISPLAY && SDSUPPORT
|
||||
|
||||
#if ENABLED(STATUS_MESSAGE_SCROLLING)
|
||||
static bool last_blink = false;
|
||||
lcd_print_utf(lcd_status_message + status_scroll_pos);
|
||||
const uint8_t slen = lcd_strlen(lcd_status_message);
|
||||
if (slen > LCD_WIDTH) {
|
||||
// Skip any non-printing bytes
|
||||
while (!PRINTABLE(lcd_status_message[status_scroll_pos++])) { /* nada */ }
|
||||
if (status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
|
||||
if (last_blink != blink) {
|
||||
last_blink = blink;
|
||||
// Skip any non-printing bytes
|
||||
while (!PRINTABLE(lcd_status_message[status_scroll_pos])) status_scroll_pos++;
|
||||
if (++status_scroll_pos > slen - LCD_WIDTH) status_scroll_pos = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
lcd_print_utf(lcd_status_message);
|
||||
|
74
README.md
74
README.md
@@ -1,41 +1,45 @@
|
||||
# Marlin 3D Printer Firmware
|
||||
<img align="right" src="../../raw/1.1.x/buildroot/share/pixmaps/logo/marlin-250.png" />
|
||||
|
||||
## Marlin 1.1
|
||||
|
||||
Marlin 1.1 represents an evolutionary leap over Marlin 1.0.2. It is the result of over two years of effort by several volunteers around the world who have paid meticulous and sometimes obsessive attention to every detail. For this release we focused on code quality, performance, stability, and overall user experience. Several new features have also been added, many of which require no extra hardware.
|
||||
|
||||
For complete Marlin documentation click over to the [Marlin Homepage <marlinfw.org>](http://marlinfw.org/), where you will find in-depth articles, how-to videos, and tutorials on every aspect of Marlin, as the site develops. For release notes, see the [Releases](https://github.com/MarlinFirmware/Marlin/releases) page.
|
||||
|
||||
## Stable Release Branch
|
||||
|
||||
This Release branch contains the latest tagged version of Marlin (currently 1.1.3 – June 2017).
|
||||
|
||||
Previous releases of Marlin include [1.0.2-2](https://github.com/MarlinFirmware/Marlin/tree/1.0.2-2) (December 2016) and [1.0.1](https://github.com/MarlinFirmware/Marlin/tree/1.0.1) (December 2014). Any version of Marlin prior to 1.0.1 (when we started tagging versions) can be collectively referred to as Marlin 1.0.0.
|
||||
|
||||
## Contributing to Marlin
|
||||
|
||||
Click on the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues) and [Pull Requests](https://github.com/MarlinFirmware/Marlin/pulls) links above at any time to see what we're currently working on.
|
||||
|
||||
To submit patches and new features for Marlin 1.1 check out the [bugfix-1.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-1.1.x) branch, add your commits, and submit a Pull Request back to the `bugfix-1.1.x` branch. Periodically that branch will form the basis for the next minor release.
|
||||
|
||||
Note that our "bugfix" branch will always contain the latest patches to the current release version. These patches may not be widely tested. As always, when using "nightly" builds of Marlin, proceed with full caution.
|
||||
|
||||
## Current Status: In Development
|
||||
|
||||
Marlin development has reached an important milestone with its first stable release in over 2 years. During this period we focused on cleaning up the code and making it more modern, consistent, readable, and sensible.
|
||||
|
||||
## Future Development
|
||||
|
||||
Marlin 1.1 is the last "flat" version of Marlin!
|
||||
|
||||
Arduino IDE now has support for folder hierarchies, so Marlin 1.2 will have a [hierarchical file structure](https://github.com/MarlinFirmware/Marlin/tree/breakup-marlin-idea). Marlin's newly reorganized code will be easier to work with and form a stronger starting-point as we get into [32-bit CPU support](https://github.com/MarlinFirmware/Marlin/tree/32-Bit-RCBugFix-new) and the Hardware Access Layer (HAL).
|
||||
|
||||
[](https://travis-ci.org/MarlinFirmware/Marlin)
|
||||
[](https://scan.coverity.com/projects/2224)
|
||||
[](https://travis-ci.org/MarlinFirmware/Marlin)
|
||||
|
||||
<img align="top" width=175 src="buildroot/share/pixmaps/logo/marlin-250.png" />
|
||||
## Marlin Resources
|
||||
|
||||
Additional documentation can be found at the [Marlin Home Page](http://marlinfw.org/).
|
||||
Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by!
|
||||
|
||||
## Bugfix Branch
|
||||
|
||||
__Not for production use. Use with caution!__
|
||||
|
||||
This branch is used to accumulate patches to the latest 1.1.x release version. Periodically this branch will form the basis for the next minor 1.1.x release.
|
||||
|
||||
Download earlier versions of Marlin on the [Releases page](https://github.com/MarlinFirmware/Marlin/releases). (The latest tagged release of Marlin is version 1.1.1.)
|
||||
|
||||
## Recent Changes
|
||||
- Further integration of Unified Bed Leveling
|
||||
- Initial UBL LCD Menu
|
||||
- New optimized G-code parser singleton
|
||||
- Initial M3/M4/M5 Spindle and Laser support
|
||||
- Added M421 Q to offset a mesh point
|
||||
- Refinements to G26 and G33
|
||||
- Added M80 S to query the power state
|
||||
- "Cancel Print" now shuts off heaters
|
||||
- Added `EXTRAPOLATE_BEYOND_GRID` option for mesh-based leveling
|
||||
|
||||
## Submitting Patches
|
||||
|
||||
Proposed patches should be submitted as a Pull Request against this branch ([bugfix-1.1.x](https://github.com/MarlinFirmware/Marlin/tree/bugfix-1.1.x)).
|
||||
|
||||
- This branch is for fixing bugs and integrating any new features for the duration of the Marlin 1.1.x life-cycle. We've opted for a simplified branch structure while we work on the maintainability and encapsulation of code modules. Version 1.2 and beyond should improve on separation of bug fixes and cutting-edge development.
|
||||
- Follow the proper coding style to gain points with the maintainers. See our [Coding Standards](http://marlinfw.org/docs/development/coding_standards.html) page for more information.
|
||||
- Please submit your questions and concerns to the [Issue Queue](https://github.com/MarlinFirmware/Marlin/issues). The "naive" question is often the one we forget to ask.
|
||||
|
||||
### [RepRap.org Wiki Page](http://reprap.org/wiki/Marlin)
|
||||
- [Marlin Home Page](http://marlinfw.org/) - The Marlin Documentation Project. Join us!
|
||||
- [RepRap.org Wiki Page](http://reprap.org/wiki/Marlin) - An overview of Marlin and its role in RepRap.
|
||||
- [Marlin Firmware Forum](http://forums.reprap.org/list.php?415) - Find help with configuration, get up and running.
|
||||
- [@MarlinFirmware](https://twitter.com/MarlinFirmware) on Twitter - Follow for news, release alerts, and tips & tricks. (Maintained by [@thinkyhead](https://github.com/thinkyhead).)
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -75,6 +79,8 @@ More features have been added by:
|
||||
|
||||
## License
|
||||
|
||||
Marlin is published under the [GPL license](/LICENSE) because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork.
|
||||
Marlin is published under the [GPL license](https://github.com/COPYING.md) 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.
|
||||
|
||||
[](https://flattr.com/submit/auto?user_id=ErikZalm&url=https://github.com/MarlinFirmware/Marlin&title=Marlin&language=&tags=github&category=software)
|
||||
|
Reference in New Issue
Block a user