* Correct over optimization of pre-initialized variables
NEAR_ZERO() works most of the time... But it leaves corner cases
uncovered. We need to explicitly check if these variables are +/-
infinity.
* Correct over optimization of pre-initialized variables
This is what I did yesterday:
- basicly gave the tests more comprehensive names; put all the
declarations at the top; got rid of the magic negative C-value (renamed
to P + A, O, T)
- "cos(RADIANS(180 + 30 * axis)) * (1 + circles * 0.1 * ((zig_zag) ? 1 :
-1)) * delta_calibration_radius" compiles wrong is zig_zag statement is
without brackets
- DELTA_TOWER_ANGLE_TRIM reset to 3 values (the calcs use the 3th value
to normalize will not compile otherwise)
-Wrote 3 dummies to keep EEPROM lenght the same
-Reset the configs to the 'original' with autocal + menu disabled (but
can be enabled of course)
The Configuration.h file entries for BL-Touch have been updated to:
```cpp
//#define BLTOUCH
//#define BLTOUCH_DELAY 375 // (ms) Enable and increase if needed
//#define BLTOUCH_HEATERS_OFF // if defined the printer's heaters are
turned off during probe event
```
The electro-magnetic interference from the bed and nozzle are affecting
the BL-Touch repeatability for some users. This problem can be helped
by shutting down the heaters during the actual probe event and then
quickly turning them back on.
Because this code is messing with the heaters, it is written in a
paranoid manner. It only turns the heaters back on if everything is
EXACTLY as it expects things to be. The BL-Touch probe must have been
put into a deployed state less than 20 seconds prior, or the stow()
function will NOT turn the heaters on.
This code has been tested and works for both G28 and probing functions.
Giving a negative number of probe points disables the tower angle
correction calibration ('4point' instead of '7point' solution)
EEPROM version updated
These are my two 'Nice' machines. Both are good example machines. The
FolgerTech i3-2020 is probably the best value kit on the market right
now. And it has developed a 'Cult Following' of hobbiests. I'll always
have an up to date Configuration.h file set for it, so it may as well be
an example configuration.
And the gCreate gMax 1.5+ is the best printer I've ever seen that runs
Marlin. For sure, I'll always have up to the minute Configuration.h
files for this printer also. I've moved over to using the gMax as my
primary development machine for Marlin. So... Besides being a good
machine, it is a nice convienience for me to have this Configuration.h
file as an 'Example'.
Also... The memory corruption issue may be fixed. The GCC compiler
was inlining static functions and this caused the G29() stack frame to
become much larger than the AVR could handle.
* relocated ubl state to config. store:
* removed a number of ubl state variables and padding which were largely unused - saved 58 bytes of both SRAM and EEPROM;
* modified ubl sanity_check - no longer checks removed state variables that were otherwise unused, where checking didn't seem to accomplish anything, ultimately;
* removed pre_initialized state, saving 64 bytes of SRAM;
* removed automatic saving of UBL state after UBL activation/deactivation;
* consolidated multiple GRID_MAX_POINTS_X/Y to 'Global Leveling' section of EEPROM;
* minor update to G29 Sx notes/instructions;
* renamed mesh load and save parameter to 'slot' from 'm' for clarity;
- Making M665 compatible with repetier (see
http://reprap.org/wiki/G_code#M665:_Set_delta_configuration)
- M665 B also sets the radius for manual calibration menu
- Converting tower ajustment definitions to arrays - tower angle
corrections compatible with Esher 3D wizzard
- Only tower angles need to be adjustable with M665 and stored to EEPROM
- tower radius and diag rod can be adjusted in the FW only with #define
This data corruption problem is very difficult. Just changing the code
a little bit changes whether the problem even happens and what is
affected. I need these changes in the main branch so I can operate with
the extra debug code always available and turned on.
Everything is setup such that if M100 is turned off or DEBUG(ECHO) is
turned off, the code is not affected. M100 has been made a little bit
more inteligent so it can display the serial command buffers in a more
meaningful way (because the data corruption seems to often times end up
in that area).
Configuration_store.cpp - changed a couple of print statements so the
values were printed. The old method resulted in the formula being
printed.
ubl_G29
1) added support for R option to P4. Now probes all points unless R is
present and the number is greater than 0.
2) P2 - moved map print statement so it showed the point that was
currently being probed, The old location did this only for the first
point.
3) P4 - Moved the map print for the same reason.
ultralcd.cpp - changed "Mesh Editor :" to "Mesh Editor" because the LCD
draw routine puts a ":" in automatically so you end up with an extra ":"
using the old message.
- On `DELTA` the `M665 H` option supplants `M206`
- On `DELTA` `NO_WORKSPACE_OFFSETS` only reverts `G92` behavior
- Spawn 4 conditionals based on `NO_WORKSPACE_OFFSETS`
- Optimize coordinate space conversion for `DELTA` workspace
- To keep EEPROM version, retain `home_offset[XYZ]`, just ignore XY
===============================================
make changes requested by reviewers
===============================================
add M43 test to Travis, fix EOL, remove trailing spaces
1. The CORExx printers were checking more endstop axis than needed.
2. Removed all the CORE_xx_NOT logic. The motor_direction(xx) routine
always returns the correct data so it is not needed. It was actually
cause the wrong direction to be checked in some cases.
3. Made the logic/defines for X, Y & Z axis all the same. The old logic
checked inappropriate configurations for Y and didn't check all the
correct configurations on Z.
4. Added a check for zero steps before the X, Y & Z axis. Previously
would check the they axis even if there were no movement.
All the memory accesses need to be unsigned char in order to avoid
false errors being detected. Two new features are available for
developers to call into the M100 functionality to look for data
corruption.