I've just uploaded a major change to pinsDebug.
The big change was creating an array in FLASH that contained every
active pin definition. That reduced the RAM memory usage considerably
but increased the FLASH usage.
Creating the array requires going through the pin list twice. Rather
than having two copies of it in the code I moved the list out to another
file (pinsDebug_list.h) and then just did two #includes.
From the user’s view they’ll see the following changes:
1. Now reports all the names assigned to a pin
2. The port is now reported in addition to the pin number.
3. When PWM0A & PWM1C share a pin, both PWMs are reported
4. More PWM/Timer info is reported
One new item that may cause some concern is the usage of the LINE
predefined preprocessor macro. It may not be available if the Arduino
IDE goes to a different compiler.
Includes support for 1284 & 1286 families.
Memory usage changes when enabling PINS_DEBUGGING:
ATmega2560
FLASH
. without 52576
. with new 64592
. with old 62826
. new-out 12016
. old-out 10250
. new-old 1766
.
RAM
. without 2807
. with new 2875
. with old 3545
. new-out 68
. old-out 738
. new-old -670
==================================================================
minor changes - mostly formatting
1) added newline to end of teensyduino file
2) changed flag name from TEENSYDUINO to TEENSYDUINO_IDE. Got warnings
about redefining TEENSYDUINO
3) removed some trailing spaces
reduce PROGMEM size & update pin list
Reduced PROGMEM usage by
1) converting often used macro to a function
2) moved as much as possible into the function
This required creating two arrays of address pointers for the PWM
registers.
==================================================================
update with new M3, M4, M5 pin names
==================================================================
report I/O status for unused/unknown pins
The offset for Z_DUAL_ENDSTOP (z_endstop_adj) is already in Marlin.
This PR just makes it a configuration item.
z_endstop_adj is initialized in two places so both had to be modified.
I've just uploaded a major change to pinsDebug.
The big change was creating an array in FLASH that contained every
active pin definition. That reduced the RAM memory usage considerably
but increased the FLASH usage.
Creating the array requires going through the pin list twice. Rather
than having two copies of it in the code I moved the list out to another
file (pinsDebug_list.h) and then just did two #includes.
From the user’s view they’ll see the following changes:
1. Now reports all the names assigned to a pin
2. The port is now reported in addition to the pin number.
3. When PWM0A & PWM1C share a pin, both PWMs are reported
4. More PWM/Timer info is reported
One new item that may cause some concern is the usage of the LINE
predefined preprocessor macro. It may not be available if the Arduino
IDE goes to a different compiler.
Includes support for 1284 & 1286 families.
Memory usage changes when enabling PINS_DEBUGGING:
ATmega2560
FLASH
. without 52576
. with new 64592
. with old 62826
. new-out 12016
. old-out 10250
. new-old 1766
.
RAM
. without 2807
. with new 2875
. with old 3545
. new-out 68
. old-out 738
. new-old -670
==================================================================
minor changes - mostly formatting
1) added newline to end of teensyduino file
2) changed flag name from TEENSYDUINO to TEENSYDUINO_IDE. Got warnings
about redefining TEENSYDUINO
3) removed some trailing spaces
reduce PROGMEM size & update pin list
Reduced PROGMEM usage by
1) converting often used macro to a function
2) moved as much as possible into the function
This required creating two arrays of address pointers for the PWM
registers.
==================================================================
update with new M3, M4, M5 pin names
==================================================================
report I/O status for unused/unknown pins
The fix in #6251 for bilinear Z offset was flawed and broke the Z parameter of G29 for bilinear levelling. This is reverted and a different fix is used for the double-addition of the Z-probe offset to the bilinear correction grid.
Since run_probe was altered to return the probe Z position rather than the nozzle Z position bilinear levelling has been broken because the Z-offset has been applied twice - once in the run_probe function, and then again in the G29 code for bilinear levelling.
The TB2 is a Indiegogo funded 3d printer. It uses a MKS SMELZI V1.0
main board (based on MELZI, i.e. Sanguinololu). I comes as a complete kit,
including display and panel.
Two variants exists, L10 and L16, with a height of 100 and 160 mm.
The heating function of the provided bed can enabled by soldering a
thermistor and some wires to it.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
The OLED is driven by an SSD1306, connected to the board via
I2C, the rotary encoder is connected to 3 GPIO pins.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
- Make all `unified_bed_leveling` data/methods static
- Move some UBL-related variables into the class
- Replace `map_[xy]_index_to_bed_location` with `mesh_index_to_[xy]pos`
With the the current definition of echo_command I cannot compile RCBugFix (Arduino IDE 1.8.1) with the error "invalid conversion from 'const char*' to 'char*'". This change resolves that.
After wraparound, pwm_count <= pwm_mask holds, thus soft_pwm_X <= pwm_count
guarantees soft_pwm_X < pwm_mask is true, and the heater will be switched
off in the first branch.
Do not evaluate the pwm conditions a second time, this reduces the
instruction count (4 instructions per PWM) and text size (6 byte).
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
The compiler is not able to reuse the value of pwm_count, but reloads it
on every evaluation, if is stored in a static variable, as it cannot prove
it will be unchanged. A variable with local scope may not be modified from
the outside, so its value can be reused.
Doing so reduces text size and instruction count.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
If dithering is enabled, the remainder of the soft_pwm_X duty value at
turnoff time is added to the next cycle. If e.g. the duty is set to 9 and
SCALE is set to 2, the PWM will be active for 8 counts for 3 cycles and
12 counts on each fourth cycle, i.e. the average is 9 cycles.
This compensates the resolution loss at higher scales and allows running
fans with SOFT_PWM with significantly reduced noise.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>
A 128 step PWM has 127 intervals (0/127 ... 127/127 duty). Currently, a
PWM setting of 1/127 is active for 2/128, i.e. double the expected time,
or, in general n+1/128 instead of n/127.
Fixes issue#6003.
Signed-off-by: Stefan Brüns <stefan.bruens@rwth-aachen.de>