On many IDEX machines the allowed travel of the X1 carraige and X2 carraige does not perfectly overlap.
This helps the issue. But more work needs to be done at the higher level. (For example the X1_MAX_POS should probably be factored into G26's mesh validation pattern.)
Some of the Rotations did not do the right thing with setting and clearing pixels.
I think it is correct now. But if not... It is much closer to being correct.
It takes too long to display the mesh data for large mesh's at startup. We should consider ways to speed this up.
Perhaps it makes sense to display an entire row of the mesh instead of just one mesh point?
The registers within the Max7219 can get corrupted a number of ways. This allows the Max7219 to be reset and fully initialized.
And... it also allows the user to see the initialization pattern.
There is significant downside to breaking up the long line segments on UBL Cartesian machines. It adds a lot of extra computation but worse... It cuts out all of UBL's off mesh Z-Height correction checks. There have been a large number of people complaining about the nozzle going to infinity or crashing into the bed lately. They are being caused by
```
void unified_bed_leveling::line_to_destination_cartesian()
```
not watching over the segments being queued up for movement.
* Work around for serial buffer over run
PronterFace sends a lot of M105 commands. During long operations such
as UBL's G29 P1, G29 P2, G29 P4 and G26 this can over run the serial
buffer. This results (very often) in a M1 (actually a M1M105) ending
up in the command queue.
Until we figure out a better way to resolve this issue, this will keep
the UBL commands from experiencing bogus commands at thier completion.
A number of regressions were patched also. The UBL G29 P2 and P4 Press and Hold had stopped working. It is very possible this is broken in the bugfix_v1.1.x branch also.
The main purpose of the Pull Request is to get the 3-Point mesh tilting to use the LSF algorithm just like the grid based mesh tilt. This simplifies the logic and reduces the code size some what. But the real reason to do it is the 3-Point case can be solved exactly. And by feeding these numbers into the LSF algorithm it provides a way to check all that code for 'correctness'.
G26 uses logic that looks like:
```
ex = _GET_MESH_X(i + 1) - (SIZE_OF_INTERSECTION_CIRCLES - (SIZE_OF_CROSSHAIRS));
```
The Bi-Linear macros need parenthesis to work correctly.
Travis is having problems at: https://github.com/MarlinFirmware/Marlin/pull/8560
So... doing a direct commit to get things correct. Bugfix_v1.1.x does not have this bug. Nothing needs to be done to that branch.
These changes may need to be warmed over. I tried to fix things with
the least amount of disruption. I just wanted to get the bugfix_v2.0.0
branch working for people again.
This is a non-intuitive change. @oldmcg says in this post https://github.com/MarlinFirmware/Marlin/issues/7572#issuecomment-340641207 that using DELTA_PRINTABLE_RADIUS is better than DELTA_PROBABLE_RADIUS for setting the probe limits. This is because the automatic probe code checks all locations for being reachable by the probe prior to doing the probe.
- Fix G26 Circle Drawing.
- Add default extrusion settings so machine can print lines on print bed
- Yet to be done: Get LCD Menu's to use these settings.
* Re-Print of same SD Memory Card file with single click
* Re-Print of same SD Memory Card file with single click
* This is the bugfix-v2.0.0 version of https://github.com/MarlinFirmware/Marlin/pull/8104
* Get UBL Mesh Generation, Mesh Save & Mesh Load working with 32-Bit platforms
* clean up read_data() and write_data() for non-LPC1768 HAL's
* Get read_data() and write_data() return codes consistent
All HAL's read_data() and write_data() return false if they succeed.
* Get read_data() and write_data() return codes to be consistent
Make read_data() and write_data() return true if an error happens.
* Say UBL is now checked out on machine types in default Configuration.h file.
* Add Max7219 LED Matrix Debug Support
The Max7219 8x8 LED Matrix's are very helpful for debugging new code.
And for that matter, just trying to maximize printer settings without
causing stuttering.
The displays are very inexpensive (under $2.00 with shipping) and
provide a lot of help when trying to debug complicated code.
* Try to keep Makefile up to date.
Original Mesh Bed Leveling replacement put at top of UBL Menu Options to
help facilitate the removal of the Original Mesh Bed Leveling.
Radar display (and control) of the UBL Interactive Mesh Editing.
* Save up to 94 bytes of RAM on 20x4 LCD Display machines
Moved the custom screen characters out of RAM into Program Memory. With
SD-Card support and the Progress Bar enabled, this saves 94 bytes of RAM
memory.
This was tested using the example_configurations/FolgerTech-i3-2020
files. So a couple small changes to those files snuck into this Pull
Request.
Probably... We can find similar savings in the Graphics LCD code it we
comb through it. And if so... That is the place we really need to
save RAM memory!
* Tidy up white space and indentation
* Misc. Clean Up
Mostly UBL related clean up.
- But fixed a bug in the thermistortables.
- Made G26 more responsive to user aborts.
- Added sanity checks for older name for UBL_MESH_VALIDATION.
- Made G29 P4 able to edit invalidated mesh points
- Restore a reasonable Fade Height for UBL when creating new state information
- Get UBL's Topology Map to look a little bit better
- Make sure the user doesn't see a blank screen when doing Mesh Editing.
* Huh??? GitHub Desktop screwed up!
* get the planner object in scope
* Fix out of scope z_fade_height
* Travis timed out...
I need a change so I can force a new commit and sync.