Uses PWM1 to directly control pins 4, 6 & 11 (servo 0, 1 & 3) and PWM1
generated interrupts to control other pins.
Interupt control of the servo pins had too much jitter so switched all
that we could to PWM1 direct control. The PWM1 direct control pins have
less than 1 microsecond pulse width jitter while the interrupt
controlled ones can have 20+ microseconds of jitter.
Also added insurance to the servo code in the "disable servo after move"
section.
Because of the Re-ARM card's pinout there is only one SPI connected to
the RepRap Discount Full Graphic LCD display. The LCD responds to ANY
SCK transitions no matter if it's enable is inactive. The result is
garbage (usually bars) on the LCD display whenever there is SD card
activity.
This code minimizes this by only accessing the SD card when changing
directory levels if :
SDCARD_SORT_ALPHA is enabled
SDSORT_USES_RAM is true
SDSORT_CACHE_NAMES is true
The code changes result in file names being pulled from the ALPHA SORT
memory array rather than the SD card.
The code also gives the file count and file index functions their own
variables. When they shared a common variable the index function
sometimes resulted in the file count being short by 1.
=======================================================================
cardreader.cpp & pins_RAMPS_RE_ARM.h changes
Added another condition to cardreader.cpp to enable getting file names
only from RAM.
pins_RAMPS_RE_ARM.h :
Added comments about the SD card accesses and the LCD display
Combined all versions into this one.
Re-ARM has been tested. AVR has not been tested.
1) moved all cpu specific items to files in the low level HAL directory
for that CPU (pinDebug_Re-ARM.h & pinsDebug_AVR_8_bit.h
2) added pinsDebug.h to the top level directory
3) modified HAL_pinsDebug.h to select the correct support file for the
selected CPU
4) Patched sanitycheck to stop throwing false errors. A long term
solution will be done
5) misc changes & bug fixes
arduino.cpp - included macros.h to fix a missing definition
pinmap_re-arm.h - removed a duplicated line.
pinmapping.h - changed from "ENABLED" to "defined" to fix a compile
error
======================================================================
split SanityCheck up, improve pinsDebug system
======================================================================
switch to latest pins_RAMPS_RE_ARM.h
* 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.
Probing with the effector in the printing area, but an eccentric probe (e.g. allen key) outside it but still touching the bed gives meaninfull information for calibration. Since calibration is most accurate when probing as close to the towers as possible the testing was way to restrictive hence this fix.
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
==============================
Configuration_adv.h changes
==============================
add "live" LCD update
==============================
P & S version
==============================
final (hopefully) tested version
==============================
update M115 capabilities print
==============================
Menu changes portion of the requested changes
==============================
changed USEABLE_HARDWARE_PWM from a function to a series of macros
==============================
changes per review
* 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.
Adding the capability to specify ahead of time how much of the validation pattern to print made it so by default G26 only did one circle and no connecting lines.
It is more natural for the unsophisticated user to just do the entire mesh (bed). We default the repetition count to GRID_MAX_POINTS+1 to insure we get every last one of them!
UltiPanel was enabled, but technically, it is a REPRAP_DISCOUNT_SMART_CONTROLLER
Either configuration works on the machine. But we want it 'Right'.
Setup the Proportional Font spacing so columns line up nicer on PronterFace and Repetier Host.
* M421 Mesh Point Offset and misc. UBL clean up
Allow M421 to accept an offset as well as absolute value for a specified
mesh point.
And misc. UBL clean up to reduce redundent code.
* Better error checking for M421
* Fix M421 Y index bug
I just noticed.... We've had a Y index bug for who knows how long?
I think I forgot to Sync before I committed last time. Some UBL
changes did not stick.
Also, update the gMax configuaration.h file so other than unique numbers
and settings, it exactly matches the default configuration.h file.
* Restore LSF functionality
Some of the typo's persisted... Hopefully this gets them all fixed.
* Restore user's expectations of how G28 should behave
* Allow Nozzle size control with ornery host programs
Right now G26 doesn't send a notice to the host that it's running. It's
not until the heaters are at temperature that you know for sure if it's
running or not.
Added host temperature prints so that someone watching the host
interface will see the temperatures change during the warm up period.
Updates are sent every 5 seconds.
* 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.