Compare commits

...

984 commits

Author SHA1 Message Date
Thijs Triemstra
60879fd298
klippy: fix typos in python code (#6989)
Some checks are pending
Build test / build (push) Waiting to run
Signed-off-by: Thijs Triemstra <info@collab.nl>
2025-07-25 12:31:19 -04:00
Paul Arthur
ef4c76fe94 safe_z_home: correct error call
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
Signed-off-by: Paul Arthur <paul.arthur@flowerysong.com>
2025-07-22 14:17:43 -04:00
Kevin O'Connor
116b304541 avr: Switch to input state prior to enabling pullup in gpio_in_reset()
If switching a pin from output low to input with pullup, there is an
intermediate state of either driven high or high impedance without a
pullup.  Similarly, when switching from output high to input without a
pullup, there is an intermediate state of either driven low or high
impedence with a pullup.  In both cases it is preferable for the
latter transition.

Also, calculate the final setting prior to making any changes to
reduce the time in that intermediate state.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-22 14:11:17 -04:00
Kevin O'Connor
3219712c17 i2c_software: Place wires in high impedance state after setup
Don't leave the wires in a high output state during setup - leave them
in a high-impedance with pullup state.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-22 14:04:50 -04:00
Kevin O'Connor
b761b8c654 i2c_software: Implement regular timing even on AVR chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-22 14:04:50 -04:00
Kevin O'Connor
a209d4db5b mcp4018: Remove support for manual i2c - use standard mcu software i2c instead
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-22 14:04:50 -04:00
Kevin O'Connor
354b1e666b pca9632: Remove custom software i2c - use normal mcu software i2c instead
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-22 14:04:50 -04:00
Kevin O'Connor
4691243179 heaters: Increase time before clearing the temperature of an inactive heater
The get_temp() code will stop reporting the last temperature of the
heater if there hasn't been any recent temperature updates.  However,
on a full mcu communication loss this can cause the verify_heater code
to report a heating error prior to the mcu code reporting the
communication failure.  Increase the heater timeout from 5 to 7
seconds to make it more likely the mcu failure is reported first.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-19 11:24:59 -04:00
Timofey Titovets
4e4a5c6336 stm32: make i2c distinguish I2C NACKs
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-17 19:36:01 -04:00
Timofey Titovets
9323a5dfe2 readlog.py: add support for stallguard data
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
b724b3a348 data_logger.py: add tmc/stallguard_dump endpoint
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
317f8c94c8 tmc.py: add track of stallguard
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
9c0d0f6a72 tmc: add enriched UART read
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
5923a2e3a1 tmc: add spi status decode
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
8d67e1a4e9 tmc2660: add enriched SPI read
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Timofey Titovets
33bd67f9b7 tmc: add enriched SPI read
Currently TMC spi just drop the data that could be useful.
Export that data.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-12 16:17:22 -04:00
Findlay Feng
993cec0891
sos_filter: fix overflows_int32 (#6976)
Some checks are pending
Build test / build (push) Waiting to run
Modify the inline function overflows_int32 to static inline
Inline functions cannot be debugged in -O mode
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=49653

Signed-off-by: Findlay Feng <i@fengch.me>
2025-07-11 11:08:35 -04:00
Kevin O'Connor
697c6e8d28 mcu: Avoid altering self.TIMEOUT_TIME in RetryAsyncCommand
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-11 10:56:03 -04:00
Timofey Titovets
2585accfeb sht3x: reads should be retried with at least 0.5s pause
Some checks are pending
Build test / build (push) Waiting to run
SHT3x would return a read NACK on host retries.
When the MCU receives the I2C CMD, it reads out data.
SHT3x clears the data buffer.
The MCU fails to deliver a response to the host.
The host retries, the device returns NACK,
then the MCU goes into the shutdown state.

Make sure there is at least 0.5s between retries.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-11 10:46:57 -04:00
Timofey Titovets
37ddab223f mcu: allow disable send retries
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-11 10:46:57 -04:00
Timofey Titovets
119d007058 stm32: f0 do not send empty write on read
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-09 15:45:52 -04:00
Timofey Titovets
1931b11001 stm32: f0 make i2c distinguish I2C NACKs
Some devices can return a read NACK on host retries.
When the MCU receives the I2C CMD, reads out data,
but fails to deliver a response to the host.
The host retries, the device returns NACK,
and the MCU goes into the shutdown state.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-07-09 15:45:52 -04:00
Kevin O'Connor
c01e6eee1d ads1x1x: Rename local 'config' variable to pcfg
Some checks are pending
Build test / build (push) Waiting to run
Avoid using the name "config" as a local register storage variable as
it can be confused with the common "config" configfile reference.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-08 18:55:25 -04:00
Kevin O'Connor
42fbf8256f ads1x1x: Revert incorrect removal of assignment to self.config
Commit d120a313b incorrectly removed an assignment to self.config - in
this instance the reference was to a local variable not related to the
global configfile storage.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-07-08 18:49:12 -04:00
Kevin O'Connor
9346ad1914 load_cell_probe: Fix warnings on avr builds
Some checks failed
Build test / build (push) Has been cancelled
On AVR, integers are 16bit, so be sure to promote math to 32bit where
needed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-18 11:09:58 -04:00
jimmyjon711
0e52f03b5b
stm32: Adding more hardware pwm capable pins for STM32Hx series chips (#6965)
Signed-off-by: Jim Madill <jcmadill1@gmail.com>
2025-06-18 11:05:17 -04:00
Kevin O'Connor
f54b7b9376 sos_filter: Fix validate_section_index() check
Some checks failed
Build test / build (push) Has been cancelled
A section_idx equal to max_sections is also invalid.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-11 17:59:02 -04:00
Kevin O'Connor
5666b88c69 ar100: Convert to or1k-elf toolchain
Some checks are pending
Build test / build (push) Waiting to run
The more.musl.cc site is blocking downloads from all github actions,
which makes it difficult to use that site for the ar100 cross build
toolchain.  Convert to the openrisc or1k-elf toolchain as a
replacement.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-08 14:15:50 -04:00
Kevin O'Connor
889be5b275 docs: Fix typo in Benchmarks.md
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-08 12:23:02 -04:00
Timofey Titovets
607d0b4237 input_shaper: fix printer obj reference
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-06-06 15:43:29 -04:00
Kevin O'Connor
d120a313b7 docs: Note 'config' object shouldn't be accessed after initial load
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
Update Code_Overview.md to note that the config object should not be
stored after the "config loading phase".

Remove a few inadvertent cases where a 'config' object was stored
in module member variables.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-04 13:46:28 -04:00
Dmitry Butyugin
4d4b9684a5 input_shaper: Track kinematics updates by dual_carriage
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-06-04 13:40:58 -04:00
Kevin O'Connor
14cbb8dd2d rp2040: Prefer larger postdiv1 on rp2040 chips
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
The rp2040 uses a pll vco divider of 6.  Prefer setting postdiv1=6 and
postdiv2=1 (instead of the previous postdiv1=3 and postdiv2=2).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-02 14:10:42 -04:00
Kevin O'Connor
aa3388cc59 klippy-requirements: Update setuptools revision to 78.1.1
A security vulnerability was found in setuptools - increase package
dependency to fixed version.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-02 13:31:17 -04:00
Timofey Titovets
d6902240dd htu21: fix crash on unknown dev id
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-06-02 13:17:41 -04:00
Kevin O'Connor
105ce35e1b stm32: Add comments on PLL frequency requirements to clock setup code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-02 13:15:53 -04:00
Kevin O'Connor
c0ca4c5cc7 docs: Update benchmarks with stm32g431 chip
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-06-02 13:15:48 -04:00
Kevin O'Connor
cfa48fe39f stm32: Run stm32g431 at 170Mhz
The chip supports 170Mhz, so no need to run at 150Mhz.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-31 15:20:12 -04:00
Ingo Donasch
2dd73d0431
print_stats: Fix for filament statistics bug in print_stats.py for toolchangers (#6946)
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
added extruder:activate_extruder event hook to print_stats.py to update self.last_epos

Signed-off-by: Ingo Donasch <ingo@donasch.net>
2025-05-31 13:06:44 -04:00
Kevin O'Connor
d25602e88d docs: Update CAN bus command rate benchmarks
Add a benchmark for the rp2350 device when running via CAN bus.
Remove the old stm32f042 CAN bus benchmark as that test predates a
number of importnat CAN bus code changes and is likely no longer
accurate.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-31 12:24:40 -04:00
Kevin O'Connor
1f3b4cc749 stm32: Fix spi overflow issue on stm32h7
Some checks are pending
Build test / build (push) Waiting to run
Completely filling the spi transmit fifo could lead to a situation
where the rx fifo overflows.  Make sure not to write past the rx fifo
size.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-30 20:36:09 -04:00
Kevin O'Connor
8e58f8fb39 rp2040: Fix spi overflow issue
Completely filling the spi transmit fifo could lead to a situation
where the rx fifo overflows.  Make sure not to write past the rx fifo
size.

Also, be sure to wait for the transmission to fully complete before
exiting spi_transfer().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-30 16:34:49 -04:00
Timofey Titovets
f4130aa948 rp2040: spi - enable fifo
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-30 15:18:07 -04:00
Kevin O'Connor
de182b1d14 stm32: Support using CANBUS on PB5/PB6 on stm32h7 chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-30 15:15:13 -04:00
Kevin O'Connor
f5956b5395 stm32: Simplify Kconfig HAVE_STM32_CANBUS checks
Avoid unnecessary (HAVE_STM32_CANBUS && MACH_STM32xx) checks in
Kconfig.  The HAVE_STM32_CANBUS is a helper symbol for all the chips
that support canbus, there's no need to mix it with a check for a chip
that is already known to have canbus.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-30 15:15:13 -04:00
Kevin O'Connor
8d7e487149 sos_filter: Improve error checking on section_idx
Some checks failed
Build test / build (push) Waiting to run
klipper3d deploy / deploy (push) Has been cancelled
Validate host provided index prior to accessing memory using that
index.

Also, consistently use a uint8_t for max_sections (to account for
integer overflow issues).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-29 19:30:45 -04:00
Kevin O'Connor
eb43b20e3b load_cell_probe: Avoid peeking directly at config.section member variable
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-29 19:17:45 -04:00
Gareth Farrington
388fe1b23f docs: Load Cell Probe Documentation
Add documentation updates for Homing & Probing with load cell probe

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:11:05 -04:00
Gareth Farrington
f6d878a898 filter_workbench: Add Filter Workbench
Add a filter workbench Jupiter notebook to help printer developers tune filters based on probing data

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:10:51 -04:00
Gareth Farrington
b3e894f241 load_cell_probe: Create LoadCellProbe
Initial setup of Load Cell Probing. This implementation supports triggering from the Load Cell Probe on the MCU. It also supports, optiopnal, filtering of the force signal by sos filter to eliminate drift caused by bowden tubes or other mechanical causes.

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:10:21 -04:00
Gareth Farrington
3dbac01e1d probe: Create ProbeVirtualEndstopDeprecation
As probes stop supporting `probe:z_virtual_endstop` this class will give users a polite and specific configuration error.

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:08:32 -04:00
Gareth Farrington
69507a0354 sensor_hx71x: Update Sensors to report to load_cell_probe
Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:07:49 -04:00
Gareth Farrington
42c9031c81 load_cell_probe: Create load_cell_probe MCU object
Implement MCU features that enable using an adc to stop an axis

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:06:48 -04:00
Gareth Farrington
cb0c38f7d8 sos_filter: Second Order Sections MCU Filter
This is an implementation of the SOS fliltering algorithm that runs on the MCU.

The filter opperates on data in fixed point format to avoid use of the FPU as klipper does not support FPU usage.

This host object handles duties of initalizing and resetting the filter so client dont have to declare their own commands for these opperations. Clients can select how many integer bits they want to use for both the filter coefficients and the filters output value. An arbitrary number of filter sections can be configured. Filters can be designed on the fly with the SciPy library or loaded from another source.

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-05-29 19:01:38 -04:00
Timofey Titovets
0181023954 lis2dw: if spi is used - disable i2c
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-26 18:44:29 -04:00
Timofey Titovets
07b3726d31 stm32: h7 spi - add a delay on SCK polarity change
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-26 18:44:29 -04:00
Timofey Titovets
28a4baf95c spi_software: add a delay on mode change
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-26 18:44:29 -04:00
Timofey Titovets
14685bf77f rp2040: add a delay on SCK polarity change
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-26 18:44:29 -04:00
Dmitry Butyugin
b1011e3fb1 dual_carriage: Fixed input shaper stepper kinematics initialization
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-05-22 14:44:09 -04:00
Kevin O'Connor
17b8ce4c6b docs: Remove SHAPER_CALIBRATE and usb-to-canbus bridge warning in CANBUS.md
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
There have been several optimization to the usb to canbus bridge code
since that statement and it is likely many setups can run a
SHAPER_CALIBRATE with all activity on a single 1mbit canbus.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-19 12:54:26 -04:00
Kevin O'Connor
9090377bbc stm32: Allow stm32g4 chips to select a bootloader
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-19 12:31:46 -04:00
JamesH1978
2d4589949c
docs: Update Installation.md - Flash loop protection (#6935)
Added a paragraph about flash loop protection on some motherboards. It has been noted that not all people know about the need to change the bin filename on some stock boards or other methods that may hinder progress.

Signed-off-by: James Hartley <james@hartleyns.com>
2025-05-19 12:30:39 -04:00
Timofey Titovets
8c01be8c75
stm32: spi enable fifo if supported (#6936)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-19 12:24:29 -04:00
Timofey Titovets
3a015cd00d stm32: H7 spi enable use of fifo
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-05-19 12:21:33 -04:00
Kevin O'Connor
841a9ca2f7 stm32: Avoid read-modify-write register access in stm32h7_spi.c
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-16 12:26:52 -04:00
Kevin O'Connor
fe9eff8ce3 docs: Fix index.md links
Use relative links in index.md and correct the location of the COPYING
file.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-16 12:14:45 -04:00
Rowland
82f540bb73
docs: BED_MESH_CALIBRATE makes a mesh that is immediately available. (#6919)
Some checks failed
Build test / build (push) Has been cancelled
klipper3d deploy / deploy (push) Has been cancelled
The docs aren't particularly clear that if you generate a mesh in our start g-code, you can just use it without additional commands. This is causing issues with support on r/klippers

Signed-off-by: Rowland Straylight <rowlandstraylight@gmail.com>
2025-05-14 13:53:10 -04:00
Kevin O'Connor
ed36041b67 resonance_tester: Fix typo
Some checks failed
Build test / build (push) Has been cancelled
Fix typo introduced in 307c03e48.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-13 11:14:30 -04:00
Kevin O'Connor
1af219fad6 klippy_requirements: Update dependencies to support Python v3.13
Some checks failed
Build test / build (push) Waiting to run
klipper3d deploy / deploy (push) Has been cancelled
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 21:51:53 -04:00
Kevin O'Connor
6c1d5d912a manual_stepper: Support LIMIT_VELOCITY and LIMIT_ACCEL when using gcode axis
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
ee0bc3d697 manual_stepper: Support position_min and position_max options
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
64e01f03a2 manual_stepper: Support INSTANTANEOUS_CORNER_VELOCITY on gcode axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
7201f41664 manual_stepper: Support registering as an additional axis
Add a new G-Code command that can register a manual_stepper as an
additional axis on standard G-Code G1 commands.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
d40fd2190d gcode_move: Support additional toolhead axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
4c21e1d00f gcode_move: Internally track an axis_map to map gcode axis names
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
2082300309 z_thermal_adjust: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
53acdfd0a5 skew_correction: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
a537ae0ceb exclude_object: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
307c03e480 resonance_tester: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
64d6f110a9 bed_tilt: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
447908ce0c bed_mesh: Support toolhead positions with more than 4 axes
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
bb281834b0 toolhead: Initial support for adding extra axes to toolhead moves
Add a new add_extra_axes() to support adding additional axes.  Once
called, toolhead.get_position() will return a list object with more
than 4 items, and toolhead.move() requires the same size list.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
9dbfc76d9d force_move: No need to pass 4 parameters to toolhead.set_position()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
ae536b4786 toolhead: Only alter XYZ coordinates on set_position() calls
It's not valid to alter the extruder position from a call to
set_position(), so don't allow callers to attempt that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
8928c394cf toolhead: Support unregister_step_generator() call
Allow both registering and unregistering step generation callbacks.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
01422da951 extruder: Remove update_move_time() call
The toolhead can obtain the underlying extruder trapq via
extruder.get_trapq().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Kevin O'Connor
f06eeb5c7a extruder: Rename extruder.move() to extruder.process_move()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-12 20:15:03 -04:00
Dmitry Butyugin
ca83c13f37 generic_cartesian: Fixed safe_z_home and manual_probe for new kinematics
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-10 20:16:00 -04:00
Dmitry Butyugin
8627c94d6a
stepper: Fix broken manual_stepper rail naming (#6929)
The naming got broken during refactoring for generic_cartesian.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-05-10 20:10:54 -04:00
Kevin O'Connor
6f87a4e685 stepper: Minor code tweak - remove unneeded parenthesis
Some checks failed
Build test / build (push) Has been cancelled
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 12:58:01 -04:00
Kevin O'Connor
b5aea5b774 stepper: Minor code reorg - remove unneeded HAVE_OPTIMIZED_PATH definition
Make it more clear that stepper_load_next() has three separate code
paths - one for each of the optimized stepper_event_X() functions.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 12:38:25 -04:00
Kevin O'Connor
fd55dd9e9d stepper: Also ensure minimum time after dir change and next step
In practice the host will not schedule any steps immediately after a
direction change (due to acceleration limits and the host
"step+dir+step filter").  However, there is also no harm in enforcing
a minimum duration in the mcu.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 09:52:05 -04:00
Kevin O'Connor
885f63cff0 stepper: Ensure minimum time between step pin and dir pin change
Commit 8faed8d9 made it possible to utilize stepper_event_full() while
utilizing tmc "step on both edges" optimation.  That commit would
ensure a minimum step pulse duration, but it did not ensure a minimum
duration between step pin and dir pin changes.  Commits 0d27195f and
554ae78d optimized the gpio handling on stm32h7 chips, which could
potentially cause a very small amount of time between step pin and dir
pin changes.

Enforce a minimum time after a step pin update before updating the dir
pin.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 09:52:05 -04:00
Kevin O'Connor
efabe63357 stepper: Move timer checks from stepper_event_full() to stepper_load_next()
This simplifies the stepper_event_full() and makes it easier to
implement more complex checks.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 09:52:05 -04:00
Kevin O'Connor
1dc9aa8e19 stepper: Free stepper_move struct near top of stepper_load_next()
Move up the freeing of the stepper_move struct and setting of
s->position in stepper_load_next().  This simplifies the code and
will make it easier to add more logic to this function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-09 09:52:05 -04:00
Matszwe02
9aba1a8536 gcode_macro: more descriptive "unable to parse as a literal" error - display faulty command
Some checks are pending
Build test / build (push) Waiting to run
Signed-off-by: Mateusz Szwedka <matszwe02@gmail.com>
2025-05-08 11:37:38 -04:00
JamesH1978
81277154d2
config: Update CR6-SE 2021 config with board revision (#6924)
As per #6923 this PR adds the fact that this config works for the late revision CR-ERA_V1.1.0.3 board as well.

Signed-off-by: James Hartley <james@hartleyns.com>
2025-05-08 11:36:04 -04:00
JamesH1978
d444289111
config: Update CR6-SE 2020 config with board revision (#6923)
It has been noted that there are 3 possible boards with 2 possible configs, which we have both of, but this one does not state that it is for the 4.5.2 early kickstarter version. Which was causing some confusion.

Signed-off-by: James Hartley <james@hartleyns.com>
2025-05-08 11:35:38 -04:00
Dmitry Butyugin
89ffbbed4c dual_carriage: Fixed broken safe_distance parameter
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-05-07 14:23:39 -04:00
Dmitry Butyugin
cc6736c3e3
kinematics: Generic Cartesian kinematics implementation (#6815)
* tests: Added a regression test for generic_cartesian kinematics

* kinematics: An intial implementation of generic_cartesian kinematics

* generic_cartesian: Refactored kinematics configuration API

* generic_cartesian: Use stepper instead of kinematic_stepper in configs

* generic_cartesian: Added SET_STEPPER_KINEMATICS command

* generic_cartesian: Fixed parsing of section names

* docs: Generic Caretsian kinematics documentation and config samples

* generic_cartesian: Implemented multi-mcu homing validation

* generic_cartesian: Fixed typos in docs, minor fixes

* generic_cartesian: Renamed `kinematics` option to `carriages`

* generic_cartesian: Moved kinematic_stepper.py file

* idex_modes: Internal refactoring of handling dual carriages

* stepper: Refactored the code to not store a reference to config object

* config: Updated example-generic-cartesian config

* generic_cartesian: Restricted SET_STEPPER_CARRIAGES and exported status

* idex_modes: Fixed handling stepper kinematics with input shaper enabled

* config: Updated configs and tests for SET_DUAL_CARRIAGE new params

* generic_cartesian: Avoid inheritance in the added classes

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-05-06 18:06:36 -04:00
Kevin O'Connor
1cc6398074 klippy-requirements: Add comments to each of the requirements
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-02 13:52:20 -04:00
Eric Callahan
1e045e8ee0 build: add msgspec python requirement
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2025-05-02 12:19:13 -04:00
Eric Callahan
f7e33df99d webhooks: support msgspec json serialization
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2025-05-02 12:19:13 -04:00
Kevin O'Connor
4504c0333f docs: Update stm32h723 benchmarks now that it runs at 520Mhz
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-02 12:06:59 -04:00
Kevin O'Connor
554ae78d8c stm32: Run stm32h723 at 520Mhz
Increase speed of stm32h723 chips from 400Mhz to 520Mhz.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-02 11:44:31 -04:00
Kevin O'Connor
ee79d0e307 stm32: Support over 400Mhz main clock in stm32h7_adc.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-02 11:44:31 -04:00
Kevin O'Connor
7b697105b3 stm32: Use 12Mhz nominal internal clock in stm32f0_i2c.c
Increase the internal nominal clock from 8Mhz to 12Mhz - this improves
support for higher chip frequencies.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-05-02 11:44:31 -04:00
Kevin O'Connor
3cf8899a5a docs: Note canbus_query.py limitations in CANBUS_Troubleshooting.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-29 13:52:57 -04:00
Kevin O'Connor
b7c243db19 docs: Note functioning canbus required even in bridge mode in CANBUS.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-29 13:02:34 -04:00
Kevin O'Connor
5b2f8104c7 neopixel: Round up in nsecs_to_ticks()
The rp2040 operates at a fast internal clock with a relatively slow
external timer and dividing down could result in a too small delay.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:55:30 -04:00
Kevin O'Connor
cf3bedfbdc stm32: Enable VOS0 power mode on stm32h723 if frequency above 400Mhz
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
7f4f696f10 stm32: Don't try to set incorrect PWR->CR3 register on stm32h7
It's not valid to set BYPASS and LDOEN at the same time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
9c37a918db stm32: Set the PLL frequency equal to CONFIG_CLOCK_FREQ on stm32h723
There is no reason to use a higher internal PLL frequency.  This
change also makes it possible to enable higher clock frequencies on
the stm32h723.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
f2b68fef73 stm32: Avoid read-modify-write register updates in stm32h7 clock_setup()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
c352617c30 stm32: Use enable_pclock() in stm32h7 clock_setup()
Use the helper functions to enable the peripheral clock instead of
directly manipulating the clock enable bits.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
5d1f773ffb stm32h7: Always clear AHB1ENR at startup on stm32h7
Entirely clear the AHB1ENR register.  There is no need to modify
AHB1LPENR.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:55 -04:00
Kevin O'Connor
da8e0a6e50 docs: Update date of cycle_time change in Config_Changes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:36:12 -04:00
Kevin O'Connor
42faa962fc mcu: Decrease mcu.max_nominal_duration() to 3 seconds from 5
This allows the mcu to utilize faster internal speeds.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
0f94f6c8e3 heaters: Confirm heater setting in mcu every 3 seconds instead of 5
Increase the confirmation rate of heater enable settings.  This allows
the mcu to utilize faster internal speeds.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
c917bd893d pwm_tool: Use mcu.min_schedule_time() and mcu.max_nominal_duration()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
d57bc253c5 led: Use mcu.min_schedule_time() and mcu.max_nominal_duration()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
0dce120a20 pwm_cycle_time: Use mcu.min_schedule_time() and mcu.max_nominal_duration()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
ab61b0a435 output_pin: Use mcu.min_schedule_time() and mcu.max_nominal_duration()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
cc919a5f8d mcu: Add new min_schedule_time() and max_nominal_duration() helpers
Add a function that returns the minimum amount of time the host needs
to reserve for messages to be sent from host to micro-controller.

Add a function that returns the maximum amount of time (in seconds)
that all micro-controllers should be able to schedule future timers
at.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Kevin O'Connor
8e107b2280 basecmd: Update stats timing check to support 32bit duration
Use a 32bit duration check instead of the previous 31bit check.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-28 19:28:52 -04:00
Wulfsta
f1e0730701 lis3dh: increase scale from 8g to 16g
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2025-04-28 19:27:43 -04:00
Timofey Titovets
2e82fc4790 spi_flash: fix hw bus
_try_send_command() expects a list of args,
But receives a string.

Fixes abc76ee963.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-28 15:58:55 -04:00
Timofey Titovets
bfda326c24
spi_flash: fix spi bus switch (#6906)
Fixes abc76ee963.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-20 11:39:24 -04:00
Russell Cloran
f2b27d17b7 stm32: Add support for spi6 on stm32f42x chips
Signed-off-by: Russell Cloran <rcloran@gmail.com>
2025-04-19 12:12:55 -04:00
Kevin O'Connor
5001983d34 stm32: Fix pll_base on stm32h7 when using a clock other than 25Mhz
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-19 12:09:58 -04:00
Kevin O'Connor
73e27aee4f docs: Update benchmarks for stm32h7
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-19 12:03:55 -04:00
Kevin O'Connor
0d27195fd4 stm32: Add optimized stm32h7_gpio.c
Add optimized gpio functions for stm32h7 - caching the ODR register
can notably improve the performance of the gpio_out_toggle() code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-19 11:48:58 -04:00
Kevin O'Connor
1f5783a250 probe: Remove ProbeEndstopSessionHelper
Have all callers instantiate the individual helper classes directly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
37952e8686 probe_eddy_current: Separate probe style commands from homing operations
Separate homing operations (as called from probe:z_virtual_endstop)
from the normal probe command handling.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
ab9b9e8584 probe_eddy_current: Do not support QUERY_PROBE command
Report an error if a user issues a QUERY_PROBE command (instead of
always returning not-triggered).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
3fb1191cad probe: Add a new LookupZSteppers helper class
Split code to lookup the Z stepper from HomingViaProbeHelper to new
LookupZSteppers class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
f3a1c914a4 probe: Convert probing_move() callback to use regular probe sessions system
Use the normal probe_session_start(), run_probe(),
pull_probed_results(), and end_probe_session() API from
ProbeSessionHelper.  This removes the custom probing_move() callback.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
b2e36e5d98 probe: Change probing_move() to pass a gcmd instead of (pos, speed)
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
ff0ffedd17 probe: Add a new ProbeParameterHelper class
Split multi-sample config reading from ProbeSessionHelper to a new
ProbeParameterHelper class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
1e87d26707 probe: Add a new lookup_minimum_z() helper function
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
f8de9ae080 probe: Add a new ProbeEndstopSessionHelper class
Move the HomingViaProbeHelper() instance from ProbeSessionHelper to a
new ProbeEndstopSessionHelper class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
6a87c5e9f5 probe: Add a default probing_move() function to HomingViaProbeHelper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:38:34 -04:00
Kevin O'Connor
db7a9cf071 manual_stepper: Implement "drip moves" for manual stepper STOP_ON_ENDSTOP
Currently, `MANUAL_STEPPER STOP_ON_ENDSTOP=1` type commands will move
until hitting the endstop, but it will still always consume the total
amount of move time.  That is, following moves can't be started until
the total possible time of the homing move is completed.

Implement "drip moves" so that the code only schedules the movement in
small segments.  This allows following movements to be scheduled
without a significant delay.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:32:23 -04:00
Kevin O'Connor
765de72f9e toolhead: Avoid toolhead.move() and toolhead._process_moves() in drip_move()
Implement move checking and trapq loading directly from drip_move().
This simplifies the interactions between these components.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:32:23 -04:00
Kevin O'Connor
6202a0f3bc toolhead: Avoid LookAheadQueue calling back into toolhead class
Avoid lookahead.flush() calling back into toolhead._process_moves().
Instead, rename toolhead._process_moves() to
toolhead._process_lookahead(), have it call lookahead.flush(), and
consistently use it when flushing the lookahead queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-18 14:32:23 -04:00
Kevin O'Connor
413ff19ea8 neopixel: Add comments on timing
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 13:06:22 -04:00
Kevin O'Connor
4e7fcc2704 check-software-div: Add a new build check for software divide
Update the build checks to include a check for unexpected software
divide operations.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:09:19 -04:00
Kevin O'Connor
871637d3f2 Kconfig: Note which chips require software divide operations
Add a new HAVE_SOFTWARE_DIVIDE_REQUIRED that indicates which chips
require software divide.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:09:19 -04:00
Kevin O'Connor
0fbcc156c5 neopixel: Make sure nsecs_to_ticks() is always inlined
It is a compile-time calculation that needs to be inlined to work.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:09:19 -04:00
Kevin O'Connor
56d3f4e64c lcd_st7920: Make sure nsecs_to_ticks() is always inlined
It is a compile-time calculation that needs to be inlined to work.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:09:19 -04:00
Kevin O'Connor
cb6828ec34 lcd_hd44780: Make sure nsecs_to_ticks() is always inlined
It is a compile-time calculation that needs to be inlined to work.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:09:19 -04:00
Kevin O'Connor
3656006a30 stm32: Change hard_pwm.c MAX_PWM to 257
Choose a value for MAX_PWM that avoids an expensive run-time division.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:07:44 -04:00
Kevin O'Connor
7a9b06ad86 stm32: Fix prescaler overflow check in hard_pwm.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 12:07:44 -04:00
Kevin O'Connor
acd96047de docs: Update Config_Changes.md to note software spi is now rate limited
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-17 11:54:25 -04:00
Russell Cloran
516ef1d361 hall_filament_width_sensor: Add filament switch values to status
`hall_filament_width_sensor` contains a runout sensor object internally.
This exposes those values in the API status result.

```
SEND: {"id":123,"method":"objects/query","params":{"objects":{"hall_filament_width_sensor":["enabled","filament_detected","is_active","Diameter","Raw"]}}}
GOT: b'{"id":123,"result":{"eventtime":199567.823596603,"status":{"hall_filament_width_sensor":{"enabled":true,"filament_detected":true,"is_active":true,"Diameter":1.9499999999999986,"Raw":6113}}}}'
```

The duplication of `is_active` and `enabled` seems confusing, but both
of these can be independently manipulated by GCode:

```
SEND: {"id":123,"method":"gcode/script","params":{"script":"DISABLE_FILAMENT_WIDTH_SENSOR"}}
GOT: b'{"id":123,"result":{}}'
SEND: {"id":123,"method":"objects/query","params":{"objects":{"hall_filament_width_sensor":["enabled","is_active"]}}}
GOT: b'{"id":123,"result":{"eventtime":199770.446013297,"status":{"hall_filament_width_sensor":{"enabled":true,"is_active":false}}}}'

SEND: {"id":123,"method":"gcode/script","params":{"script":"SET_FILAMENT_SENSOR SENSOR=hall_filament_width_sensor ENABLE=0"}}
GOT: b'{"id":123,"result":{}}'
SEND: {"id":123,"method":"objects/query","params":{"objects":{"hall_filament_width_sensor":["enabled","is_active"]}}}
GOT: b'{"id":123,"result":{"eventtime":199847.927726196,"status":{"hall_filament_width_sensor":{"enabled":false,"is_active":false}}}}'
```

Signed-off-by: Russell Cloran <rcloran@gmail.com>
2025-04-17 11:44:26 -04:00
Timofey Titovets
b9757c9b69 tmc: add missing freewheel config options
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:42:44 -04:00
Timofey Titovets
a9b04e8536 i2c_software: pass pulse ticks from host
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:41:49 -04:00
Timofey Titovets
841adcfff7 i2c_software: reduce gpio calls count
gpio reset calls are heavy.
gpio state are persistent between calls.
Drop useless calls.
Avoid calls if SDA does not changed.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:41:49 -04:00
Timofey Titovets
8ab12c86bf i2c_software: allow freq adjust
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:41:49 -04:00
Timofey Titovets
abc76ee963 software_spi: set rate limiting ticks from the host
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:37:12 -04:00
Timofey Titovets
b826844b34 spi_software: respect expected rate
On fast MCU software spi may violate maximally supported by TMC driver rate.

Add dynamic limits to overcome that.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-17 11:37:12 -04:00
Kevin O'Connor
017371b744 Revert "Makefile: Don't disable gcc's use-linker-plugin option"
This reverts commit 8087200ffe.

The change can break the build on some versions of gcc.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 15:24:05 -04:00
Kevin O'Connor
4aa2250221 test: Disable all additional features in atmega328 build
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 15:24:05 -04:00
JamesH1978
49d9ed22bf
config: Update generic-bigtreetech-skr-2.cfg - SPI Drivers (#6895)
Added SPI tmc2130 driver config

Signed-off-by: James Hartley <james@hartleyns.com>
2025-04-16 14:13:17 -04:00
Kevin O'Connor
51311948be atsamd: Enable HAVE_LIMITED_CODE_SIZE on small atsamd chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
61bbd455cf Kconfig: Add some user visible comments to the optional features menu
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
d93645a750 stm32: Simplify Makefile
Breakout selection of timer and gpioperiph objects.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
8c67adc164 Kconfig: Add new WANT_ADC option to reduce code size
Make it possible to not compile in support for ADC on chips with small
flash sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
04e7eb20fd Kconfig: Add new WANT_I2C option to reduce code size
Make it possible to not compile in support for I2C on chips with small
flash sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
868760f5b1 Kconfig: Add new WANT_SPI option to reduce code size
Make it possible to not compile in support for SPI on chips with small
flash sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
b0fa36e221 Kconfig: Add new WANT_HARD_PWM option to reduce code size
Make it possible to not compile in support for hardware pwm on chips
with small flash sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
6356e3d35c stm32: Enable gcc -Os option on CONFIG_HAVE_LIMITED_CODE_SIZE
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
6e9b5b309c avr: Enable gcc -Os option on CONFIG_HAVE_LIMITED_CODE_SIZE
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:44 -04:00
Kevin O'Connor
d98abfc5db Kconfig: Replace WANT_DISPLAYS with individual options
Support setting WANT_ST7920 and WANT_HD44780 individually.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:39 -04:00
Kevin O'Connor
c3c64adc32 Kconfig: Replace WANT_GPIO_BITBANGING with individual options
Support setting individual options instead of one global option (
WANT_BUTTONS, WANT_TMCUART, WANT_NEOPIXEL, WANT_PULSE_COUNTER,
WANT_HX71X).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:54:27 -04:00
Kevin O'Connor
efc2d9b364 workflows: Update github build-test.yaml to ubuntu-22.04
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:19:54 -04:00
Kevin O'Connor
d96bb6ca82 test: Disable optional features in atmega328 build
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:19:54 -04:00
Kevin O'Connor
8087200ffe Makefile: Don't disable gcc's use-linker-plugin option
This option seems to be confusing ld's region usage checks (builds
that could fit in small chips are being reported as not fitting).  The
option was disabled back in commit 4e8674d5 because it showed worse
results.  However, recent versions of gcc seem to produce the same
results even if this option is enabled, so change the build to avoid
disabling that option on newer versions of gcc (those that have the
-ffat-lto-objects option - which is needed to ensure
compile_time_requests sections can be extracted with objcopy).

The PRU build is dependent on -fuse-linker-plugin, so enable that
option explicitly in its build.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-16 13:17:19 -04:00
Kevin O'Connor
61c0c8d2ef docs: Note the release of v0.13.0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-11 21:07:28 -04:00
Kevin O'Connor
ce7657e537 docs: Update Features.md to reflect recent work
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-11 21:07:28 -04:00
Kevin O'Connor
037377b927 led: Fix off-by-one bug in SET_LED_TEMPLATE INDEX parameter
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-11 12:00:34 -04:00
Kevin O'Connor
5493bdfb48 ci-install: Use prebuilt pru gcc binaries
Don't build the pru binaries directly in the build test cases, instead
use the upstream binaries provided.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-08 23:34:17 -04:00
Kevin O'Connor
4b9cb36247 force_move: Make sure to use lower() on SET_KINEMATIC_POSITION CLEAR_HOMED
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-08 23:30:08 -04:00
Kevin O'Connor
f3e89e25c5 force_move: Support a SET_HOMED parameter to SET_KINEMATIC_POSITION
Commit 70838797 added support for clearing the homing state in
SET_KINEMATIC_POSITION commands.  However, it can be difficult to use
that support as the default for SET_KINEMATIC_POSITION is to set all
axes as homed.

Add a new SET_HOMED parameter to allow one to explicitly request which
axes to consider in a homed state.

Also introduce a CLEAR_HOMED parameter and prefer that to the existing
CLEAR parameter.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-08 23:23:05 -04:00
Kevin O'Connor
655861cf12 i2c_software: Fix i2c_delay()
The i2c_delay() function did not properly handle counter rollovers.
It also performed an expensive run-time divide.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-08 10:10:25 -04:00
Kevin O'Connor
050bc33241 docs: Fixup G-Codes.md so that sections are sorted alphabetically
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-07 15:26:56 -04:00
Maksim Bolgov
46ee920b93
axis_twist_compensation: Fix AttributeError on klippy connect state (#6881)
Object 'configfile' has no attribute 'error'

Signed-off-by: Maksim Bolgov <maksim8024@gmail.com>
2025-04-05 21:36:35 -04:00
Timofey Titovets
3a9e9a4bef temperature_combined: avoid crash with temperature monitors
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-05 21:27:37 -04:00
Timofey Titovets
3beb465247 temperature_combined: delay initialization
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-04-05 21:27:37 -04:00
MRX8024
2ec69ae361 docs: Add icm20948 description
Signed-off-by: Maksim Bolgov maksim8024@gmail.com
2025-04-03 14:08:23 -04:00
MRX8024
52b07f467e adxl345: Allow read and write 127 register address
icm20948 accelerometer has an ACCEL_CONFIG register at address 127

Signed-off-by: Maksim Bolgov maksim8024@gmail.com
2025-04-03 14:08:23 -04:00
MRX8024
81a1a03ed0 icm20948: Formatting refactor
Signed-off-by: Maksim Bolgov maksim8024@gmail.com
2025-04-03 14:08:23 -04:00
MRX8024
869440a7ed icm20948: Transition from 8g to 16g accels scale
During standard resonance measurements, the icm20948 in 8g mode may reach the accels max threshold.

Signed-off-by: Maksim Bolgov maksim8024@gmail.com
2025-04-03 14:08:23 -04:00
MRX8024
20f26b534d icm20948: Fix sample rate and accels scale selection
To set a value in the SET_ACCEL_CONFIG register, you must first go to BANK_2.

Signed-off-by: Maksim Bolgov maksim8024@gmail.com
2025-04-03 14:08:23 -04:00
Kevin O'Connor
91cba8a17f mkdocs-requirements: Update to Jinja 3.1.6
A security vulnerability was found in Jinja 3.1.5 .  The software is
not impacted by this vulnerability, but there is no harm in updating
to the fixed version.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-03 13:47:00 -04:00
Kevin O'Connor
be429caba3 output_pin: Make it possible to assign dicts/lists as template parameters
The output_pin template code has a cache to speed up duplicate
rendering of templates.  However, this cache doesn't work if one of
the parameters is a Python list or dictionary.  Just disable the cache
in this case.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-03 13:38:31 -04:00
Kevin O'Connor
8176ba22aa stm32: Turn on can.c error interrupts
It seems both ERRIE and LECIE must be enabled to get hardware error
interrupts.  Without this, the rx_error and tx_error reports are
likely to always be zero.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-03 13:32:23 -04:00
Russell Cloran
4b9add2fc3 stm32: Add support for additional i2c bus
Signed-off-by: Russell Cloran <rcloran@gmail.com>
2025-04-02 10:07:52 -04:00
Kevin O'Connor
55f60601ca stm32: Fix RESERVE_PINS_CAN pin ordering in fdcan.c
Always report the reserved pins in the same order (rx,tx).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-04-01 21:25:34 -04:00
Russell Cloran
876f351127 docs: Fix link syntax typo for bed_screws
Signed-off-by: Russell Cloran <rcloran@gmail.com>
2025-04-01 21:13:46 -04:00
Russell Cloran
089516a6f2 docs: Fix typo in docs generation documentation
Signed-off-by: Russell Cloran <rcloran@gmail.com>
2025-04-01 21:13:46 -04:00
Tobias Rumiz
f511e201f9 docs: Fix typos in installation.md
Fixed typos, hyphenation, and minor phrasing for better readability.

Signed-off-by: Tobias Rumiz <TobiasRumiz@gmail.com>
2025-03-31 11:28:04 -04:00
XiaoK
52617455ce
ldc_1612: Supports configurable external crystal frequency (#6734)
You can use the 40Mhz crystal oscillator recommended by TI official manual to get the best performance.
refer to: [ldc1612.pdf](https://www.ti.com/cn/lit/ds/symlink/ldc1612.pdf) 7.3.4

Signed-off-by: Xiaokui Zhao <xiaok@zxkxzk.cn>
2025-03-29 21:53:52 -04:00
FrY Sennberg
d679f711eb
stm32: Added PH13/14 CAN pin option for stm32h743 (#6857)
Added the option to select PH13/PH14 as CAN pins.

Signed-off-by:  Christoph Frei <fryakatkop@gmail.com>
2025-03-27 19:25:26 -04:00
Timofey Titovets
68dbbc8d41 rp2040: define spi bus on pins 12,11,10
Mellow FLY SHT36 Pro toolboard uses those pins

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-03-25 18:53:46 -04:00
Kevin O'Connor
59ebdce605 output_pin: Fix handling of template rendering errors
Make sure to assign 'value' on a rendering error to avoid an internal
error.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-25 18:46:38 -04:00
Kevin O'Connor
310747a636 fan_generic: Fix handling of template rendering errors
Make sure to assign 'value' on a rendering error to avoid an internal
error.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-25 18:45:12 -04:00
Kevin O'Connor
a3b4b39ff1 config: Add LED definitions to generic-bigtreetech-skr-mini-mz.cfg
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-24 17:43:41 -04:00
Pedro Lamas
fb91aad583 buttons: fixes incorrect parameters
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2025-03-21 13:36:27 -04:00
Kevin O'Connor
825d4baf90 stepper: Support disabling optimized "step on both edges" in "make menuconfig"
Add a new "low level option" to allow users to configure if they want
to optimize for Trinamic drivers or traditional stepper motor drivers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-20 19:56:55 -04:00
Kevin O'Connor
8faed8d9fe stepper: Support step on both edges with custom minimum pulse duration
Add support for "step on both edges" to the main stepper_event_full()
code.  This makes that mode of operation available even when the
micro-controller is not compiled for "optimized step on both edges".
It also enables the custom pulse duration support (step_pulse_ticks)
when in "step on both edges" mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-20 19:56:55 -04:00
Gareth Farrington
272e815522
buttons: Debounce gcode_button and filament_switch_sensor (#6848)
Add `debounce_delay` config option which sets the debounce time, defaults to 0

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-03-20 19:55:33 -04:00
Gareth Farrington
06d65ef5ac
load_cell: Load cell gram scale (#6729)
* Add gram scale features to load_cell
* Convert sensor counts to grams and make this available via unix socket and object status
* Basic GCodes for tearing and reading the load cell
* Guided Calibration
* Diagnostic gcode to check the health of the load cell
* Update load_cell Documentation
* Add API server load_cell/dump_force endpoint
* Update [load_cell] config with calibration fields
* Add G-Code commands for working with load cells
* Add status reference for load_cell objects

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2025-03-20 19:53:44 -04:00
Philippe Daouadi
d886c1761b axis_twist_compensation: allow compensating both axis at once
Restores the behavior before #6739 since people seemed to rely on it,
even if the math is not exact.

Signed-off-by: Philippe Daouadi <philippe@ud2.org>
2025-03-12 18:29:20 -04:00
Dmitry Butyugin
47aa28e530 input_shaper: Fix for polar kinematics
Forward post_cb calls from itersolve to the original kinematics.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2025-03-11 19:15:23 -04:00
Kevin O'Connor
fbd5b49215 docs: Note AXIS_TWIST_COMPENSATION_CALIBRATE AUTO removal in Config_Changes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-03-08 22:28:13 -05:00
yochiwarez
dad2196776 axis_twist_compensation: Remove the auto parameter
from axis_twist_compensation

Signed-off-by: Jorge Apaza Merma <yochiwarez@gmail.com>
2025-03-08 22:23:35 -05:00
Timofey Titovets
b50d740542
gcode_macro: Expand template syntax errors (#6839)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-03-07 18:32:31 -05:00
Marius Petcu
3e7efe5ef1 stm32: Add support for USART6 on STM32F401
STM32F401 has USART6 on PA12/PA11 and PC7/PC6 with alternate
function mapping AF08. This can be used, for example, to connect
to the Elegoo Neptune 3, where PA12/PA11 are wired to an RJ10 plug
going to the stock screen.

Signed-off-by: Marius Petcu <marius@petcu.me>
2025-03-07 17:52:46 -05:00
Paul Hansel
75a10bfcaf
icm20948: Add support for ICM20948 accelerometer (#6756)
Signed-off-by: Paul Hansel <github@paulhansel.com>
2025-03-04 17:12:26 -05:00
Thijs Triemstra
730e5951bc
docs: fix markup in Axis_Twist_Compensation.md (#6827)
Signed-off-by: Thijs Triemstra <info@collab.nl>
2025-02-28 19:38:38 -05:00
Kevin O'Connor
941fb5a367 usb_canbus: Send echo frame before processing the frame
The Linux kernel reports a canbus message as transmitted when it gets
the echo frame back.  Processing the message prior to sending the echo
frame can lead to odd looking debugging logs (as the response messages
may appear to predate the request messages).  This doesn't impact the
Klipper code, but it does make analyzing logs harder.  Fix by sending
the echo frame prior to processing the frame.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-27 13:24:19 -05:00
Kevin O'Connor
17d471c07c usb_canbus: Minor code cleanup - add new drain_host_queue() helper
Separate code in usbcan_task() to new drain_host_queue().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-27 13:24:19 -05:00
Kevin O'Connor
ef1d8bc3bd usb_canbus: Minor code cleanup - code movement and comment updates
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-27 13:24:19 -05:00
Kevin O'Connor
581c954f40 usb_canbus: Wake usbcan_task when sending from canbus_send
Don't limit the canbus_notify_tx() wakeup to cases where notify_local
is set - perform the wakeup whenever the host_status field indicates
the main task has work pending.

This fixes a small race condition where the main task could block
sending a usb echo frame, and the canbus_send() code gets called as
the usb bandwidth becomes available but before a usb wakeup
notification is sent.  In that situation, the usb code may not issue a
wake event and the echo frames may be delayed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-27 13:24:19 -05:00
GofranChang
98068beca0
skew_correction: Supports retrieving the name of the currently loaded skew correction … (#6821)
Signed-off-by: Zhang Gaofan <zhanggaofan0827@gmail.com>
2025-02-27 13:18:59 -05:00
Kevin O'Connor
3c1bf4ccfe test: Add rp2350 build to test cases
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-26 20:28:50 -05:00
Kevin O'Connor
1836ec431c docs: Update benchmarks for rp2040
Update benchmarks now that the rp2040 runs at 200Mhz.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-26 20:25:18 -05:00
Kevin O'Connor
14c105b86e rp2040: Fix build of rp2350
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-26 20:24:22 -05:00
Timofey Titovets
2f6d240900 rp2040: set clock to 200Mhz
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-02-26 20:11:17 -05:00
Eric Callahan
edc3d34beb bed_mesh: reduce generated point logging
With the introduction of "scanning" probes it has
become common for configurations to generate a large
number of points.  This can overwhelm both the log and
the pty when new points are generated.

This patch limits the initial points logged to 50.  In
addition points are no longer logged or pushed over
the pty when the mesh configuration changes.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2025-02-26 18:48:33 -05:00
Wulfsta
53f1bf2af2 sensor_lis2dw: remove commented code and fix formatting
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2025-02-26 15:17:31 -05:00
Kevin O'Connor
1fc6d214f4 stm32: Add support for stm32f070x6 mcus
This mcu has smaller memory and may require remapping of PA11/PA12.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-16 13:57:59 -05:00
Kevin O'Connor
bf5c4daf86 usb_cdc: Avoid ending a transmission with a max size usb packet
It seems the Linux kernel will consider a maximum size usb packet to
be a transaction that will continue into the next usb packet.  It will
thus hold on to the traffic from the first packet until it gets the
next packet.  However, if the mcu has no further data to send after
the first packet then the data could get delayed for an extended
period of time.

To avoid this, check for transmissions that could end on a maximum
sized packet and send that data in two packets instead.  This avoids
this unusual corner case.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-15 18:22:45 -05:00
Kevin O'Connor
ec56167032 usb_cdc_ep: Define endpoint sizes in usb_cdc_ep.h
Move the definition of the usb endpoint sizes from usb_cdc.h to
usb_cdc_ep.h .  This allows individual boards to override the default
endpoint sizes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-15 18:22:45 -05:00
Kevin O'Connor
15339aec64 docs: Improve suggestions on bytes_invalid in CANBUS_Troubleshooting.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-15 18:20:04 -05:00
Kevin O'Connor
a90110d9ba docs: Note stealthchop_threshold doesn't impact sensorless homing
Reported by @paulfertser.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-15 13:55:19 -05:00
Nicholas Parry
e24ea3652c
docs: Fixed incorrect spelling in Config_Reference.md (#6819)
changed spelling of single word

Signed-off-by: Nicholas Parry <rounded-gully-5r@icloud.com>
2025-02-15 13:06:29 -05:00
JamesH1978
508c28e689
spi_flash: Update board_defs.py - BTT Octopus Max EZ (#6817)
Addition to the board_defs file for the BTT Octopus Max EZ, written and confirmed by discord user Nikki @winningfaith81

Signed-off-by: James Hartley <james@hartleyns.com>
2025-02-15 13:04:57 -05:00
Timofey Titovets
fec3e685c9 stm32: h7 spi support reload mode & frequency
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2025-02-06 12:10:29 -05:00
Lexi Beavil
b16cb6575d docs: Fix broken link to MainsailOS
The documentation install page has a link to the old mainsail OS site, which is no longer available

Signed-off-by: Lexi Beavil <github@aeroniemi.com>
2025-02-05 15:07:54 -05:00
Auxon
329fbd01d8
docs: Update Pressure_Advance.md (#6808)
Added language to disable "scarf joint" seams as it messes with the TUNING_TOWER script.

Signed-off-by: Roman Simanovich <romsimanovich@gmail.com>
2025-02-04 19:08:05 -05:00
Kevin O'Connor
01b0e98ab2 klippy-requirements: Require setuptools on python 3.12
The python-can v3.3.4 package requires setuptools to be an explicit
dependency when run on python v3.12, but there is no single version of
setuptools that runs on all supported versions of python.  So, tie
setuptools to python versions 3.12 or later.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 20:53:33 -05:00
Kevin O'Connor
638c085ffa mkdocs-requirements: Update jinja dependency to 3.1.5
It appears there was a security vulnerability in Jinja v3.1.4 .  The
Klipper docs are not impacted by this vulnerability, but it's simple
enough to increment the version to avoid warnings.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 19:01:09 -05:00
Pedro Lamas
8a2de5f23e save_variables: Check lowercase variable names
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2025-02-02 18:52:02 -05:00
Kevin O'Connor
2c90c97ccd usb_canbus: Detect canbus stalls when in usb to canbus bridge mode
If the low-level canbus stops working then it could become impossible
to send messages to and from the canbus bridge node itself.  This can
make it difficult to diagnose canbus problems.

Change the canbus bridge code to detect if message transmits become
stalled for 50+ milliseconds and go into a "discarding" state.  In
this discarding state, messages destined for the canbus will be
discarded until the canbus becomes active again.  In this discarding
state it will therefore be possible to transmit messages to and from
the canbus bridge node.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
2db2ef82f2 canbus_stats: Periodically report canbus interface statistics
Add support for a new get_canbus_status command to canserial.c .

Add new canbus_stats.py module that will periodically query canbus
mcus for connection status information.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
eb0581c264 atsam: Add support for reporting canbus state
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
61fb5fe29c atsamd: Add support for reporting canbus state
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
9fd415d3f5 rp2040: Add support for reporting canbus state
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
b7366ae3fc stm32: Add support for reporting canbus state from fdcan.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Kevin O'Connor
6cdcf75e6b stm32: Add support for reporting canbus state from can.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-02-02 18:43:34 -05:00
Branden Cash
d57fe4395e
garbage_collection: freeze objects on klippy ready (#6794)
This significantly reduces the amount of data in the generation 2 garbage collection bucket from the initial startup of klipper.

Signed-off-by: Branden Cash <203336+ammmze@users.noreply.github.com>
2025-02-02 18:40:43 -05:00
John
0114d72a6c
config: Update generic-creality-v4.2.7.cfg (#6790)
Corrected Filament Runout Sensor Pin (as per schematic - see https://github.com/LeeOtts/Ender3v2-Klipper-Configs/blob/main/Creality.4.2.7.-.Schematic.28-5-22-1.pdf )

Signed-off-by: John Minor <theminor@duck.com>
2025-01-24 21:46:08 -05:00
Pedro Lamas
8c1037ef1b screws_tilt_adjust: initialize status result as a dictionary
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2025-01-24 19:13:36 -05:00
Konstantin Koch
ed796fcfaa
ads1x1x: added support for ADC chip (#6584)
Added a temperature sensor configuration for ADS1103, ADS1104, ADS1105, ADS1113, ADS1114 and ADS1115 chips that can be used to add Analog to Digital Conversion capability to machines that don't have that on their own. Like Raspberry Pi's or if more analog input pins are needed than the chip provides like for RP2040. Generally they can be used for any analog input, but the typical use case is for temperature measurement. This code also has been written with temperature measurement in mind and not as a general ADC.

Signed-off-by: Konstantin Koch <korsarnek@gmail.com>
Signed-off-by: Jack Wakefield <jackwakefield@protonmail.com>
2025-01-21 19:10:39 -05:00
Kevin O'Connor
6ab253366c force_move: Use strings for axes to clear in clear_homing_state()
Pass a string such as "xyz" to kin.clear_homing_state().  This makes
the parameter a little less cryptic.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-21 18:58:23 -05:00
Kevin O'Connor
4aa550837f toolhead: Pass set_position() homing_axes parameter as a string
Use strings such as "xyz" to specify which axes are to be considered
homing during a set_position() call.  This makes the parameter a
little less cryptic.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-21 18:58:23 -05:00
Kevin O'Connor
c72d73ec45 stepper_enable: Directly call clear_homing_state() on motor off event
Call clear_homing_state() on each motor off event.  This simplifies
the kinematic classes as they no longer need to register and handle
the motor_off event.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-21 18:58:23 -05:00
Kevin O'Connor
5fe333934d docs: Add a "Professional Services" link to Contacts page
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-21 18:54:33 -05:00
Kevin O'Connor
9a06d2b7e8 docs: Improve wording of main Klipper page
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-21 18:54:00 -05:00
Kevin O'Connor
cf3b0475da tmc2240: Allow the slope_control field to be configured via printer.cfg
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-10 12:29:41 -05:00
Kevin O'Connor
aae29ba48b heaters: Disable heater if it appears main thread has stopped updating
Update the heating code to periodically check that the main thread is
operating properly.  This is a mitigation for some rare cases where
the main thread may lockup while the background heater updating code
continues to run.  The goal is to detect these rare failures and
disable future heater updates.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-10 12:22:49 -05:00
Kevin O'Connor
485c8f2ef0 lib: Update can2040 to v1.7.0
This provides improved support on rp2350 chips.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-10 12:20:13 -05:00
Dennis Marttinen
7083879700
force_move: Implement CLEAR for SET_KINEMATIC_POSITION (#6262)
`CLEAR` clears the homing status (resets the axis limits) without turning off
the motors. This is particularly useful when implementing safe Z homing in
`[homing_override]` on printers with multiple independent Z steppers (where
`FORCE_MOVE` can't be used).

Signed-off-by: Dennis Marttinen <twelho@welho.tech>
2025-01-10 10:41:09 -05:00
Kevin O'Connor
9ca71d8608 github: Change to upload-artifact@v4
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2025-01-09 20:43:54 -05:00
Alexander Bazarov
8a3d2afd79
config: Config for Geeetech A-series printers: A10/M/T and A20/M/T (#6767)
Based on few configs found on the discourse forum, facebook groups.
In addition, using official schematics from:
https://www.geeetech.com/download.html
8199212/GT2560V4.1BSCHA20T.pdf

Contains macros for filament mixing based on:
https://klipper.discourse.group/t/mixing-color-support/2246/12
https://klipper.discourse.group/t/mixing-hotend-m163-emulation/11423/2

Signed-off-by: Alexander Bazarov <oss@bazarov.dev>
2025-01-03 09:32:07 -05:00
KrauTech
80d185c94c
z_tilt: return done when reties is 0 (#6766)
Signed-off-by: Chris Krause <krautech3d@gmail.com>
2024-12-19 15:24:44 -05:00
Kevin O'Connor
cb13ee76ff docs: Document the QUAD_GANTRY_LEVEL command in G-Codes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-19 11:52:31 -05:00
Kevin O'Connor
a2a91654a9 docs: Document Z_TILT_ADJUST RETRIES and RETRY_TOLERNACE options in G-Codes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-19 11:49:16 -05:00
Kevin O'Connor
383b83d788 Kconfig: Simplify WANT_XXX definitions
Use WANT_ADXL345 and WANT_MPU9250 instead of WANT_SENSOR_ADXL345 and
WANT_SENSOR_MPU9250.  This makes these definitions similar to the
other accelerometer defintions.

Order menu so accelerometers are close to each other in the menu.

Simplify Makefile as Kconfig already assures a symbol will only be
defined if its dependencies are met.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-12 14:46:37 -05:00
Timofey Titovets
2b9e041a86 angle: mt6826s added support
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-12-12 14:28:45 -05:00
Timofey Titovets
90c1b82baa angle: mt6816 added support
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-12-12 14:28:45 -05:00
Timofey Titovets
896343d943 ar100: disable angle sensors code in CI
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-12-12 14:28:45 -05:00
Timofey Titovets
1499bfa489 Kconfig: split sensors
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-12-12 14:28:45 -05:00
BIGTREETECH
b7233d1197
lib: fix rp2040_flash (#6760)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2024-12-06 13:41:22 -05:00
Dmitry Butyugin
16b4b6b302
resonance_tester: Added a new sweeping_vibrations resonance test method (#6723)
This adds a new resonance test method that can help if a user has some mechanical problems with the printer.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-12-05 21:54:26 -05:00
Liam Powell
7f89668d6c
tmc2240: Correct maximum TMC2240 UART address. (#6757)
Signed-off-by: Liam Powell <liam@liampwll.com>
2024-12-02 13:30:57 -05:00
Alexander Bazarov
aecb29d2b0
display: Add support for AIP31068 based displays (#6639)
display: Add support for `AIP31068` based displays
2024-12-02 13:23:46 -05:00
Kevin O'Connor
9ce631e8d1 klippy: Fix missing default parameter of invoke_async_shutdown()
Allow invoke_async_shutdown() to be called with just one parameter.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-02 12:51:51 -05:00
Kevin O'Connor
2165c90011 gcode: Improve checksum detection in get_raw_command_parameters()
Only consider a trailing '*' to indicate a checksum if the remainder
of the string is a number.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
a6df541104 gcode: Some optimizations to get_raw_command_parameters()
Add some minor optimizations to the get_raw_command_parameters() code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
62325d4a35 gcode: Use the same M117/M118 fixup for M23
The M23 command has similar requirements for extracting the full
parameter string that M117/M118 have.  Use the same code for those
fixups.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
03068b48fe gcode: Fixup M117/M118 command identification in cmd_default()
Alter gcmd._command in cmd_default if the special M117/M118 handling
is detected.  This avoids having to recheck for this condition in
get_raw_command_parameters().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
d45b9c92d8 gcode: Improve handling of extended g-code commands with '*;#' characters
The g-code command parser did not allow three characters to be passed
as parameters to commands (asterisk, semicolon, pound sign).  Rework
the parsing code to better leverage the python shlex package so that
these characters can be supported.

In particular, this should allow better support for printing g-code
files that have unusual characters in the filename.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
49205f92ff gcode: Don't silently discard characters inside a command name
Don't silently drop leading numbers and unusual characters at the
start of a command - for example, don't interpret '99M88' as 'M88'.

Don't silently drop spaces in a command - for example, don't interpret
"M 101" as the command "M101".  Doing so will cause other parts of the
code (such as get_raw_command_parameters() ) to not work properly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 14:16:13 -05:00
Kevin O'Connor
5493c60373 gcode: Validate extended g-code command names
Extended g-code command names may only contain A-Z, 0-9, and
underscore, and the first two characters may not be digits.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-12-01 13:15:08 -05:00
Kevin O'Connor
847331260c toolhead: Remove arbitrary constants controlling junction deviation
When calculating the junction speed between two moves the code checked
for angles greater than 0.999999 or less than -0.999999 to avoid math
issues (sqrt of a negative number and/or divide by zero).  However,
these arbitrary constants could unnecessarily pessimize junction
speeds when angles are close to 180 or 0 degrees.

Change the code to explicitly check for negative numbers during sqrt
and to explicilty check for zero values prior to division.  This
simplifies the code and avoids unnecessarily reducing some junction
speeds.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-29 18:09:29 -05:00
Kevin O'Connor
8291788f40 toolhead: Use delta_v2 when calculating centripetal force
As a minor math optimization, it's possible to calculate:
  .5 * self.move_d * self.accel * tan_theta_d2
using:
  self.delta_v2 * .25 * tan_theta_d2
because self.delta_v2 is "2. * self.move_d * self.accel".

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-29 17:41:37 -05:00
Jessica Hunt
a18c74be05
rp2040: Add spi0_gpio4_gpio3_gpio2 bus to support fysetc PITB V2 (#6683)
The Fysetc PITB V2 board uses a spi bus config that is supported by the
RP2040 chip, but not klipper, so this adds the relevant config to the file
to allow you to run the tmc5160's on the board via hardware SPI.  This
resolves the issue of software spi not working on this board, which I
was unable to fully understand.

I have also seen other users encounter similar bus config issues with
the rp2040 setting up things like accelerometers and such with this
pin layout.

As requested, this also uses the new convention for spi bus naming, while
maintaining the old bus names for compatibility.

Signed-off-by: Jessica Hunt <hunt.jessica@proton.me>
2024-11-27 22:32:42 -05:00
Wulfsta
42d8b9b847 docs: Update Measuring Resonances document with LIS2DW/LIS3DH information
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-11-27 18:32:09 -05:00
Thijs Triemstra
2cfef4d94d
docs: Update config screenshot for rpi235x (#6748)
Signed-off-by: Thijs Triemstra <info@collab.nl>
2024-11-27 18:31:01 -05:00
Kevin O'Connor
f2e69a3703 ci-install: Run 'apt-get update' prior to 'apt-get install'
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-22 14:59:40 -05:00
Emmanuel Ferdman
d6494ffed5 docs: update Manual_Level.md reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-11-19 17:15:43 -05:00
Kevin O'Connor
9bd0d47576 rp2040: Improve indentation in Kconfig file
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 13:01:21 -05:00
Kevin O'Connor
a46dba08e2 docs: Add rp2350 to benchmarks
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:35:23 -05:00
Kevin O'Connor
f6718291b7 rp2040: Add rp2350 bootrom based chipid and reboot to bootloader code
This adds the bootrom code needed to implement "reboot into
bootloader" and "chipid" capabilities.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:24:47 -05:00
Kevin O'Connor
8a203cf2cb rp2040: Move chipid reading to bootrom.c
Rewrite chipid.c so that it contains just the USB and canbus id
manipulation code.  Move the low-level chipid reading to bootrom.c.

Also, introduce a new bootrom_reboot_usb_bootloader() function in
bootrom.c so that the main.c code does not need to know the specifics
of rebooting into the bootrom.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:24:47 -05:00
Kevin O'Connor
58541a799e temperature_mcu: Add support for rp2350 MCUs
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
848124ac4d flash_usb: Initial support for flashing rp2350 chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
3cdb1793d4 lib: Update rp2040_flash code to support rp2350 reboot
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
64ba37c02e lib: Update rp2040_flash to upstream picotool.git v2.0.0
This is in preparation for adding rp2350 flash support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
06bb49f135 rp2040: Initial rp2350 support
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
61f81bdb26 rp2040: Use a higher USB PLL internal frequency
The rp2350 chip requires a higher internal frequency, so choose a
value that works for both rp2040 and rp2350.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
c28ed06e98 rp2040: Avoid using memcpy() on USB dpram
Some versions of the system memcpy() may make unaligned memory
accesses, which can result in a bus fault when accessing the usb dpram
device memory.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-14 11:17:52 -05:00
Kevin O'Connor
405935f918 rp2040: Rename rp2040_link.lds.S to rpxxxx_link.lds.S
This is in preparation for rp2350 support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
906431bb00 rp2040: Rename CONFIG_RP2040_yyy Kconfig symbols to CONFIG_RPXXXX_yyy
Rename the Kconfig symbols.  This is in preparation to adding support
for the rp2350 mcu.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
4ef21a1e9b armcm_boot: Support ARM cortex-m33 chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
c5c79c936f lib: Add cortex-m33 support files to lib/cmsis-core/
This is in preparation for adding support for rp2350 mcus.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
f00919070e lib: Add rp2350 files to pico-sdk
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
2ad0b1afc2 lib: Update can2040 to support v2.0.0 of pico-sdk
A new version of can2040 is needed due to changes in the 2.0.0 release
of the pico-sdk.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
c75eb53c0c lib: Update lib/rp2040 to v2.0.0 SDK release
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
9f328cab95 lib: Move lib/rp2040/elf2uf2 to lib/elf2uf2
Recent versions of the rp2040 sdk no longer contain the elf2uf2 tool.
So, move that code to a new dedicated directory.  This is in
preparation for updating the rp2040 sdk version.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:25:59 -05:00
Kevin O'Connor
c88ee84bed msgproto: Fix return type for create_command()
Return an empty list instead of an emptry string if no command found.
This improves compatibility within console.py on python3.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-13 14:24:03 -05:00
yochiwarez
38bf6f2693 axis_twist_compensation: AXIS_TWIST_COMPENSATION new parameter AUTO for autocalibration
This commit adds automatic calculation support for compensating X and Y axis twist in the axis_twist_compensation module.

Signed-off-by: Jorge Apaza Merma <yochiwarez@gmail.com>
2024-11-12 22:10:04 -05:00
yochiwarez
4f3a7fd227 axis_twist_compensation: Implement Y-axis support
This commit implements support for the Y-axis in the axis_twist_compensation
module. This update enables the module to handle corrections for printers
with a twisted Y rail.

Signed-off-by: Jorge Apaza Merma <yochiwarez@gmail.com>
2024-11-12 22:10:04 -05:00
Kevin O'Connor
f119e96e8f configfile: Fix comments on same line as [include xxx.cfg] directive
Commit 9d4ab862 broke support for '#' style comments on the same line
as [include] config directives.  Fix by adding back in the check for
comments in _parse_config().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-11-12 21:07:44 -05:00
MRX8024
6d1256ddcc
resonance_tester: Fix chips selection, add accel_per_hz selection (#6726)
Corrected issue where accelerometer names were incorrectly prefixed
with "adxl345", preventing the selection of other chip types when running TEST_RESONANCES.

Implemented support for selecting the `accel_per_hz` parameter when running TEST_RESONANCES.

docs: Update TEST_RESONANCES + SHAPER_CALIBRATE with missing parameters and bracket corrections

Signed-off-by: Maksim Bolgov <maksim8024@gmail.com>
2024-11-12 19:55:32 -05:00
Wulfsta
2af8d3f1d0 config: Add lis3dh to Duet3D 1LC sample config
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-11-12 19:50:48 -05:00
Wulfsta
6631275ab6 atsamd: allow i2c rate to be 400kHz
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-11-12 19:50:48 -05:00
Wulfsta
9d36f31615 docs: Add lis2dw i2c and lis3dh
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-11-12 19:50:48 -05:00
Wulfsta
0f7887fffe sensor_lis2dw: add lis3dh sensor and i2c communication
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-11-12 19:50:48 -05:00
Lieven Vanhercke
a34034494e
config: Added board config for Mellow Fly E3 v2 (#6682)
Signed-off-by: Lieven Vanhercke <lieven.vanh@gmail.com>
2024-11-06 19:58:16 -05:00
Pedro Lamas
eeb2678ec2 fan_generic: fixes missing logging import
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2024-11-01 11:34:48 -04:00
Kevin O'Connor
a91d8a66f3 configfile: Separate access tracking to new ConfigValidate class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-30 14:42:53 -04:00
Kevin O'Connor
9d4ab862b9 configfile: Only check for [include file] directives from main printer.cfg
Don't look for includes in autosave data nor from the internal menu,
display, and temperature configs.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-30 14:42:53 -04:00
Kevin O'Connor
85ebafd3f6 configfile: Don't read the autosave data if multiple autosave headers present
Also, verify new autosave looks valid prior to writing it.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-30 14:42:53 -04:00
Kevin O'Connor
9adb313ee8 configfile: Split configfile code into three separate classes
Separate out the low-level parsing code to a new ConfigFileReader()
class.

Separate out the auto-save handling code to a new ConfigAutoSave()
class.

This simplifies the main PrinterConfig() class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-30 14:42:53 -04:00
Kevin O'Connor
faa89be816 docs: Fix Benchmarks.md git revision references
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-28 15:15:08 -04:00
Kevin O'Connor
89d94dd33b atsamd: Add Kconfig definition for SAME51N19 chip
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-28 15:08:29 -04:00
Kevin O'Connor
a796ca5e72 Kconfig: Remove references to manufacturers in Kconfig
Avoid referring to particular board manufacturers in "make
menuconfig".  This information becomes rapidly outdated and is
sometimes viewed by competing manufacturers as being unfair.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-28 15:08:29 -04:00
JamesH1978
94da4d10d7
docs: Update Measuring_Resonances.md for some NumPY version issues (#6719)
It has been noted over the last six to eight months that some versions of Numpy have issues with the klipper python environment on some machines. This PR introduces a fixed version that is known to work and a small test for people to do to make sure there are no output issues from the get go. These have been pulled from the pinned posts in the discord, from a time when 1.26 was causing issue, and now it seems v2 is also having some issues, hence the change. 

Signed-off-by: James Hartley <james@hartleyns.com>
2024-10-28 15:06:48 -04:00
Kevin O'Connor
31fe50ffa3 homing: Log a warning if probe alters stepper kinematic positions
After a probe attempt the toolhead position needs to be recalculated
to the position that the toolhead ultimately halted at.  Check that
the position setting wouldn't actually change the internal view of the
stepper motor and log a warning if any skew is detected.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-26 22:11:02 -04:00
Kevin O'Connor
b381f509d1 trsync: Don't require callers of trsync_do_trigger() to disable irqs
Disable irqs within trsync_do_trigger().

This fixes a bug in ldc1612 - as that code was calling
trsync_do_trigger() without first disabling irqs.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-26 22:11:02 -04:00
Kevin O'Connor
ea546c789b sched: Improve timer vs task priority check
Rename sched_tasks_busy() to sched_check_set_tasks_busy() and change
it to only return true if tasks are active (running or requested) for
two consecutive calls.  This makes it less likely that timers will
yield to tasks except when tasks really are notably backlogged.

This also makes it less likely that multiple steppers controlling the
same rail will be interrupted by tasks mid-step.  This should slightly
improve the timing, and make it less likely that a halt during
homing/probing will occur with these steppers taking a different
number of total steps.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-26 22:09:14 -04:00
Kevin O'Connor
f0a7797712 mcu: Only warn about mcu clock frequency if drift is more than 1%
This reduces the chance of spurious MCU clock configuration warnings.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-26 22:07:45 -04:00
Timofey Titovets
08102a0bf9 mpu: shutdown on i2c errors
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
1c3b30b815 ldc1612: shutdown on i2c errors
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
1563a68144 i2ccmds: move status checks to function
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
48590a35e4 stm32: forward i2c errors to i2ccmd
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
335a0e20c2 rp2040: forward i2c errors to i2ccmd
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
8a1c3cd668 linux: forward i2c errors to i2ccmd
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
2c246c7d33 i2c_software: forward errors to i2ccmd
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
a4aa2a9002 i2c: handle errors at i2ccmds
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Timofey Titovets
08a85ba869 i2ccmds: abstract i2c dev from bus implementation
Added wrapper around sw/hw bus API,
pins.py code will ensure that pins will not mix
between HW/SW buses.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-26 22:06:30 -04:00
Kevin O'Connor
39f08aeda1 docs: Update Sponsors.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-26 22:02:20 -04:00
Liam Powell
fe89c19ac0
stm32: Add support for USART3 on PC11/PC10 on STM32G474. (#6704)
Signed-off-by: Liam Powell <liam@liampwll.com>
2024-10-24 11:10:09 -04:00
Gareth Farrington
0c806d84f7
ads1220: Add input_mux and vref options to ADS1220 sensor (#6713)
* fix type comparison bug that stopped the sensor from initializing
* correct mismatch between docs and code for `sample_rate` (fixed to work same as hx71x)
* add input_mux, pga_bypass and vref options
* update configuration reference & fix typo

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2024-10-24 11:07:05 -04:00
Kevin O'Connor
55339998e5 docs: Fix "XH711" typo in Config_Reference.md
Reported by @kabroxiko.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-24 10:05:44 -04:00
JamesH1978
0855994e59
docs: Update OctoPrint.md - wrong serial address (#6716)
This PR corrects a simple mistake where I gave the Unix socket not the serial pts.

Signed-off-by: James Hartley <james@hartleyns.com>
2024-10-22 10:36:13 -04:00
Wulfsta
8e1cdb199a docs: Add step rate benchmark for same70
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-10-21 22:27:41 -04:00
Wulfsta
34e9ea55df atsam: Enable TCM and cache for atsame70
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-10-21 22:27:41 -04:00
Wulfsta
52af688245 atsam: Add data memory barrier to USB driver
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2024-10-21 22:27:41 -04:00
Kevin O'Connor
8a530cbcce scripts: Update whconsole tool to support python3
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-21 22:16:11 -04:00
Timofey Titovets
b89d552387
stm32: allow 400Khz in stm32f0_i2c.c (#6694)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-10-09 20:00:38 -04:00
Kevin O'Connor
96cceed23e fan: Fix restart request handling
The change in parameter order introduced in commit f4143af4 failed to
update the call _handle_request_restart() code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-10-01 11:43:27 -04:00
Kevin O'Connor
8f361a15b2 fan_generic: Support setting a TEMPLATE on SET_FAN_SPEED commands
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-30 12:23:24 -04:00
Kevin O'Connor
f4143af4fa fan: Support calling set_speed() without a print_time
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-30 12:23:24 -04:00
Kevin O'Connor
1c0adb9af8 output_pin: Support setting a TEMPLATE on SET_PIN commands
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-30 12:23:24 -04:00
Kevin O'Connor
8a7a39530e output_pin: Move template evaluation code from led.py to output_pin.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-30 12:23:24 -04:00
Kevin O'Connor
3358295de8 led: Generalize template evaluation so it is not dependent on LEDs
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-30 12:23:24 -04:00
Kevin O'Connor
ef75346861 heaters: Fix typo - config.config_error() instead config.error()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-25 23:25:59 -04:00
Kevin O'Connor
064eee6859 stm32: Fix i2c clock speeds for chips with a peripheral clock over 48Mhz
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-22 22:14:47 -04:00
Kevin O'Connor
8b7cc43952 stm32: Reduce peripheral clock speed on stm32g4 chips
A 170mhz (or 150mhz) peripheral clock is too fast for some peripherals.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-22 21:18:34 -04:00
Timofey Titovets
9426485bb6
rp2040: Check for i2c NACK/Start NACK (#6692)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-09-22 19:28:07 -04:00
Jack Wakefield
b4aca122a1 flash_usb: Wait for busnum file to exist when flashing with picoboot
This solves an issue where the USB directory could exist, but the busnum
file itself may not exist immediately. This was encountered when
flashing a Pico connected to a Raspberry Pi 5.

Signed-off-by: Jack Wakefield <jackwakefield@protonmail.com>
2024-09-22 19:26:18 -04:00
Timofey Titovets
d9236f1c20
STM32: Check for NACK (#6687)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-09-22 19:24:29 -04:00
Timofey Titovets
8a5801a204 i2c: drop i2c_modify_bits
No longer used and niche

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-09-22 19:23:14 -04:00
Timofey Titovets
71433b8224 sx1509: drop i2c_modify_bits
According to the datasheet default value is 0000 0000
We do not modify them in other places.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-09-22 19:23:14 -04:00
Kevin O'Connor
87ac69363a fan: Wait full kick_start_time even if request is for full speed
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-18 13:59:07 -04:00
Kevin O'Connor
5731d964b6 fan: Use GCodeRequestQueue to queue updates
This is similar to 7940a6a7, but using gcrq.send_async_request() for
requests that could be asynchronous.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-18 13:59:07 -04:00
Kevin O'Connor
f323a4fcc7 output_pin: Add send_async_request() support to GCodeRequestQueue
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-16 13:31:14 -04:00
Kevin O'Connor
69e0d866c0 output_pin: Improve GCodeRequestQueue timing on duplicate requests
If there is a duplicate request it is not necessary to add a 100ms
delay to the next update.  Rework the callback signaling to better
report these duplicate updates.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-16 13:31:14 -04:00
Kevin O'Connor
0532a41c75 led: Fix typo in call to unregister_timer()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-16 13:29:25 -04:00
Kevin O'Connor
900bf2be55 Revert "fan: Use GCodeRequestQueue to queue updates"
This reverts commit 7940a6a728.

Queing of fan updates via GCodeRequestQueue is only valid if updates
originate from gcode commands.  The heater_fan, controller_fan, and
temperature_fan modules could send updates asynchronously.  Revert the
fan queuing changes until this issue can be resolved.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-13 14:30:56 -04:00
Kevin O'Connor
cc4ad6670f output_pin: Keep flushing GCodeRequestQueue if needed
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-13 00:59:44 -04:00
Kevin O'Connor
28995a8bce servo: Use GCodeRequestQueue to queue updates
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-12 13:25:00 -04:00
Kevin O'Connor
7940a6a728 fan: Use GCodeRequestQueue to queue updates
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-12 13:24:32 -04:00
Kevin O'Connor
6ade82ed7e output_pin: Introduce new helper to facilitate queuing of gcode requests
Add a new GCodeRequestQueue class that can queue and collate g-code
pin requests.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-12 13:24:32 -04:00
Kevin O'Connor
3a57f71f33 output_pin: Remove deprecated maximum_mcu_duration and static_value
Remove support for these two config options that were previously
deprecated.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-12 13:24:29 -04:00
Kevin O'Connor
293858c51f hx71x: Avoid base classes to improve python2 compatibility
Also, add a load_cell regression test case.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-09-12 13:15:01 -04:00
Bevan Weiss
14a83103c3
flashsd: Add support for chitu-v6 (#6671)
Add flashsd configuration for Tronxy x5sa and other printers based on
Chitu v6 board.

These boards should support sdio (this is what the schematic details),
however I couldn't get this working from a quick try.

Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
2024-09-05 16:50:32 -04:00
Eric Callahan
08a1c9f127 docs: update temperature_probe documentation
Add documentation for the "max_valid_temp" option.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-09-01 13:37:35 -04:00
Eric Callahan
40d6a06f8f temperature_probe: add max_valid_temp option
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-09-01 13:37:35 -04:00
Kevin O'Connor
f71d2c7cfc stm32: Fix setting USB clock with USB to CANbus mode on stm32g4/stm32l4
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-08-29 22:31:13 -04:00
Timofey Titovets
81de9a8615 bme680: measure gas VOC once a while
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-16 22:21:12 -04:00
Timofey Titovets
f9d7a71195 bme680: select mode once
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-16 22:21:12 -04:00
Timofey Titovets
ff3eed2ad8 bme280: use periodic mode for BM[PE]280
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-16 22:21:12 -04:00
Timofey Titovets
9e45ec222e bme280.py: drop unused max_sample_time
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-16 22:21:12 -04:00
Timofey Titovets
3e55008323 bme280.py: iir_filter mask input value
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-16 22:21:12 -04:00
Kevin O'Connor
d81eb557d7 sensor_hx71x: Signal an overflow from the timer handler
Check for overflows in the timer handler instead of checking the
elapsed query time.  This should be a better check as it also accounts
for task delays that occur before the query starts.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-08-14 22:17:10 -04:00
Kevin O'Connor
d5e5a6da2d hx71x: Update api header and docs to correctly note "value" field
Update both hx71x and ads1220 to reflect that there is a third "value"
field in the reported data.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-08-14 22:17:10 -04:00
Bevan Weiss
c0edfbc4ea
src: Current code produces warnings for possible value overflows. (#6665)
As the input values are uint8_t types, any shift may result in value loss.
Explicit promotion to the output type (uint32_t) keeps things safe.
Have also changed the int32_t in ads1220_read_adc to uint32_t, type
promotion and bit manipulation are a bit 'weird' on signed integers, so
keep it as an unsigned to align with following function call parameter type.
Have retained the prior explicit sign extension logic however.

Signed-off-by: Bevan Weiss <bevan.weiss@gmail.com>
2024-08-14 22:14:19 -04:00
Timofey Titovets
3f2ef88eb9 gcode_arc: merge coords gen & G1 emit
Chopping lines from arc can take significant time.
Merge cycles to make the event loop progress and optimize performance.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-12 13:06:28 -04:00
Timofey Titovets
503e7e368b gcode_arc: refactor simplify
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-08-12 13:06:28 -04:00
Nicholas Huskie
ca815f52c8
stm32: Fix getting wrong ADC value on PA0 of STM32G431 (#6660)
* Fix getting wrong ADC value on PA0

* Fix invalid/unused pin being used as adc channel on STM32H7/G431/L4

Signed-off-by: Nicholas Huskie <huskie@idealfuture.org.cn>
2024-08-08 22:45:12 -04:00
JamesH1978
025ae2349d
docs: Update Installation.md (#6650)
Added links for Fluidd/Mainsail/Octoprint

Added references to overview.md and mkdocs.yml and spelling errors.

Signed-off-by: James Hartley <james@hartleyns.com>
2024-08-08 22:43:21 -04:00
Dmitry Butyugin
d7d9092a92 servo: Asynchronous adjustments of servo position
This change follows the same approach as implemented for fan control.
The change removes the move queue flushing when changing servo position,
which does not appear to be necessary. This can be beneficial, for
example, for WS7040-based cooling on IDEX setups where the servo can
be used to control the air flow between the toolheads, with this change
eliminating micro-stutters of the toolhead on servo position adjustment.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-08-03 14:41:30 -04:00
Dmitry Butyugin
ba2a149e9a idex_modes: Improved restoring position in RESTORE_DUAL_CARRIAGE_STATE
Previous implementation could crash the idex carriages into each other.
The new code moves the idex carriages together, eliminating this risk
and decreasing the time needed to restore the carriages positions.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-08-03 14:40:52 -04:00
Kevin O'Connor
13c75ea876 docs: Fix heading hierarchy for load_cell in Config_Reference.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-07-31 21:31:22 -04:00
Kevin O'Connor
cb15d0fec6 load_cell: Don't start sensor on startup
Also, don't report an empty status.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-07-31 21:26:10 -04:00
Gareth Farrington
055f07c638 ads1220: Add ADS1220 bulk sensor to load_cell
Add support for the ADS1220 as an alternative to HX71x that supports SPI and higher sample rates.

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2024-07-31 21:22:33 -04:00
Gareth Farrington
c0095812ff hx71x: Load Cell Skeleton and HX71x bulk ADC
* Create the load_cell host module skeleton to create the sensors and start taking samples.
* Add support for the HX717 and HX711 ADC sensors.

Signed-off-by: Gareth Farrington <gareth@waves.ky>
2024-07-31 21:22:06 -04:00
Miles Pawar
0844388d70
config: Update generic-bigtreetech-skr-mini-e3-v3.0.cfg (#6654)
- Removed stealth from Extruder to stop under extrusion issues
- Changed Bed sensor to correct one for Ender 3

* Update generic-bigtreetech-skr-mini-e3-v3.0.cfg

Signed-off-by: Miles Pawar <slab.paged-0p@icloud.com>
2024-07-26 20:14:22 -04:00
bryan065
12cd1d9e81
spi_flash: Add stm32g0b0xx to board_defs.py (#6646)
Added board definition for stm32g0b0xx variant of the SKR Mini v3.0.

Signed-off-by: Bryan Le <le.bryan.065@gmail.com>
2024-07-18 10:45:51 -04:00
Eric Callahan
6848843224 docs: add initial temperature_probe documentation
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-07-17 22:25:49 -04:00
Eric Callahan
bd1dbc8af3 probe_eddy_current: support thermal compensation
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-07-17 22:25:49 -04:00
Eric Callahan
7603953ef7 temperature_probe: probe temperature sensor
Add temperature sensor with thermal drift calibration.
Currently only Eddy Current based probes support
calibration.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-07-17 22:25:49 -04:00
Kevin O'Connor
0087f04cc3 gcode: Minor change to suppress python warning on '\s'
Reported by @matdibu.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-07-11 15:01:32 -04:00
Dmitry Butyugin
c84d78f3f1
extruder: Allow dynamic adjustment of pressure advance (#6635)
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-07-11 14:43:21 -04:00
Timofey Titovets
248d3dbf8b
sht3x: use periodic report mode (#6634)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-07-06 18:28:45 -04:00
Kevin O'Connor
00cb683def serialhdl: Catch IOError in connect_canbus()
It seems the can library on Python2 can sometimes raise an IOError
exception on a failure.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-07-05 20:16:21 -04:00
Kevin O'Connor
34732f857a smart_effector: Define get_position_endstop() wrapper
Reported by @noisyfox.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-07-04 18:36:39 -04:00
Kevin O'Connor
9318901f19 mkdocs: Update id
The Google UA ids are deprecated - update to assigned GA4 id.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-30 15:39:46 -04:00
elmo
4d21ffc1d6
config: Adds support for the Tronxy Crux1 printer (#6627)
Signed-off-by: Louis West <lowest@mailbox.org>
2024-06-27 12:59:48 -04:00
Kevin O'Connor
6d70050261 temperature_mcu: Enhance "ADC out of range" error reports
Try to report which ADC is reporting out of range.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
2d73211190 adc_temperature: Enhance "ADC out of range" error reports
Try to report which ADC is reporting out of range.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
d89722056b mcu: Rename setup_minmax() to setup_adc_sample()
Rename this method so that it is more distinct from the the common
temperature setup_minmax() method.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
9fa0fb1a0e error_mcu: Support mechanism to add per-instance context to a shutdown
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
7149bb1b6d error_mcu: Move formatting of mcu connect errors to error_mcu module
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
ba529996ea error_mcu: Move mcu protocol error reporting to error_mcu module
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Kevin O'Connor
4ac283cc0e error_mcu: Move shutdown error message formatting to new error_mcu.py module
Create a new module to help format verbose mcu error messages.  Move
the shutdown message formatting to this module.  This moves the error
formatting out of the background thread and out of the critical
shutdown code path.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-21 15:32:30 -04:00
Eric Callahan
a19d64febd docs: add rapid probing documentation
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Eric Callahan
a19af08894 bed_mesh: add support for MESH_PPS param in BMC
In addition, do not respond with generated points.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Eric Callahan
2c7e09cfa6 bed_mesh: use generated XY positions in probe_finalize()
The scan modes provide kinematic XYZ coordinates in the
probe results.  These positions may deviate from the requested
positions, which can introduce errors in mesh generation when
transposing the result into the Z matrix.

Rely on the coordinates generated by bed mesh to transpose
the matrix, presuming that points at the same index in the
list match.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Eric Callahan
fc0f17b920 graph_mesh: script for mesh visualization and analysis
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Eric Callahan
c7b7c11cc3 bed_mesh: add dump_mesh webhooks API
Returns current mesh configuration and state.  Includes probed and
mesh matrices, saved profiles, current points, and travel paths.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Eric Callahan
f2df011c68 bed_mesh: optimize rapid travel paths
This adds supplemental path generation that implements
"overshoot" when a change of direction is performed
during a rapid scan.  This overshoot reduces measurement
error at the extremes of the mesh along the X axis.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-19 13:47:32 -04:00
Kevin O'Connor
0a14e33150 probe_eddy_current: Add support for "rapid_scan" mode
Add a scanning mode that does not require pausing the toolhead at each
probe point.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-19 13:47:32 -04:00
Kevin O'Connor
11f04ba1ba configfile: Allow getchoice() to take a list
If a list is passed to getchoice(), seamlessly convert it to a dict.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-17 13:49:05 -04:00
Kevin O'Connor
863a463cb2 rp2040_link: Explicitly set klipper.elf output section flags to avoid warning
Avoid pointless "LOAD segment with RWX permissions" linker warnings
during the rp2040 build.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-17 12:45:07 -04:00
Kevin O'Connor
ae227d485c armcm_link: Fix build on recent arm gcc/newlibc versions
It seems recent arm gcc versions no longer build correctly using the
"--specs=nano.specs --specs=nosys.specs" linker flags.  Replace those
linker flags with "-nostdlib -lgcc -lc_nano".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-17 12:45:07 -04:00
Kevin O'Connor
433fcb6f24 axis_twist_compensation: Fix missing probe import
Fixes missing import introduced in commit bec47e04.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-15 11:06:56 -04:00
Kevin O'Connor
beba2c2d33 axis_twist_compensation: No need to rename bed_mesh and manual_probe
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-15 11:03:50 -04:00
Kevin O'Connor
fcf064ba68 probe_eddy_current: Add support for probing in "scan" mode
When probing in "scan" mode, the toolhead will pause at each position,
but does not descend.  This can notably reduce the total probing time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
aa0dbf6ee6 probe_eddy_current: Calculate toolhead position along with probed position
Support calculating the low-level kinematic toolhead position while
calculating the probed frequency.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
49f511e679 probe_eddy_current: Process samples as they arrive
Convert samples into probe frequencies as the samples arrive.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
429aa2b2a6 probe_eddy_current: Generate Z height from average frequency
Calculate the average frequency from a set of samples, and then
calculate the estimated Z height from that frequency.  This may
improve accuracy, as the frequency to Z height is not linear and
averaging after the non-linear transform could bias the results.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
bf1bc1ee0f probe_eddy_current: Introduce new EddyGatherSamples helper class
Split the sample gathering code out of EddyEndstopWrapper class and
into a new EddyGatherSamples class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
1591a51f76 probe: Gather multiple results in ProbeSessionHelper
Change run_probe() to gather the results locally, and introduce a new
pull_probed_results() method that returns the previously probed
results.  This is in preparation for future probing code that benefits
from batching probe results.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Kevin O'Connor
8de7153952 probe: Rework ProbePointsHelper to store results locally
Store the results of each probe attempt in a local "results" variable
(instead of a class variable) when performing "automatic" probes.
This is in preparation for gathering the results in the probing
implementation.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-14 13:38:07 -04:00
Eric Callahan
0d87bec159 ci-install: update gnu-pru to version 2024.05
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-06-11 21:36:25 -04:00
Kevin O'Connor
589bd64ce0 command: Support 2-byte message ids
Allow command ids, response ids, and output ids to be either 1 or 2
bytes long.  This increases the total number of message types from 128
to 16384.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:27:12 -04:00
Kevin O'Connor
36b8831c7e sensor_bulk: Change maximum data size from 52 to 51 bytes
Reduce the maximum data size from 52 bytes to 51 bytes.  This will
enable support for 2-byte response ids.

This change would alter the behavior of the ldc1612 sensor support.
Force an ldc1612 command name change so that users are alerted that
they must rebuild the micro-controller code upon update of the host
code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:27:12 -04:00
Kevin O'Connor
17c645f000 msgproto: Support multi-byte command and response ids
Update the msgproto.py code so that it can support message ids that
are larger than a single byte.  (The host C code in
klippy/chelper/msgblock.c already supports multi-byte ids.)

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:27:12 -04:00
Kevin O'Connor
d4bae4dffe probe: Simplify PrinterProbe() now that there are no external callers
Create the mcu_probe interface locally within PrinterProbe().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
931d1ce8f4 probe_eddy_current: No need to use PrinterProbe() class
Directly register the PrinterEddyProbe() class as the main probe
interface.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
93245b3678 smart_effector: No need to use PrinterProbe() class
Directly register the SmartEffectorProbe() class as the main probe
interface.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
068d2a9f5a bltouch: No need to use PrinterProbe() class
Directly register the BLTouchProbe() class as the main probe
interface.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
f72f94e299 probe: Move add_steppers() logic to HomingViaProbeHelper class
Perform the initial add_steppers() configuration in a single location.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
58753e58a2 probe: Use ppins.setup_pin() helper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
abfe3675d6 bltouch: Use ppins.setup_pin() helper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
e780049a74 probe: Use an event for axis twist compensation updates
Instead of directly calling axis_twist_compensation, send an event
that can perform the necessary updates.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
f4adb29999 probe: Ensure all external callers always call end_probe_session()
Rework ProbeSessionHelper's multi_probe_start() and multi_probe_end()
to start_probe_session() and end_probe_session().  Ensure all external
callers always invoke these methods prior to running run_probe().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
982a50c70a probe: Split z_virtual_endstop handling to new HomingViaProbeHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
de9798fb5b probe: Move offset handling to new ProbeOffsetsHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
f9a2920cee probe: Move PROBE_ACCURACY command to ProbeCommandHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
292512f813 probe: Move PROBE_CALIBRATE to ProbeCommandHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
6ea5b94d1e probe: Convert probe.get_lift_speed() to probe.get_print_params()
Add a get_print_params() method that can extract all the common
probing parameters.  Replace get_lift_speed() with this more general
function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
6f6122a576 probe: Move Z_OFFSET_APPLY_PROBE to ProbeCommandHelper class
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
8fc11b4a2e probe: Introduce new ProbeCommandHelper class
Move the PROBE and QUERY_PROBE commands from ProbeSessionHelper class
to new ProbeCommandHelper class.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
bec47e0492 probe: Split out new ProbeSessionHelper() class from PrinterProbe()
Separate out the PrinterProbe() class to make the external probe
interfaces more clear.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
12f92c55f1 probe: Code movement in probe.py
Move code around in probe.py and add some comments.  No code changes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-10 12:20:21 -04:00
Kevin O'Connor
49c0ad6369 motan: Fix logic error resulting in incorrect stepper phase graphing
The mcu_phase_offset should be added not subtracted.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-06-05 12:53:13 -04:00
Jayofelony
6cd174208b
config: Add Artillery Genius Pro config (#6604)
Signed-off-by: Jeroen Oudshoorn <oudshoorn.jeroen@gmail.com>
2024-05-27 20:57:42 -04:00
Elias Bakken
3078912f1d
stm32: STM32F031 updates (#6607)
Add support for STM32F031x6 which is the 32 KB version of the STM32F031 MCU.

Add new I2C bus variant.

Signed-off by: Elias Bakken <elias@iagent.no>
2024-05-25 15:47:48 -04:00
Timofey Titovets
b6a0063235 tmc5160: csactual -> cs_actual
Correct the name of "cs_actual" and correct the size on tmc5160.

Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:31:23 -04:00
Kevin O'Connor
4a92727eab sensor_ldc1612: Halt homing if sensor reports a warning
Explicitly check for sensor warnings during homing and report an error
code back to the host.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
37482178b5 mcu: Raise an error on a failed home_wait() call
Raise a printer.command_error exception if a home_wait() call fails.
This makes it easier to support future types of homing errors.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
4709f1fad5 sensor_ldc1612: Create new check_home() helper function
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
04c562941c sensor_ldc1612: Add support for chips with INTB line routed to mcu
If the INTB line is available it can reduce the MCU load.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
cb6cce3934 sensor_ldc1612: Don't require DRDY bit to be set on data read
It is not clear if DRDY is cleared during a STATUS read (which could
occur from command_query_ldc1612_status() ).  So, just check the
"unread conversion" bit when reading data.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
3dc7c9ab29 test: Disable ldc1612 on stm32f042 build to reduce size
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
6fac654352 probe_eddy_current: Calibrate every 40um instead of 50um
A 40um distance is more likely to be a full step distance on common Z
leadscrews (which often use a rotation distance of 8mm).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Eric Callahan
29bfbd02f9 probe_eddy_current: fix attribute name
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
236d780a0a probe_eddy_current: Fix wait for samples in probing_move()
Make sure to wait until all samples are available before performing
analysis on the data.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-21 20:16:31 -04:00
Kevin O'Connor
5d52b32e64 tmc: Remove code that could read microsteps in tmc config sections
Setting of microsteps in the stepper config section has been required
since commit eea0137b.  Remove the no longer needed compatibility
code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-16 12:29:52 -04:00
Kevin O'Connor
2efde0111e tmc: Save and restore thigh during sensorless homing
Make sure thigh is set to zero during sensorless homing, as it would
not make sense for it to be enabled.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-16 12:18:02 -04:00
Kevin O'Connor
faee2c0e52 tmc: Refactor TMCtstepHelper()
Update TMCtstepHelper() to obtain the step_distance, tmc_frequency,
and mres fields directly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-16 12:18:02 -04:00
Frans-willem Hardijzer
b7f7b8a346 idex_modes: Bugfix for kinematic position calculation.
idex_mode would swap the X and dual-carriage rail in some cases
(homing), but not in others. As such, the position calculation was
correct while homing, but incorrect for the second carriage during
normal moves. This commit fixes homing to work without swapped rails,
removes the swapping of rails while homing, and removes the ability to
swap rails (as it is now no longer used). Fix has been tested in a
Hybrid_CoreXY IDEX printer (Voron Double Dragon). Hybrid_CoreXZ has
identical changes and is similar enough that I am confident it will work
as intended. Changes to cartesion seem simple enough, but would benefit
from someone running a couple of tests.

Signed-off-by: Frans-Willem Hardijzer <fw@hardijzer.nl>
2024-05-16 12:08:13 -04:00
voidtrance
694d38c791
bed_mesh: Fix adaptive probe count on delta printers (#6600)
Round beds require an odd number of probe points in
order to prevent erroneously truncating the mesh.

The adaptive mesh algorithm did not consider that and
as a result, it was possible to generate adaptive
meshes with even number of probe points.

This change fixes this by increasing the probe point
count by 1 in cases where the adaptive probe points
are even.

Signed-off-by: Mitko Haralanov <voidtrance@gmail.com>
2024-05-15 21:38:42 -04:00
Kevin O'Connor
dae8b8cacf docs: Update jinja2 requirement in mkdocs-requirements.txt
Update the jinja2 version to suppress security warnings.  Klipper is
not impacted by the vulnerability, but it is harmless to update the
version.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-15 11:23:51 -04:00
Kevin O'Connor
e0cbd7b5fc docs: Minor wording change to coolstep_threshold in Config_Reference.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-05-14 18:22:58 -04:00
Alex Voinea
ed8dca8df0 tmc: Implement high_velocity_threshold for drivers that support it
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2024-05-14 18:21:24 -04:00
Alex Voinea
5249d955bb tmc: Implement coolstep_threshold for drivers that support it
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2024-05-14 18:21:24 -04:00
Alex Voinea
0f3f29101c tmc: Implement CoolStep fields for all drivers
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2024-05-14 13:26:58 -04:00
Alex Voinea
1ca1054957 tmc2130: implement missing HighVelocity fields in the config
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2024-05-14 13:26:58 -04:00
Alex Voinea
f01c8853ca tmc: Do not pass the frequency directly to the helpers
Use the new get_tmc_frequency() instead.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2024-05-14 13:26:58 -04:00
Dropeffect GmbH
472d8e5b66 stm32: Add STM32G474 chip to Kconfig
Signed-off-by: Amr Elsayed from Dropeffect GmbH <code@dropeffect.com>
2024-05-14 11:53:38 -04:00
Dropeffect GmbH
80b55d3528 stm32: Add FDCAN2 channel needed for stm32g4 alternate pins
Some of the alternate pins defined are routed to FDCAN2 instead of
FDCAN1, this commit uses the correct IRQ register and peripheral
clock enable bit to enable FDCAN on those pins.

Signed-off-by: Amr Elsayed from Dropeffect GmbH <code@dropeffect.com>
2024-05-14 11:53:38 -04:00
Dropeffect GmbH
8f510da12b stm32g4: Fix ADC3 common interface registers name to ADC345_COMMON
Use ADC345_COMMON instead of ADC3_COMMON for stm32g4 ADC3 channel.

Signed-off-by: Amr Elsayed from Dropeffect GmbH <code@dropeffect.com>
2024-05-14 11:53:38 -04:00
Stéphane Lepin
79930ed99a config: Add safe_z_home section for Creality CR-6 SE
The Creality CR-6 SE has a strain gauge on its hotend used for z-probing and homing. Currently, running G28 to home all axes puts the hotend just outside of the print bed and thus assumes a wrong homing point for the Z axis.

This change aims to address this issue by setting a safe Z-homing point (in the middle of the print bed) into the Creality CR-6 SE 2020 and 2021-revision config files.

Signed-off-by: Stéphane Lepin <stephane.lepin@gmail.com>
2024-05-12 20:08:30 -04:00
Donald A. Cupp Jr
434770eaf9
stm32: Add new spi2 on stm32g0 chips (#6569)
Signed-off-by: Donald A. Cupp Jr <doncuppjr@yahoo.com>
2024-05-03 13:30:45 -04:00
Jelle van der Waa
7e8c7f46a9 klippy: Replace logging.warn usage with logging.warning
logging.warn is an alias to logging.warning since Python 3.3 and will be
removed in Python 3.13.

Signed-off-by: Jelle van der Waa <jelle@vdwaa.nl>
2024-05-01 12:37:10 -04:00
charminULTRA
af149b4781
docs: Update Measuring_Resonances.md (#6509)
Current command, using the *, results in bad chart output when more than one .csv file exists in the tmp folder. This isn't obvious for people who may not know that the * is a wildcard character.

Signed-off-by: Jonathan Williams <jcw122@gmail.com>
2024-04-29 19:48:10 -04:00
Kevin O'Connor
d8d072b375 adxl345: Fix read_axes_map() for non-adxl345 accelerometers
Commit 3f845019 unified the reading of the axes_map configuration
variable, but broke the per-sensor scaling capabilities.  Pass the
scale parameters to read_axes_map() so that it can be implemented
per-sensor.

Reported by @Neko-vecter.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-29 12:07:28 -04:00
Kevin O'Connor
7b490f3ec1 probe: Fix typo in activate/deactive error messages
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-27 11:10:01 -04:00
Oleg Gavavka
b1eec53ff4
pru: BeagleBone Firmware upgrade to Debian 11.7 Bullseye (#6577)
* Porting BeagleBone to Kernel 5.10

* Fixing issue with installation for BeagleBone.

This fix resolve 2 issue:
1. Conflict with AVR packages.
2. "klipper_pru" script is executed before PRU cores are ready

* Adding additional steps to BeagleBone install guide.

* Updating BeagleBone documentation, adding different use cases, adding buses configurations SPI, I2C, CAN, UART

Signed-off-by: Oleg Gavavka <work@datalink.net.ua>
2024-04-27 11:01:57 -04:00
Amken USA
0b329c5d28
rp2040: Add kconfig options for rp2040 uart (#6549)
Modified serial.c and Kconfig to dynamically select all possible UART combinations for RP2040

Signed-off-by: Hriday Keni <info@amken.us>
2024-04-24 22:32:29 -04:00
林玮 (Jade Lin)
c3ec4af6cc
bme280: Add BMP388 sensor support to BMxx80 (#6576)
Extends the BMxx80 category with support for the BMP388 sensor,
providing temperature and pressure output similar to the existing BMxx80 class of sensors.

Signed-off-by: 林玮 (Jade Lin) <linw1995@icloud.com>
2024-04-24 21:45:05 -04:00
Alessandro Maggi
2f6e94c94c
docs: Fix typo in Bed_Mesh.md (#6572)
Signed-off-by: Maggi Alessandro <maggialessandro360@gmail.com>
2024-04-20 18:57:58 -04:00
Timofey Titovets
713b509698
sht3x: Add sht31 support (#6560)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
2024-04-20 18:42:31 -04:00
Kevin O'Connor
28faf81414 docs: Update CANBUS_Troubleshooting.md to avoid formatting error
Avoid starting a line with "128." as that confused markdown.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 13:23:42 -04:00
Kevin O'Connor
819599362c bulk_sensor: Rename BulkDataQueue methods
Rename pull_samples() to pull_queue() and rename clear_sample() to
clear_queue().  This avoids confusion between the queue of response
messages and the larger list of samples stored within those messages.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
abb7910316 bulk_sensor: Rework ChipClockUpdater class into FixedFreqReader
Move the sensor_bulk_data message queuing into the class, and then
rename that class.  This simplifies the users of the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
9ceaae3847 bulk_sensor: Refactor ChipClockUpdater constructor
Build the clock_sync and struct.Struct() in the ChipClockUpdater
constructor.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
56829b07d2 ldc1612: Use extract_samples() for sample timestamp calculation
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
f73e6dcd12 mpu9250: Use extract_samples() for sample timestamp calculation
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
144af05270 lis2dw: Use extract_samples() for sample timestamp calculation
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
95fdb68587 adxl345: Move sample timestamp calculation to reusable code
Add a new extract_samples() method to the ChipClockUpdater class that
calculates the sample timestamp for each sample in a list of bulk
sensor reports.

Update the adxl345 code to use that extract_samples() code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:52:47 -04:00
Kevin O'Connor
c106955850 docs: Add information on txqueuelen to CANBUS_Troubleshooting.md
Provide some background information on the Linux can interface
txqueuelen parameter, errors that it can cause, and considerations
when configuring it.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:49:13 -04:00
Kevin O'Connor
12e9b633d8 docs: Recommend using "ip" instead of "ifconfig" in CANBUS.md
Some Linux systems do not install ifconfig, while ip should always be
available.  So, update the canbus documentation to recommend that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-20 12:47:06 -04:00
Kevin O'Connor
2425a74638 virtual_sdcard: Define a default for on_gcode_error
If on_gcode_error is not specified, default to running the
TURN_OFF_HEATERS command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-15 14:10:36 -04:00
TheFeralEngineer
36f9b26ef9
config: Artillery Sidewinder X3 (#6534)
Signed-off-by: Phil Timpson <theferalengineer@gmail.com>
2024-04-12 12:27:36 -04:00
trofen
75d7c17656 docs: Fix typo in Resonance_Compensation.md
Signed-off-by: Plynskiy Nikita <nikita53ne@yandex.ru>
2024-04-12 12:17:35 -04:00
Pedro Lamas
c37329e9e2 homing_override: Adds rawparams support
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2024-04-12 12:13:05 -04:00
Kevin O'Connor
4cfa266e00 manual_stepper: Revert "manual_stepper: Add basic status. (#6527)"
This reverts commit b029d04668.

The MCU_Stepper class does not have a is_motor_enabled() method, so
the change above results in an internal exception.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-10 10:40:41 -04:00
Kevin O'Connor
a8b493a1ae motan: Add support for graphing ldc1612 coil frequencies
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
b09897245e docs: Add a new Eddy_Probe.md document
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
30e0fddbbf docs: Add documentation for probe_eddy_current
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
28281c595b probe_eddy_current: Use sensor value at halt position for "trigger" position
Calculate the sensor Z position after the probe halts and return that
as the "probed position".  This sensor position provides a more
accurate measurement.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
13b2926e0c probe_eddy_current: Initial support for PROBE command
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
b0d90fd013 probe_eddy_current: Support calibrating Z height to sensor frequency
Add a calibration tool that can be used to correlate sensor frequency
to bed Z height.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
d84fc431a1 ldc1612: Add LDC_CALIBRATE_DRIVE_CURRENT calibration command
Add a command to calibrate the sensor DRIVE_CURRENT0 register.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
da2b258441 ldc1612: Initial host support for reading ldc1612 bulk sensor data
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
b8f1df3a96 sensor_ldc1612: Initial support for bulk reading ldc1612 sensor
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
acdf8bb108 probe: Add a probing_move() wrapper to low-level mcu_probe class
This allows the low-level probe class more control on the probing
implementation.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kevin O'Connor
fa5fa74761 mcu: Separate trdispatch handling from MCU_endstop class
Create a new TriggerDispatch class to track the low-level handling of
the trdispatch mechanism.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-09 16:32:43 -04:00
Kamil Domański
01c7befacb
klippy: remove a few unused variable assignments (#6504)
Signed-off-by: Kamil Domański <kamil@domanski.co>
2024-04-05 17:43:43 -04:00
Viesturs Zariņš
b029d04668
manual_stepper: Add basic status. (#6527)
Adding position and enabled in manual_stepper status. Enabled is already available through stepper_enable object. But this makes it more straightforward to access it.

Signed-off-by: Viesturs Zarins <viesturz@gmail.com>
2024-04-04 16:46:30 -04:00
Michael 'ASAP' Weinrich
6f16e11197 linux: Don't use absolute paths for include
Not all systems (i.e. Nix) repect the standard Linux filesystem hierarchy,
instead relative paths should be used and allowing GCC to rely on it's
builtin search paths.

Signed-off-by: Michael 'ASAP' Weinrich <michael@a5ap.net>
2024-04-03 22:53:09 -04:00
Michael 'ASAP' Weinrich
24c884e9f3 makefile: Replace CFLAGS -I with -iquote
The -iquote tells GCC to only search that path when resolving a quoted
"include" (vs <angle brackets>) which by convention imples a include from
the projects own soruce tree. This prevents a conflict between Klippers
"sched.h" and "gpio.h" and <linux/gpio.h> and glibc <sched.h>.

Signed-off-by: Michael 'ASAP' Weinrich <michael@a5ap.net>
2024-04-03 22:53:09 -04:00
Robert Cambridge
75a40e817d stm32: fix support for USARTs on STM32G0B0
Signed-off-by: Robert Cambridge <robert@cambridge.me>
2024-04-03 12:01:00 -04:00
John Unland
5e280680c5
makefile: fix warning about lto serial compilation (#6543)
Signed-off-by: John Unland <junland.foss@gmail.com>
2024-04-02 22:08:35 -04:00
FOG_Yamato
67c152745e
stm32: Add i2c3 bus to STM32H7 (#6541)
Signed-off-by: Balanuta Simion <simion@fogyamato.dev>
2024-04-02 22:02:22 -04:00
Kevin O'Connor
9e1cbdcee3 virtual_sdcard: Fix handling of unicode characters on Python2
Commit 600e89ae fixed unicode handling on Python3, but broke Python2
support.  Use an alternate implementation that should work for both
Python3 and Python2.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-02 21:59:55 -04:00
Kevin O'Connor
0aacbc3973 toolhead: Populate minimum_cruise_ratio to printer.configfile.settings
The default minimum_cruise_ratio setting does not get populated to the
printer.configfile.settings information due to the way the
max_accel_to_decel backwards compatibility support was implemented.
Slightly rework the config reading so that the default for
minimum_cruise_ratio is populated there.

Reported by @ReXT3D.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-02 21:54:43 -04:00
Kevin O'Connor
bedec55154 motion_report: Don't negate step_distance on steppers with inverted dir pin
When querying the stepper motion queue, the resulting "interval",
"count", and "add" are already normalized to the correct direction.
That is, the "count" field will be positive if moving in a positive
axis direction and negative if moving in the reverse direction.  So,
negating the step_distance field just complicates the readers.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-04-02 21:53:13 -04:00
Mathias Pihl
239f8e59e0
scripts: Mark install-ubuntu-22.04 as executable (#6505)
Signed-off-by: Mathias Pihl <mathias@pihlerne.dk>
2024-04-02 20:57:19 -04:00
TheParanoidEngineer
e37b007f67
docs: Update Measuring_Resonances.md (#6515)
Changed "libopenblas-base" to "libopenblas-dev"

Signed-off-by: Philip Weber <philiprweb@gmail.com>
2024-03-25 13:05:22 -04:00
Carl Richard Theodor Schneider
d9043345b6 linux: Allow for more i2c buses
Similar to commit df79893, this allows klipper to use up to
/dev/i2c-14. Similar to before, this limit is arbitrary.

This is required for some other SoCs, which have even
more i2c buses available, e.g. the rk3399:

$ ls -1 /dev/i2c-*
/dev/i2c-0
/dev/i2c-3
/dev/i2c-7

Signed-off-by: Carl Richard Theodor Schneider <dev.github@crtified.me>
2024-03-21 17:10:14 -04:00
Kevin O'Connor
40728e9231 motan: Support recording lis2dw and mpu9250 sensors from data_logger.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-20 19:40:23 -04:00
Kevin O'Connor
de1cf216ac docs: Sort axis_twist_compensation in G-Codes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-20 19:40:23 -04:00
Kamil Domański
e6df93fcf8 tmc2240: add ADC voltage formatters
Signed-off-by: Kamil Domański <kamil@domanski.co>
2024-03-20 11:24:32 -04:00
Mad Beggar
235b75be3c
hc32f460: Adding support for 100pin version of H32F460 (#6488)
Signed-off-by: Guillaume Giraudon <ggiraudon@prism19.com>
2024-03-19 16:16:42 -04:00
Markus Küffner
78a15b6d81 scripts: use greenlet version depending on python version
Signed-off-by: Markus Küffner <kueffner.markus@gmail.com>
2024-03-19 10:55:35 -04:00
BIGTREETECH
bfb71bc2dc
stm32: Add i2c3_PC0_PC1 for stm32g0 (#6529)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2024-03-15 10:12:05 -04:00
Kevin O'Connor
09a78c31bb buildcommands: Add Klipper app name and license to mcu data dictionary
Add the Klipper name and license to the mcu data dictionary so that it
can be found in the flash.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:52:39 -04:00
Kevin O'Connor
0291a1554c configfile: Add support for reporting runtime_warnings via the API server
Add a new runtime_warning() method that will add a 'runtime_warning'
type message to the printer.configfile.warnings object.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:44:32 -04:00
Kevin O'Connor
d99d1a8463 mcu: Write a warning to the log if an incorrect mcu frequency is detected
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:44:32 -04:00
Kevin O'Connor
bb512ef5d7 heaters: Clarify reported stats after a shutdown
The pid logic can continue after a shutdown, even though the pin
commands sent to the mcu are ignored.  However, this behavior can
result in confusing "stats" messages in the log.  Explicitly disable
updates after a shutdown event so that the log statistics are more
clear.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:42:57 -04:00
Kevin O'Connor
bddefdde36 pid_calibrate: Fix PID_CALIBRATE command when used with heater_generic
Make sure the SAVE_CONFIG command saves the calculated PID parameters
to the correct config name.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:41:04 -04:00
Kevin O'Connor
0105aa330f toolhead: Replace max_accel_to_decel with minimum_cruise_ratio
The user facing max_accel_to_decel setting is complicated and
confusing.  Replace it with a new minimum_cruise_ratio parameter.
Internally this user-facing parameter will calculate the existing
low-level "accel_to_decel" mechanism.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-03-13 21:31:37 -04:00
Attila
18de421c4a
stm32: Fix USART3 ALT pinout on STM32G0 (#6523)
Signed-off-by: Attila Rakosi <rattila5@hotmail.com>
2024-03-10 18:48:48 -04:00
Ulf D
71604b712a
config: "static_value" in [output_pin enable_pin] is deprecated (#6520)
Signed-off-by: Ulf Dieckmann <1coderookie@quantentunnel.de>
2024-03-08 11:49:29 -05:00
Derek Kaser
31de734d19 config: update Kobra Plus build instructions and fan settings
Signed-off-by: Derek Kaser <derek.kaser@gmail.com>
2024-03-04 17:39:09 -05:00
Jake
b98375b360 avr: enable small code size options for atmega32u4
Signed-off-by: Jake Beju <jake.beju@gmail.com>
2024-03-02 18:47:16 -05:00
Pedro Lamas
a77d07907f docs: updates BED_MESH_CALIBRATE description
Adds the ADAPTIVE and ADAPTIVE_MARGIN parameters to the documentation.

Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2024-02-20 12:09:57 -05:00
Dmitry Butyugin
28f06a104b shaper_calibrate: Fixed crashes in SHAPER_CALIBRATE and TEST_RESONANCES
Fixed crashes due to wrong parameter passed to the shaper selection function
and when the custom FREQ_END is specified.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-02-17 18:25:39 -05:00
Dmitry Butyugin
72b301a285 scripts: Added shaper tuning parameters to calibrate_shaper script
The added parameters include square_corner_velocity, shaper frequencies
to optimize, input shapers to test, input shaper damping ratio and
damping ratios to test. All these options can be useful for fine-tuning
the input shapers when the default suggestions generated by the tuning
script are not optimal.

Also the `SHAPER_CALIBRATE` command was modified to pass some of these
parameters to the shaper tuning routine. Specifically, square corner
velocity and the maximum tested frequency are used to adjust shaper
tuning and maximum acceleration recommendations.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2024-02-16 19:20:56 -05:00
Kevin O'Connor
4f00f21991 docs: Note removal of deprecated options in Config_Changes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-15 12:40:10 -05:00
Kevin O'Connor
c92732e4f1 bed_mesh: Remove deprecated relative_reference_index
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-15 12:39:01 -05:00
Kevin O'Connor
2f7b234189 extruder: Remove deprecated commands and config
Remove the deprecated SET_EXTRUDER_STEP_DISTANCE and
SYNC_STEPPER_TO_EXTRUDER commands.  Remove the deprecated
shared_heater config option.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-15 12:35:19 -05:00
Kevin O'Connor
b2ac0f1ce3 heaters: Remove deprecated thermistor "NTC 100K beta 3950"
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-15 12:35:19 -05:00
Kevin O'Connor
9a940ffccb docs: Fix typo in Skew_Correction.md
Reported by @streetgt.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-15 12:29:13 -05:00
Eric Callahan
0aaabf1904 docs: update BED_MESH_OFFSET description
Add the ZFADE parameter to the documentation.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-02-15 12:03:41 -05:00
Eric Callahan
0cd16e956d bed_mesh: add ZFADE parameter to BED_MESH_OFFSET
When a ZFADE value is passed to BED_MESH_OFFSET it is used
to adjust how fade is applied.   This resolves issues with
fade when SET_GCODE_OFFSET is used during a tool change.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-02-15 12:03:41 -05:00
Anders Brujordet
1b24f6a2ad
docs: Add required dependency to run numpy with python3 on RPI (#6491)
Signed-off-by: Anders Brujordet <anders@brujordet.no>
2024-02-13 19:18:08 -05:00
Kevin O'Connor
6ce6fbbce0 docs: Fix typo in Probe_Calibrate.md
Reported by @nmattia.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-02-09 19:21:34 -05:00
Eric Callahan
9f41f53c5e bed_mesh: fix profile_name reporting in get_status()
Adaptive meshing avoids saving the mesh after calibration to prevent
users from inadvertently overwriting an existing profile with an
adaptive mesh.  This introduced a change in behavior of how
get_status() reports the profile_name, as it can now be an empty
string when a mesh is active.

This patch assigns adaptive meshes a name with a unique postfix.
In addition, it moves profile name tracking from the profile manager
to the ZMesh class.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2024-01-28 13:43:08 -05:00
Eric Callahan
16a7b50ce9 bed_mesh: fix manual mode point generation
Do not generate points for the zero_reference_position or faulty_regions
when manual probing is requested.

Signed-off-by: Eric Callahan <arksine.code@gmail.com>
2024-01-28 13:43:08 -05:00
Kiswich
600e89ae8c
virtual_sdcard: fix virtual SD file position count (#6472)
Signed-off-by: Zhang Qiwei <zxy16305@gmail.com>
2024-01-27 09:23:50 -05:00
voidtrance
5e3daa6f21
bed_mesh: Implement adaptive bed mesh (#6461)
Adaptive bed mesh allows the bed mesh algorithm
to probe only the area of the bed that is being
used by the current print.

It uses [exclude_objects] to get a list of the
printed objects and their area on the bed. It,
then, modifies the bed mesh parameters so only
the area used by the objects is measured.

Adaptive bed mesh works on both cartesian and
delta kinematics printers. On Delta printers,
the algorithm, adjusts the origin point and
radius in order to translate the area of the
bed being probe.

Signed-off-by: Mitko Haralanov <voidtrance@gmail.com>
Signed-off-by: Kyle Hansen <kyleisah@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-26 17:50:01 -05:00
Kevin O'Connor
5e433fff06 rp2040: Only change SPI settings while peripheral is disabled
Make sure to disable/enable the peripheral to ensure the clock
polarity is properly set prior to a change in CS.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-25 12:06:02 -05:00
Kevin O'Connor
f1982edcd5 rp2040: Load vectortable into ram
Load the interrupt vector table into ram at startup.  This reduces the
chance of a flash cache access causing timing instability.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-25 11:05:11 -05:00
Kevin O'Connor
44e79e0c37 rp2040: Run all code from ram
Place all normal code into ram.  This reduces the chance that rp2040
instruction cache misses could cause subtle timing issues.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-25 11:03:45 -05:00
Kevin O'Connor
23c5b20f5b rp2040: Always link using rp2040_link.lds.S
Use the rp2040 specific linker script even when using a bootloader.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-25 11:03:40 -05:00
Kevin O'Connor
55e46aa625 armcm_boot: Avoid invoking functions in reset_handler_stage_two()
Avoid calling memset() and memcpy() prior to copying the ram and
clearing the bss.  Also, place both ResetHandler() and
reset_handler_stage_two() in an explicit ".text.armcm_boot" linker
section.  These changes make it easier to support targets that want to
run all code in ram.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-25 11:02:49 -05:00
Kevin O'Connor
43a9685c58 mcu: Remove support for set_pwm() cycle_time parameter
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-23 20:04:03 -05:00
Kevin O'Connor
fd2feff67d pwm_cycle_time: New module for output pins with dynamic cycle times
Remove support for changing the cycle time of pwm pins from the
output_pin module.  Use a new pwm_cycle_time module that supports
setting dynamic cycle times.  This simplifies the output_pin code and
low-level pin update code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-23 20:04:03 -05:00
Kevin O'Connor
1baa45913f output_pin: Deprecate the maximum_mcu_duration parameter
Advise users to configure a pwm_tool config section if checking for
maximum mcu duration is required.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-23 20:04:03 -05:00
Kevin O'Connor
7abafb575b mcu: Remove support for "static" pins
Update static_digital_output.py to directly configure static digital
pins.  There are no other users of "static" pins, so remove that
support from mcu.py, replicape.py, and sx1509.py.  This simplifies the
low-level pin handling code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-23 20:04:03 -05:00
Kevin O'Connor
4115ea128a output_pin: Deprecate static_value parameter
Remove support for configuring "static" pins in output_pin module.  A
"static" pin only saves a few bytes of memory in the micro-controller.
The savings does not justify the increased code complexity.

Deprecate the static_value parameter to warn users.  In the interim, a
static_value parameter will set both value and shutdown_value
parameters.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-23 20:04:03 -05:00
Kevin O'Connor
2e8b54ae5f stm32: Remove product names from bootloader choices menu
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-22 18:58:41 -05:00
Jakub
f653db9c88
stm32: Add 36KiB bootloader offset option (#6449)
- This offset is used by Anycubic Kobra 2 Neo bootloader

Signed-off-by: Jakub Przystasz <jakub.przystasz@gmail.com>
2024-01-22 18:55:34 -05:00
BIGTREETECH
daf875e6e4
stm32g0: Disable internal pull-down resistors on UCPDx CCx pins, because klipper never uses UCPD (#6462)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2024-01-21 20:23:12 -05:00
Kevin O'Connor
d785b396a7 sensor_lis2dw: No need to schedule start of bulk reading
It's simpler and faster to enable the lis2dw in the python code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
d853c19811 sensor_mpu9250: No need to schedule start of bulk reading
It's simpler and faster to enable the mpu9250 in the python code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
6f0e91f69f sensor_adxl345: No need to schedule start of bulk reading
It's simpler and faster to enable the adxl345 in the python code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
2dc4cfc5df bulk_sensor: Don't assume chip_clock is zero on start of queries
Send an explicit clock query in ChipClockUpdater to seed the initial
clock.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
266e96621c sensor_bulk: New C file with helper code for sending bulk sensor measurements
Refactor the low-level "bulk sensor" management code in the mcu.  This
updates the sensor_adxl345.c, sensor_mpu9250.c, sensor_lis2dw.c, and
sensor_angle.c code to use the same "bulk sensor" messages.  All of
these sensors will now send "sensor_bulk_data" and
"sensor_bulk_status" messages.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
dc6182f3b3 sensor_angle: No need to send messages when stopping queries
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
95e1a290f1 sensor_lis2dw: No need to send messages when stopping queries
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
5ff555a705 sensor_mpu9250: No need to send messages when stopping queries
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
3275614b89 sensor_adxl345: No need to send messages when stopping queries
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
83d0d2f19b mcu: Add send_wait_ack() support to CommandWrapper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-19 11:55:15 -05:00
Kevin O'Connor
94719fe327 docs: Update to mkdocs to use latest jinj2 version
There is a jinja2 security advisory on the current Jinja2 version.
Klipper is not impacted by this advisory (as it does not run jinja2 on
any untrusted data), but there is no harm in updating.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-18 13:36:17 -05:00
Kevin O'Connor
1d92be71da toolhead: Rename note_kinematic_activity() to note_mcu_movequeue_activity()
Rename this function to make it more clear why it is called.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-18 12:25:08 -05:00
Kevin O'Connor
6cc409f6fb toolhead: Rename MoveQueue class to LookAheadQueue
Rename this class so that is is not confused with the mcu "move
queue".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-18 12:16:47 -05:00
Kevin O'Connor
d633ef2cfc force_move: Fix missing call to note_kinematic_activity()
Commit 3d3b87f9 incorrectly removed the call to
note_kinematic_activity().  A call to toolhead.dwell() is not
sufficient to wake up the mcu move queue flushing.  The call to
note_kinematic_activity() is needed for that.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-18 11:24:07 -05:00
grnbrg
43d0dba4b4
config: Add Creality Ender 5 S1. (#6455)
Creality released the Ender 5 S1 model in November of 2022.  It
has enough hardware differences from the previous models that
that the existing Ender 5 configs are not compatible.  This
configuration is based on one provided by Creality that was then
tweaked and modified.  I have been using these values (plus some
additional entries) for about 6 months with no issues.

Signed-off-by: Brian Greenberg <grnbrg@grnbrg.org>
2024-01-18 10:13:54 -05:00
Kevin O'Connor
7a74888b43 toolhead: Extend flushing slightly past required time
There is no harm in enabling flushing for a little longer than
necessary.  In contrast, a slight rounding issue causing a message to
not get flushed properly could result in an error.  So, extend the
flushing time slightly to avoid potential issues.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-17 11:28:42 -05:00
Kevin O'Connor
3d3b87f97f toolhead: Ensure full kin_flush_delay after flush_step_generation()
Commit b7b13588 made it possible that the kinematic code could be
restarted after a flush_step_generation() call without a sufficient
delay.

Rename last_sg_flush_time to min_restart_time and use that to ensure
_calc_print_time() always pauses kin_flush_delay time since the last
flush_step_generation() call.

Also, update force_move to invoke flush_step_generation() after any
movements.  This is needed to ensure there is a sufficient delay
should force_move be called on a stepper motor that is part of the
toolhead kinematics and is using a step generation "scan time".

This fixes possible "internal error in stepcompress" reports when
using FORCE_MOVE.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-16 20:40:55 -05:00
Kevin O'Connor
447a88eb08 docs: Update Multi_MCU_Homing.md to note the importance of low-latency
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-16 14:19:11 -05:00
Kevin O'Connor
1ea9f3aa35 mcu: Increase trsync_state reporting during multi-mcu homing
The current code has the mcu report a trsync_state message every 10ms
and expects a time extension within 25ms.  However, this means that if
a single mcu->host report is lost then 20ms would elapse until the
next report, which would allow for only a 5ms round-trip time before a
timeout error is reported.

Increase the trsync_state timing so that a message is sent every
7.5ms.  This increases the total number of messages per second sent
from mcu to host to 133 (from 100).  With this change, a single lost
message would still allow for up to a 10ms round-trip time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-16 14:19:11 -05:00
Kevin O'Connor
dab39c02cd mcu: Stagger trsync reporting time during multi-mcu homing
When multiple MCUs are involved in homing, stagger the scheduling of
the trsync_state report messages from each mcu.  Staggering helps
spread the bandwidth, helps reduce locking contention in the host, and
reduces the chance that intermittent latency could result in a
communication timeout.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-16 14:19:11 -05:00
Kevin O'Connor
96ab906946 sensor_mpu9250: Check for overflows on each query_mpu9250_status command
Move overflow detection from mp9250_stop() to
command_query_mpu9250_status().  Currently the host ignores any
contents returned from a stop request, so overflow reporting at that
point has limited utility.

In practice, this change will result in one additional i2c transaction
to the mpu9250 device every 100ms.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-07 11:59:59 -05:00
Kevin O'Connor
84aa3caa45 sensor_mpu9250: Simplify mp9250_query()
The mpu9250 code always reads from the sensor in 48 byte chunks and
always sends an mpu9250_data message immediately after that.  Make
that more clear in the querying code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-07 11:59:59 -05:00
Kevin O'Connor
49315b3cc4 sensor_mpu9250: Fix timing in command_query_mpu9250_status()
Commit 80a7744b optimized the fifo tracking code.  However, it
introduced an error in the time tracking in
command_query_mpu9250_status().  The purpose of that function is to
provide a precise timestamp of the total number of messages produced
at the time of that call.  Thus, the returned fifo value needs to be
the fifo level in the chip at the time of the call (not the value read
during previous checks).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-07 11:59:59 -05:00
Kevin O'Connor
1a1568c38b mpu9250: Fix incorrect use of time.sleep()
It is not valid to call time.sleep() in the host python code (it could
causes glitches in other processing, and it does not ensure there is a
pause between operations on the mcu).

Use minclock instead of time.sleep() to ensure there is a sufficient
pause during chip startup.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2024-01-07 11:59:55 -05:00
marbocub
b50d6669a8
docs: Fix typo in Bed_Mesh.md (#6450)
the meaning and the illustration shows 13x9 mesh however the text was 13x8.

Signed-off-by: Mitsunori YOSHIDA <marbocub@gmail.com>
2024-01-06 17:26:48 -05:00
I3DBeeTech
0665dc8976
config: I3DBEEZ9 New board (#6447)
Signed-off-by: Venkata Kamesh <i3dbee@gmail.com>
2024-01-02 11:31:30 -05:00
Kevin O'Connor
92fe8f15b8 buttons: Fix possible ordering issue if a callback blocks
Invoke button callbacks directly from the background thread.  This
ensures that button notifications are delivered and delivered in the
correct order.  Previously, if a callback blocked, it was possible a
new update could start before the previous update was completed, which
could lead to lost events or out of order events.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-30 12:55:59 -05:00
Kevin O'Connor
25bc649cd2 toolhead: Make sure to flush history when in debug output mode
When in debugging "batch mode", use the existing method of keeping the
last 30 seconds of history from the furthest planned move time.  This
avoids keeping all moves in memory during a batch test.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-30 12:35:42 -05:00
Kevin O'Connor
9847b44901 toolhead: Avoid calling reactor.monotonic() on each _advance_flush_time()
Move calculation of clear_history_time to the callers of
_advance_flush_time() as a minor processing optimization.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-30 11:43:32 -05:00
Francois Chagnon
d7f6348ae6
toolhead: Keep stepcompress move history relative to current time (#6439)
Expire history relative to current time rather than last move in history queue

Signed-off-by: Francois Chagnon <fc@francoischagnon.net>
2023-12-30 11:34:21 -05:00
Kevin O'Connor
b502558052 bulk_sensor: Fix missing logging import
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-28 13:13:57 -05:00
Kevin O'Connor
6f686ddee3 bulk_sensor: Add some module level documentation
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
c716edafe2 bulk_sensor: Simplify the registration of internal clients in BatchBulkHelper
Previously, the BatchBulkHelper class was designed primarily to
register webhook clients, and internal clients used a wrapper class
that emulated a webhooks client.

Change BatchBulkHelper to support regular internal callbacks, and
introduce a new BatchWebhooksClient class that can translate these
internal callback to webhooks client messages.

This makes it easier to register internal clients that can process the
bulk messages every batch interval.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
3370134593 bulk_sensor: Rework APIDumpHelper() to BatchBulkHelper()
The APIDumpHelper class is mainly intended to help process messages in
batches.  Rework the class methods to make that more clear.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
95c753292d bulk_sensor: Minor code reorg to _stop() in APIDumpHelper()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
acde3720a4 bulk_sensor: New add_mux_endpoint() helper function in APIDumpHelper
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
ffd44c0219 bulk_sensor: Move APIDumpHelper() from motion_report.py to bulk_sensor.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
f4c8f0bf88 angle: Define BYTES_PER_SAMPLE and SAMPLES_PER_BLOCK
This makes the code a little more readable.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
3f84501955 adxl345: Add a read_axes_map() helper function
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
43ce7c0b9a adxl345: No need to implement is_measuring()
The APIDumpHelper class already ensures that the start/stop callbacks
will only be called when needed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
d6a4669ce0 bulk_sensor: Add new ChipClockUpdater helper class
All the accelerometers use a standard response for their query_status
messages.  Create a common helper class to process those responses.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
e67cbbe5c1 bulk_sensor: Add new BulkDataQueue class
Move the bulk sample queue collection to a new helper class in
bulk_sensor.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
978c294741 bulk_sensor: New file with helper code for reading bulk sensors
Move the ClockSyncRegression class from adxl345.py to a new
bulk_sensors.py file.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:47:21 -05:00
Kevin O'Connor
644f7e0872 toolhead: Simplify _advance_flush_time() sg_flush_time calculation
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:35:27 -05:00
Kevin O'Connor
fe56bf36c9 toolhead: Fix _calc_print_time() after G4 and SET_PRESSURE_ADVANCE
Commit b7b13588 changed the internal flush time tracking, but
introduced the possibility of motion restart occurring too close to
the last motion end in some rare cases.  This could result in
internal stepcompress errors.

Track the last step generation flush time (last_sg_flush_time) and use
when recalculating the next print_time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-26 11:18:40 -05:00
Alex Maclean
77619e912c stm32: Fix CAN for STM32G4
Signed-off-by: Alex Maclean <monkeh@monkeh.net>
2023-12-21 20:58:57 -05:00
Alex Maclean
147492b253 stm32: Fix ADC for STM32G4
At least STM32G4 requires four ADC clock cycles between hardware
clearing ADCCAL and setting ADEN or the write disappears. Make a
tenacious write attempt.

Signed-off-by: Alex Maclean <monkeh@monkeh.net>
2023-12-21 20:58:57 -05:00
Alex Maclean
71ab6240f2 stm32: Fix STM32G4 USB
STM32G4 USB controller requires 8 or 16-bit access, not 32-bit

Signed-off-by: Alex Maclean <monkeh@monkeh.net>
2023-12-21 20:58:57 -05:00
Kevin O'Connor
547bfbf818 pwm_tool: Fix error reporting
References to pins.error are not valid as the pins module is not
imported.  Reported by @Piezoid.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-19 14:57:39 -05:00
Sami Haahtinen
3417940fd8 hall_filament_width_sensor: max filament diameter
Add support for maximum filament diameter to hall filament width sensor.
If the diameter of the filament diameter is larger than the limit, the
virtual runout sensor will trigger. The default value is set to maximum
flow adjustment threshold to prevent oversized filament from clogging.

Signed-off-by: Sami Haahtinen <ressu@ressukka.net>
2023-12-17 11:13:33 -05:00
Kevin O'Connor
2defd7374a pwm_tool: Add support for maximum_mcu_duration
Implement the maximum_mcu_duration config parameter along with its
associated queue flushing.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-16 15:44:17 -05:00
Kevin O'Connor
1e5f688b53 mcu: Add support for registering callbacks during move queue flush
Support notification callbacks each time the mcu move queue is
flushed.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-16 15:42:39 -05:00
Kevin O'Connor
19862bc3b7 toolhead: Track separate time for flush_step_generation() and need_flush_time
Introduce a new step_gen_time variable for flush_step_generation().
This allows need_flush_time to be set to future times without
interfering with flush_step_generation().

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-16 15:42:39 -05:00
Razor
f0753bd338
docs: add rp2040 to internal temp sensor list (#6426)
Signed-off-by: Levi Szabo <iamrazorshark@gmail.com>
2023-12-13 12:13:39 -05:00
Pedro Lamas
6676c1df86 gcode: expose status with available commands
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-12-11 11:51:51 -05:00
Kevin O'Connor
2c2bb720fa adxl345: Simplify sequence and limit_count upconversion
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-10 14:59:18 -05:00
Kevin O'Connor
1a83845c9f angle: Simplify sequence upconversion
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-10 14:59:18 -05:00
Kevin O'Connor
fe7082e4a8 buttons: Simplify ack upconversion code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-10 14:59:18 -05:00
Kevin O'Connor
c5bd813d8b clocksync: Simplify 32bit clock upconversion code
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-10 14:59:13 -05:00
Kevin O'Connor
62bf52bfcf serialqueue: Simplify sequence number upconversion
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:52:06 -05:00
Kevin O'Connor
99d7af87fd pwm_tool: Notify the toolhead that the move_queue needs to be flushed
Call toolhead.note_kinematic_activity() on each pin update to ensure
that those updates will be flushed properly.

This fixes "Timer too close" errors on SET_PIN commands that are
issued when the toolhead is idle.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Kevin O'Connor
c491ea669f toolhead: Support flushing even while lookahead queue is idle
Track a "NeedPrime" queue state instead of the "Flushed" state, and
continue running the background flushing timer as long as there may be
data in any of the move queues.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Kevin O'Connor
b7b13588c7 toolhead: Rework flushing to be based on mcu flush time
Rename last_kin_move_time to need_flush_time and rename
force_flush_time to last_flush_time to improve variable name clarity.

Move low-level flushing to new _advance_flush_time() so that it is
possible to flush the queues without needing to advance print_time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Kevin O'Connor
9e574c3497 toolhead: Separate out priming flush notification to its own timer
Simplify the code by introducing a separate lookahead priming flush
timer.  After this change, the flush_timer is not active in any of the
special queuing states.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Kevin O'Connor
93cd8834f3 toolhead: Clarify internal toolhead "stall" and "pause" naming
Clarify the internal naming to make a more clear distinction between
"stalling" (input not coming fast enough) and "pausing" (the need to
hold up reading of input to avoid buffering too far into the future).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Kevin O'Connor
bafb126abd toolhead: Remove undocumented buffer management config parameters
These internal low-level config parameters were never documented.
Going forward, developers may modify them by altering the internal
settings in toolhead.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-07 17:09:26 -05:00
Bassam
5bd32e2984
config: Update printer-sovol-sv06-2022.cfg x_offset (#6417)
Signed-off-by: Bassam Husain <bassamanator.2cj4t@simplelogin.com>
2023-12-06 12:57:10 -05:00
Bassam
d929be487b
config: Update printer-sovol-sv06-2022.cfg to stock (#6416)
This printer is advertised as having a `220*220*250mm build volume`.

Signed-off-by: Bassam Husain <bassamanator.2cj4t@simplelogin.com>
2023-12-06 12:56:12 -05:00
Stefan Dej
7ed3c679dc config: Add LDO Leviathan v1.2 generic config
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-12-06 12:51:07 -05:00
Kevin O'Connor
0ccf5f8e47 github: Temporarily disable close_reviewer_needed automation
Temporarily disable the closing of PRs marked as "reviewer needed".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-05 17:57:11 -05:00
Will Puckett
fc102edc24
hard_pwm: Add pin defs for STM32F070 and STM32F072 (#6409)
Define hard_pwm pins for STM32F070 and STM32F072, and update KConfig accordingly. 

Signed-off-by: Will Puckett <willpuckett@gmail.com>
2023-12-05 17:44:51 -05:00
Kevin O'Connor
05d5451347 docs: Improve max_accel documentation in Config_Reference.md
Note that the max_accel parameter is the actual acceleration used in
most movements.

Note that the accel/velocity limits can be changed using the
SET_VELOCITY_LIMIT command.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-12-05 17:42:53 -05:00
Thijs Triemstra
795ce490a0
doc: updates to Installation.md (#6398)
omit rpi device version nrs

rpi2 or newer

Signed-off-by: Thijs Triemstra <info@collab.nl>
2023-12-03 21:10:59 -05:00
CODeRUS
38221df83a
avr: enable small code size options for 328 and 328p (#6411)
Signed-off-by: Andrei Kozhevnikov <coderusinbox@gmail.com>
2023-11-29 11:31:49 -05:00
Kevin O'Connor
03f69cd81a tmc: Query latest value during _init_registers()
The set_register() code may block, and it therefore may be possible
that the loop in _init_registers() could occur in parallel with other
updates.  That could result in a "OrderedDict mutated during
iteration" error.

Avoid the error by querying the latest value during each iteration of
the loop.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-28 21:24:41 -05:00
Andrei Ignat
ea2f6bc0f5
exclude_object: Don't use gcmd.respond_error() (#6407)
gcmd.respond_error() has been deprecated: 61524542d2

Signed-off-by: Andrei Ignat <andrei@ignat.se>
2023-11-22 11:53:38 -05:00
Kevin O'Connor
bb4711c5d3 tmc5160: Increase maximum current error check
It's possible to build and configure tmc5160 drivers with external
mosfets that support more than 3 amps.  The actual maximum for tmc5160
drivers is dependent on how the board is wired and the mosfets used.
Increase the error check to 10 amps.  This error checking is primarily
intended to catch "obvious misconfigurations" (eg, specifying
milli-amps instead of amps), and the new value of 10 amps should
suffice for this task.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-20 18:15:46 -05:00
Kevin O'Connor
187cc2f1b8 configfile: Improve support for python3.12
It seems python3.12 has removed support for readfp() - use read_file()
instead.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-16 22:28:40 -05:00
vaxxi
3c8f202dfa
bmp280: Add support for BMP180 sensor (#6370)
Extends the BMxx80 category with support for the older BMP180 sensor, providing temperature and humidity output.

Signed-off-by: VAXXi Popescu <github@vaxxi.net>
2023-11-16 22:27:44 -05:00
docgalaxyblock
83df4a8627 stm32: enable 64KiB bootloader offset for all F4
Signed-off-by: Joshua Schlicker <potter-91@web.de>
2023-11-16 22:09:59 -05:00
Kevin O'Connor
29b7550ce5 pwm_tool: Add support for high-speed PWM pin updates
The output_pin module is only capable of updating an output pin at
most once every 100ms.  Add a new pwm_tool module that is capable of
queuing updates in the micro-controller and thus allowing for much
higher update rates.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-16 22:07:15 -05:00
Kevin O'Connor
48a05eaa54 stepcompress: Add support for queuing messages that consume move queue space
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-16 22:07:15 -05:00
Thijs Triemstra
4688c21c54
klippy: Replace deprecated logger.warn with logger.warning (#6385)
Replace deprecated logger.warn with logger.warning

logger.warn will be removed in Python 3.13

Signed-off-by: Thijs Triemstra <info@collab.nl>
2023-11-16 22:06:13 -05:00
Herb McNew
3f8f30d612
config: Update printer-sovol-sv06-plus-2023.cfg (#6401)
In testing with a user on Discord we discovered the sensorless homing thresholds were out of line with what Sovol ships with Marlin. This aligns with their settings.

Signed-off-by: Herb McNew <herb.mcnew@gmail.com>
2023-11-16 21:57:45 -05:00
Herb McNew
74473322e5
config: Add Sovol SV06 Plus (#6397)
New configuration for the Sovol SV06 Plus
Initial pass at adding a printer configuration for the Sovol SV06
Plus based on the existing Sovol SV06 config. Updated for the larger
build volume, added filament runout sensor, and removed any references
to the LCD screen since the stock screen doesn't work with Klipper.

Signed-off-by: Herb McNew <herb.mcnew@gmail.com>
2023-11-14 13:15:46 -05:00
Kevin O'Connor
0d67d9c45d docs: Note the release of v0.12.0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-10 18:36:19 -05:00
Kevin O'Connor
0acf3035e8 docs: Update Features.md
Note additional features that have been added recently.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-10 18:35:59 -05:00
Pedro Lamas
9e765daeed bed_screws: Reset on move error
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-11-02 13:08:53 -04:00
Wayne Manion
233f50424c
config: Update generic-bigtreetech-skr-pico-v1.0.cfg (#6376)
Add RP2040 internal temperature sensor

Signed-off-by: Wayne Manion <treowayne@gmail.com>
2023-11-02 13:03:01 -04:00
Kevin O'Connor
64a97431b5 docs: Update Contact.md to note other common ways to obtain Klipper log file
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-01 19:04:13 -04:00
Kevin O'Connor
03982f2c7e docs: Update the Contact document
Try to make it more clear that Discord is not Discourse, as the two
similarly sounding services are often confused by users unfamiliar
with them.

The Klipper Discourse and Klipper Discord are available for many
topics related to Klipper - reword some sections to make their use
more open.

Avoid referring to the Klipper github repo in this Contact document as
we no longer use Klipper github issues at all.

Remove the table of contents as it is largely redundant for the
document.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-11-01 19:04:13 -04:00
Kevin O'Connor
bee7ec720b config: Add new generic-bigtreetech-octopus-pro-v1.1.cfg config
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-30 14:29:43 -04:00
Kevin O'Connor
9b15293547 config: Clarify stepper enable comment in Octopus boards
Make sure the stepper enable_pin comment shows an inverted pin.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-30 14:29:43 -04:00
Kevin O'Connor
a629b87ae0 config: Split generic-bigtreetech-octopus.cfg into separate files
Use two different files for the Octopus Pro and Octopus (non-Pro).
The configs are the same in practice, but the difference in version
and naming can lead to confusion.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-30 14:29:43 -04:00
Kevin O'Connor
f7567a0db9 Revert "toolhead: Use dict for step generation flush times. (#6303)"
This reverts commit 6749985302.

A defect was found in the above commit (the input shaper code calls
note_step_generateion_scan_time() for many steppers, so the
input_shaper class can't be used as the index).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-21 15:46:08 -04:00
Viesturs Zariņš
6749985302
toolhead: Use dict for step generation flush times. (#6303)
Makes the API to extruder and input shaper more robust, avoiding the need to track the old delay.

Signed-off-by: Viesturs Zariņš <viesturz@gmail.com>
2023-10-19 13:28:16 -04:00
Tom Dunn
0c521b601d Config_checks: Missing ! in pin inversion example in Verify endstops
In the "Verify endstops" section there is an example of adding an
exclamation point to the pin definition to invert its logic.  I
believe the intention in the example is to keep the hardware pull-up
^ and follow it with ! to invert the pin logic, but the ! is missing.

Signed-off-by: Tom Dunn <thomas.dunn@gmail.com>
2023-10-19 13:13:57 -04:00
Aaron B. Haun
593486fadc docs: Fix a typo in serial bootloader entry docs
Signed-off-by: Aaron B. Haun <aaron@haun.guru>
2023-10-19 13:10:05 -04:00
Luke V
dd01e99c59
atsam: Add support for CAN on atsame70 (#6366)
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2023-10-19 13:01:59 -04:00
Alex Maclean
b1f597c550
atsam: Remove USB endpoint header (#6365)
The atsam USB hardware only requires that the ACM endpoint be endpoint
3.  As of commit 11828387 the atsam chips can therefore use the
default USB endpoints.

This will allow CAN bridge support for the SAME70 to function
(upstream host driver has hardcoded endpoints).

Signed-off-by: Alex Maclean <monkeh@monkeh.net>
2023-10-12 21:02:26 -04:00
Aaron B. Haun
ecc9bbf52a docs: add info about requesting bootloaders
Signed-off-by: Aaron B. Haun <aaron@haun.guru>
2023-10-12 20:53:31 -04:00
Kevin O'Connor
5edc7fee7e config: Fix trailing space in printer-creality-ender5-2019.cfg
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-09 13:34:58 -04:00
ghostoverflow256
7eabf02f5b
config: Update printer-creality-ender5-2019.cfg to add instructions for silent boards (#6326)
Recently tested on my ender 5 pro that came from creality with a v1.1.5 board. Works. Tested all endstops, motors, and heaters. 

Signed-off-by: Jake Aronleigh <jakestar98@outlook.com>
2023-10-09 13:28:49 -04:00
Kevin O'Connor
83ef0e135e stm32: Make sure to limit tx during usbfs startup
Wait for two tx packets before startup, and make sure one of those
packets is acked before sending a third tx packet.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-05 00:47:42 -04:00
Kevin O'Connor
447125faae serialqueue: Eventually time out if unable to write CANbus messages
Klipper logs an error on a failed CANbus write.  Unfortunately, if the
bus becomes permanently disabled (eg, due to a user removing power to
devices on the CANbus) then it can result in the logs filling with
error messages.

Permanently disable the low-level processing of messages if CANbus
writes continually fail for at least 10 seconds.  This avoids filling
the log with redundant messages.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-04 22:42:14 -04:00
Kevin O'Connor
043f18da26 stm32: Fix usbfs spurious USB packet transmit on startup
Commit cd8d57c2 added USB double buffering mode on transmits.
However, when enabling double buffering mode, the hardware seems to
always send at least two packets.  Spurious transmissions could cause
the Linux gs_usb driver to get confused, which could lead to the can0
device becoming unavailable on restarts.  Fix by waiting for two USB
packets to be available before enabling the endpoint.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-04 22:11:22 -04:00
Kevin O'Connor
615db729e7 stm32: Only enable one direction on usbfs double buffered end points
The bulk out endpoint should not be enabled in tx mode, and the bulk
in endpoint should not be enabled in rx mode.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-04 18:49:46 -04:00
Kevin O'Connor
6adff3954b usb_canbus: Prioritize local response sending over new host messages
Prioritize sending responses back to the host over transmitting new
messages from the host.  Otherwise, the gs_usb host usb
acknowledgments could saturate the usb bandwidth for extended periods.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:29:17 -04:00
Kevin O'Connor
78ae83c314 usb_canbus: Add a local queue for USB messages received from host
Read USB messages arriving from the host into a queue.  This makes it
less likely that USB "bulk out" packets will be NAK'ed on the USB bus,
which improves USB bus utilization.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:29:17 -04:00
Kevin O'Connor
5b204866c5 usb_canbus: Rename UsbCan.queue to UsbCan.canhw_queue
Rename the internal variable names.  This is in preparation for
support of a USB message queue.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:29:17 -04:00
Kevin O'Connor
472fd32cab rp2040: Add support for double buffering on USB bulk tx packets
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:28:13 -04:00
Kevin O'Connor
90427fe30e rp2040: Add support for double buffering on USB bulk rx packets
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:28:13 -04:00
Kevin O'Connor
bdeec0f56d rp2040: Open code usb_read_packet() and usb_write_packet() in callers
Copy the code for these two functions to their respective callers.
This is in preparation for double buffer support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:28:13 -04:00
Kevin O'Connor
83eecae028 rp2040: Add helper functions to usbserial.c
Add helper functions for manipulating the buffer memory and packet
control registers.  This is in preparation for double buffer support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:28:13 -04:00
Kevin O'Connor
cd8d57c2c6 stm32: Add usbfs double buffer support for bulk tx messages
Implement the usbfs fast buffer switching mechanism on the "bulk in"
endpoint.  This can improve the overall USB throughput and bus
utilization.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:26:46 -04:00
Kevin O'Connor
b1361d9e5b stm32: Add usbfs double buffer support for bulk rx messages
Implement the usbfs fast buffer switching mechanism on the "bulk out"
endpoint.  This can improve the overall USB throughput and bus
utilization.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:26:46 -04:00
Kevin O'Connor
01ac5334e9 stm32: Update usbfs to support setting both buffers for each endpoint
The usbfs device supports two buffers for each endpoint - typically
one for rx and one for tx.  Add support for explicit handling of both
buffers.  This is in preparation for improved "double buffering"
support.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:26:46 -04:00
Kevin O'Connor
1e3ace2170 stm32: Improve usbfs epr register handling
Replace the set_stat_x_bits() functions with a single calc_epr_bits()
function.  This new function supports setting bits other than the stat
field in the epr register.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:26:46 -04:00
Kevin O'Connor
aa726cb7cb lib: Update to latest can2040 code
Add support for can2040_stop()
Add data_state_go_error() helper
Add new can2040_get_statistics() API function
Call report_note_discarding() after setting MS_DISCARD state
Convert report_is_rx_eof_pending() to report_is_not_in_tx()

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-10-03 23:24:18 -04:00
Ikko Eltociear Ashimine
7bd32994d4 docs: fix typo in RPi_microcontroller.md
additionaly -> additionally

Signed-off-by: Ikko Eltociear Ashimine <eltociear@gmail.com>
2023-09-29 13:58:29 -04:00
Dmitry Butyugin
a4cd0336bd
idex_modes: Fixed the case when carriages home in the same direction (#6310)
Previous version of the code assumed that dual carriages home away
from each other, which is not true on some machines, which have the
second dual carriage homing on the first carriage. The new code
correctly identifies the relative order of the carriages now.

This fixes discrepancies between the documentation and the actual
implementation of the carriages kinematic ranges calculation.

Notes about dual_carriage homing and proximity checks changes

Fixed clearing of homing state after homing in certain modes

In case of multi-MCU homing it is possible that the carriage position
will end up outside of the allowed motion range due to latencies in data
transmission between MCUs. Selecting certain modes after homing could
result in home state clearing instead of blocking the motion of the
active carriage. This commit fixes this undesired behavior.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-09-29 13:46:42 -04:00
Kevin O'Connor
21b7842979 docs: Add Peopoly to Sponsors.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-09-26 16:51:38 -04:00
Kevin O'Connor
e9bf2d4c5c mcu: Enhance RetryAsyncCommand to handle low-level retransmits
The RetryAsyncCommand code needs to ensure that any response messages
are not from a previous (unrelated) query.  To do that it compares the
'#sent_time' from potential responses to ensure they are not from a
previous session.  However, if there are any low-level serial
retransmits then the low-level code sets the '#sent_time' to zero (to
indicate that the query send time is not strictly known).  That could
result in a valid response not being accepted by RetryAsyncCommand.

If a low-level connection is experiencing a small amount of periodic
retransmits it could result in multiple high-level retry attempts
failing to the point that there is a user-facing error.  This could
result in "Timeout on wait for 'tmcuart_response' response" errors.

Fix by accepting responses even if there is a low-level retransmit
once the code can confirm that there can be no previous query still in
progress.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-09-21 14:52:55 -04:00
DavidvtWout
8ef0f7d7e3
spi_temperature: Limit maximum temperature in MAX31865.calc_adc() to melting point of platinum (#6320)
Limit the maximum temperature in MAX31865.calc_adc() to the melting
point of platinum. Above this temperature the Callendar-Van Dusem
formula does not make sense. The default value for max_temp is
99999999.9 and at this temperature the result of this formula is
negative. This sets max_sample_value to 0 which causes the mcu
to shutdown.

Set max adc value to (1<<15)-1 .  This is needed because the max value of the adc register
of the MAX31865 is 0b1111 1111 1111 1110 which represents
32767 and not 32768.

Signed-off-by: David van 't Wout <github@yoctobyte.nl>
2023-09-10 18:51:14 -04:00
FrY Sennberg
2acfa28294
tmc2240: Adding UART interface support to tmc2240 (#6305)
Signed-off-by:  Christoph Frei <fryakatkop@gmail.com>
2023-09-10 14:41:59 -04:00
Bomberski
8f178b892a
config: Add MKS Monster 8 generic config (#6336)
Signed-off-by: Allen Cox <Bomberski420@gmail.com>
2023-09-10 13:55:37 -04:00
JamesH1978
5f58fe7484
config: Add HC32F460 variant of Ender 2 Pro (#6334)
PR to add the newer version of the Ender 2 Pro with the CR-FDM-v2.5.54.170 motherboard with the HC3232F460 chip.

Confirmed as working with discord member NyftHeart and using configs from Steve Gotthardt, with his permission to use and submit.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-09-10 13:52:33 -04:00
bigtreetech
5f990f93d5 Kconfig: Support Enable/Disable lis2dw on chips with small flash size
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
2023-08-21 14:26:46 -04:00
bigtreetech
073665cebb docs: Add how to configure LIS2DW instructions
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
2023-08-21 14:26:46 -04:00
bigtreetech
ec1dcf3bd2 lis2dw12: Add support for lis2dw12 accelerometer
lis2dw12 is an accelerometer from STMicroelectronics(https://www.st.com/resource/en/datasheet/lis2dw12.pdf)
With better performance than the ADXL345 according to the datasheet.

Signed-off-by: XM.Zhou from BigTreeTech zhouxm@biqu3d.com
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
2023-08-21 14:26:46 -04:00
Kevin O'Connor
c9aa7ac871 github: Fix regression due to update of actions/stale
Commit 594c0243 updated the workflows from actions/stale@v3 to
actions/stale@v8, but did not make the corresponding updates to the
config parameters.  This resulted in the closing of some PRs.  Update
the config parameters to avoid this regression.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-08-21 13:15:53 -04:00
locki-cz
01ed8096d8
spi_flash: Update board_defs.py (#6318)
Added alias for Octopus pro h723 v1.1 for sdcard update script.

Signed-off-by: David Bucek <bucek.david@gmail.com>
2023-08-15 14:11:51 -04:00
Wulfsta
261efdd86c config: Add 1LC example configuration and docs
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2023-08-13 15:32:27 -04:00
Falk Höppner
4292136b16 hc32f460: Add app address 0x10000
Required for the Anycubic Kobra 2.

Signed-off-by: Falk Höppner <falk@hoppner.se>
2023-08-13 15:30:00 -04:00
flatline-84
15c3824e9b
config: Add config for printer Creality CR10s Pro V2 (#6300)
Created a base config for the Creality CR10s Pro v2 as described here: https://www.creality.com/products/cr-10s-pro-v2-3d-printer

This will allow users with this printer to more easily setup Klipper firmware.

Signed-off-by: Peter Kydas <peter@kydas.me>
2023-08-13 15:26:56 -04:00
FatalBulletHit
dd368c107c
docs: Update RPi_microcontroller.md (pwm-2chan) (#6304)
Added a more detailed explanation for pwm-2chan.

Signed-off-by: Alfie Batthullt <FatalBulletHit@gmail.com>
2023-08-13 15:23:58 -04:00
Chris Lombardi
07792a02b4 scripts: Added stm32f070 to mcus supported by flash_usb.py
Verified with an Monoprice Mini Select v2 using katapult.

Signed-off-by: Chris Lombardi <clearchristx@gmail.com>
2023-08-13 14:14:55 -04:00
D4SK
aa8ba30f8a
cartesian: fix x-axis being hardcoded for dual_carriage (#6313)
Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net>
2023-08-11 21:21:46 -04:00
Thijs Triemstra
594c024355
github: update dependencies (#6293)
Signed-off-by: Thijs Triemstra <info@collab.nl>
2023-08-11 21:17:13 -04:00
Donna Whisnant
00b78c68cc docs: Update Config_Changes.md to reflect new SKR-3 flash-sdcard naming.
Signed-off-by: Donna Whisnant <dewhisna@dewtronics.com>
2023-08-11 20:00:36 -04:00
Donna Whisnant
20d87c73fe scripts: Support both H743 and H723 BTT SKR3 boards sdflash
Signed-off-by: Donna Whisnant <dewhisna@dewtronics.com>
2023-08-11 20:00:36 -04:00
Pedro Lamas
ed66982b8e heaters: adds temperature monitors
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-08-01 20:32:03 -04:00
Dmitry Butyugin
55d09771b1 idex_modes: A small fix for MOVE_SPEED param
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-08-01 20:26:19 -04:00
Michael Jäger
6f7c743615
temperature_combined: A class that can combine several other temperature sensors (#6230)
Signed-off-by: Michael Jäger <michael@mjaeger.eu>
2023-08-01 13:18:03 -04:00
Philippe Daouadi
039daecb4f
axis_twist_compensation: Add X twist compensation module (#6149)
Implements AxisTwistCompensation, and Calibrater

Supports calibration of z-offsets caused by x gantry twist

Modify PrinterProbe._probe function to check if the probed z value should be adjusted
based on axis_twist_compensation's configuration

Add documentation for [axis_twist_compensation] module

Signed-off-by: Jeremy Tan <jeremytkw98@gmail.com>
2023-08-01 13:08:53 -04:00
Dmitry Butyugin
36be1cfc51
idex_modes: COPY and MIRROR mode implementation (#6297)
COPY and MIRROR mode implementation

Correctly apply input shaper params to new dual_carriage

Added SAVE_/RESTORE_IDEX_STATE commands

Documentation updates for the new IDEX modes

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-08-01 12:23:52 -04:00
Stefan Dej
ea330717cd screws_tilt_adjust: add max_deviation to report status
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-08-01 12:14:15 -04:00
JamesH1978
fee385dad8
docs: Update Config_checks.md (#6278)
I am endeavoring to rewrite some of the docs to be more front end agnostic to reflect the different front ends available since these docs were written. I am starting with this one, as it quite often used. 

Signed-off-by: James Hartley <james@hartleyns.com>
2023-07-30 14:26:20 -04:00
SkyKnight
e9534d6f92
webhooks: Add process id, user id and group id to the info endpoint. (#6284)
Signed-off-by: Gregoire Mbutilovich <skyknight_x@hotmail.com>
2023-07-28 12:48:14 -04:00
Martin Botka
ba4eed175d
rp2040_flash: Fix the type when printing num_blocks (#6279)
image->num_blocks is of type unsigned size_t thus unsigned int
or unsigned long int.

%lu specifies a type of long unsigned int. Thus resulting in compiler warning about type mismatch on some systems.
Fix this by printing the value with length modified z.

Signed-off-by: Martin Botka <martin.botka@somainline.org>
2023-07-27 20:34:32 -04:00
Zarrsito
d725dfd309
screws_tilt_adjust: Added Support for M6 Screws (#6287)
Added support for M6 Screws

Signed-off-by: Sascha Petersen <Zarrsito@gmail.com>
2023-07-16 22:30:37 -04:00
Maël Kerbiriou
7e93af2574 scripts: modernize logextract.py (with opens, generators)
Signed-off-by: Maël Kerbiriou <m431kerbiriou@gmail.com>
2023-07-16 22:27:34 -04:00
Maël Kerbiriou
fbc5589097 scripts: logextract.py Python 3 compatibility
- Open log files in text mode,
- Normalize the encoding of tmcuart messages,
- Fix a bug where StatsStream.get_lines() would return None timestamps for lines
before the first Stats line. Timestamps are now back-propagated.

Signed-off-by: Maël Kerbiriou <m431kerbiriou@gmail.com>
2023-07-16 22:27:34 -04:00
Dmitry Butyugin
73d017aa89 motan: Added smoothing motan data analyzer
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-07-16 19:49:23 -04:00
Dmitry Butyugin
5fc5d95ca5 motan: Added pointwise 2-norm motan data analyzer
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-07-16 19:49:23 -04:00
Alex Maclean
366b0de1c8 samc21: Fix CAN RAM base address
Signed-off-by: Alex Maclean <monkeh@monkeh.net>
2023-07-16 19:45:23 -04:00
JamesH1978
1c482581c3
config: Update Octopus Max EZ for wrong bltouch pins (#6283)
It has been discovered on the discord by the user Pizn that the blouch pins are swapped in this config and don't include the ^ pull on the sensor pin.

This has been tested and confirmed by the user.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-07-16 19:42:03 -04:00
Aleksandr 'Aux' Ivanov
ffb5105b55
config: Updated bed mesh configuration for Creality Ender 3 S1 and S1 Pro (#6219)
Existing `mesh_min` values start probing too far away from the edge.

Additionally `mesh_max` Y value of 197 is out of bed movement range (197 + `bltouch.y_offset` = 237.5) and causes Y stepper to overhit, which can potentially damage the printer in the long run.

Signed-off-by: Aleksandr Ivanov <aux@hexmode.org>
2023-07-09 22:21:27 -04:00
Bart Meijer
6d48adf9ef atsamd: Add support for SAMD21J18 (Minitronics v2)
Adds a menu entry in menuconfig, allowing you to select the SAMD21J18 as mcu.

Signed-off-by: Bart Meijer <brupje@gmail.com>
2023-07-05 15:18:54 -04:00
Dennis Kühn
a96608add4
spi_flash: New Board Definition for BTT SKRat V1.0 (#6249)
Adds the new BTT SKRat V1.0 controller board to the board_defs for the flash-sdcard.sh tool.
The new board definition was tested by me without any errors.

Signed-off-by: Dennis Kuehn <denniskuehn@online.de>
2023-06-29 11:42:07 -04:00
JamesH1978
e62929fe2f
config: Multiple config - change working for heater fan (#6274)
The reference to `my_nozzle_fan` in these configs could be confusing and misleading, leading users to think it is the parts/print cooling fan, changed to heatbreak_cooling_fan as used in other configs.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-06-28 19:53:58 -04:00
JamesH1978
f163a37f5e
docs: Update Config_Reference.md - heater_fan wording (#6273)
The reference to my_nozzle_fan is misleading and could cause people to skip over the [fan] definition and assume this is the parts/print cooling fan. Alias changed to reflect heatbreak_cooling_fan as used in most configs that have a controllable hotend fan.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-06-28 19:52:40 -04:00
Adam
f4a3dfa53f
docs: Update Measuring_Resonances.md (#6234)
Clarifying the ADXL345 on pi instructions. Previously, the instructions on installing the linux klipper instance were in a confusing place.

Signed-off-by: Adam Kramer <akramer@gmail.com>
2023-06-28 19:35:35 -04:00
Eric Callahan
b9247810b9 virtual_sdcard: reset file position and size to integer zero
This resolves an issue with API server clients that always
expect these values be be integers.

Signed-off-by: Eric Callahan <arksine.code@gmail.com>
2023-06-23 20:33:42 -04:00
Eric Callahan
d32a833455 bed_mesh: fix fade regression
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-06-21 21:17:17 -04:00
Boris-Chengbiao Zhou
1374c701ab hc32f460: Disable JTAG/SWD on pins so they can be used for GPIO/serial
This change is required to sucessfully use PA13/PA14 for UART. Otherwise
they function as SWDIO/SWCLK.

Relevant excerpt from the reference manual (translated):
The initial state of PA13, PA14, PA15, PB3, and PB4 ports is that the
JTAG/SWD function is valid after reset. When configuring FSEL[5:0] to
select the function, you need to write 0 to the corresponding bit of the
register PSPCR to invalidate the JTAG/SWD function.

Signed-off-by: Boris-Chengbiao Zhou <bobo1239@web.de>
2023-06-20 12:05:32 -04:00
Boris-Chengbiao Zhou
623ebf2fb1 hc32f460: Use correct USART for PH2/PB10 pins
This fixes serial communication when selecting the PH2/PB10 pins.

The chip datasheet (not reference manual) assigns pins to one of two
communication function groups (`Func_Grp1/2`). Pins in group 1 have
access to USART1/2 while group 2 has access to USART3/4. PH2/PB10 belong
to group 2 so we now correctly use USART3 for them.

Signed-off-by: Boris-Chengbiao Zhou <bobo1239@web.de>
2023-06-20 12:05:32 -04:00
Kevin O'Connor
2ae3dd2f78 docs: Improve documentation of i2c_software_scl_pin/i2c_software_sda_pin
Reported by @rootiest

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-20 12:00:59 -04:00
Eric Callahan
9a77d8859b docs: note rri deprecation in config_changes
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-06-20 11:48:17 -04:00
Eric Callahan
8fe18f27a9 docs: update Bed Mesh documentation
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-06-20 11:48:17 -04:00
Eric Callahan
1ad4c0fd6e bed_mesh: improve zero reference offset
The relative_reference_index will now refer to a coordinate that is
static and cannot be changed at runtime.  If new mesh parameters
are specifed and the reference lies outside of the mesh then the
reference location will be probed.

Additionally this introduces a 'zero_reference_position' option which
accepts a specific X/Y coordinate.  This may be used in place of the
relative_reference_index.

Signed-off-by: Eric Callahan <arksine.code@gmail.com>
2023-06-20 11:48:17 -04:00
Eric Callahan
775092fc01 bed_mesh: generate new points before each calibration
When mesh parameters change the substituted indices need to be
updated, even when using the default point set.   Always generate
new points to perform this update rather than cache
the "orig_points".

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-06-20 11:48:17 -04:00
Kevin O'Connor
0245073c55 serialhdl: Catch os.error on can.interface.Bus() call
It seems opening the canbus socket can sometimes throw an os.error (in
addition to can.CanError).  Catch that error to avoid Klipper
reporting an internal error.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-17 19:32:06 -04:00
JamesH1978
38e79dffb6
config: remove move_to_previous from Ender 3 S1 configs (#6245)
This PR is to remove `move_to_previous: true` from the ender 3 S1 and S1 plus configs. This is a confusing option, it is not really useful on these type of printers and can cause issue to the end user

Signed_off_by; James Hartley <james@hartleyns.com>
2023-06-16 17:32:13 -04:00
Luke V
9cb2656914
atsamd: Fixes for samc21 and compiler optimizations (#6198)
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2023-06-16 16:41:08 -04:00
Alex Voinea
5ee72d320c tmc: Configurable multistep_filt
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-06-16 16:38:42 -04:00
IronAegis90
6cbb6f144b
config: Update printer-creality-cr10-smart-pro-2022.cfg (#6253)
Clarified the necessary steps for successfully flashing the firmware to the MCU.

Signed-off-by: Doug Whitlock <doug@thewhitlock.family>
2023-06-16 16:35:12 -04:00
Kevin O'Connor
6ce2bd61cc test: Add stm32f042 regression build test
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-08 12:59:30 -04:00
Kevin O'Connor
15d302901f Kconfig: Support selecting optional features on chips with small flash size
Add a new HAVE_LIMITED_CODE_SIZE symbol that enables a menu to select
optional features.  This symbol is enabled on chips with small build
sizes.

Replace the HAVE_GPIO_BITBANGING with four new symbols:
WANT_GPIO_BITBANGING, WANT_DISPLAYS, WANT_SENSORS, WANT_SOFTWARE_SPI,
and WANT_SOFTWARE_I2C.  This allows users a little more flexibility
when selecting features they need.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-08 12:59:30 -04:00
BIGTREETECH
645a1b8364
i2c_software: Implementation of software i2c (#6141)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2023-06-07 20:55:46 -04:00
Steve Gotthardt
b389c70d5a
hc32f460: update for HC32F460 - clock, flash add, serial (#6235)
Add clock speed selection

Add Flash App Address selection

Add alternate serial connection and remove company specific names

Signed-off-by: Steven Gotthardt <gotthardt@gmail.com>
2023-06-06 22:13:04 -04:00
Jason W. Thompson
3bbae611f9 config: Correct year in documentation for ender 3 v2 neo
The header documentation currently shows the year the Creality Ender 3 V2 Neo as being the 2020 model. This is likely a copy/paste error from the header of the original Creality Ender 3 V2 config. The year the Creality Ender 3 V2 Neo came out was in 2022 as indicated by the name of this config file. This patch fixes the copy/paste typo by updating the year in the header documentation from 2020 to 2022.

Signed-off-by: Jason W. Thompson <jason@jasonthompson.dev>
2023-06-06 22:09:16 -04:00
Dmitry Butyugin
a3c00d0bed input_shaper: Correctly initialize input shaper stepper_kinematics
If the stepper already executed some steps with the basic
stepper_kinematics, subsequent creation of a new one for input_shaper
would result in stepcompress errors unless position and time tracking
flags are also copied over.

Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-06-06 20:17:49 -04:00
Dmitry Butyugin
e15bad4844 input_shaper: Fixed tracking of step_generation_scan_time
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-06-06 20:17:49 -04:00
Dmitry Butyugin
345934bd68 idex_modes: Native input shaping support with dual carriages
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-06-06 20:17:49 -04:00
Dmitry Butyugin
98ed0a8168 test: Regression test for hybrid corexy input shaping with dual carriage
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-06-06 20:17:49 -04:00
Kevin O'Connor
90e1477d72 docs: Fix link in Sponsors.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-05 22:14:51 -04:00
Kevin O'Connor
a919594b66 docs: Update Sponsors.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-06-05 19:24:22 -04:00
Eric Callahan
0539e9f266 bme280: use consistent report time for BME680
Sample the BME680 every .8 seconds, matching that of the
BME280.  This resolves an issue where `get_report_time_delta()`
returns a value that doesn't match the actual delta.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-05-31 13:43:07 -04:00
Kevin O'Connor
ddf0994ba2 parsecandump: New utility to parse Klipper messages in a candump capture
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-30 20:18:41 -04:00
Kevin O'Connor
14ff50c94d docs: Add new CANBUS_Troubleshooting.md document
Add information on troubleshooting canbus connections.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-30 20:16:28 -04:00
Kevin O'Connor
23bbbaa21b Kconfig: Change default CANbus frequency to 1000000
Change the default CANbus frequency from 500000 to 1000000.  A higher
frequency allows for greater data transfer rates, lower latency of
messages, and should overall be more robust.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-30 20:08:06 -04:00
Kevin O'Connor
81e4636f42 docs: Update CANBUS.md
Recommend USB to CAN adapter and no longer recommend using the
waveshare rpi hat.

Recommend using allow-hotplug for all USB adapters.

Note bandwidth limitations when using USB to CAN bridge mode.

Note that a USB to CAN mcu is not a USB serial device.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-30 20:06:59 -04:00
Kevin O'Connor
5f0d252b40 docs: Minor update to Config_Changes.md dates
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-25 12:53:06 -04:00
Dmitry Butyugin
624d360a34 resonance_tester: Apply input shaper params on SHAPER_CALIBRATE
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-05-25 12:52:29 -04:00
Dmitry Butyugin
16c53992d6 resonance_tester: Support CHIPS= parameter in SHAPER_CALIBRATE command
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-05-25 12:48:17 -04:00
Frans-Willem Hardijzer
ec61f10f0f
hybrid_corexy: Fix changing dual-carriage carriage will inadvertently set axis to homed, even if it wasn't. (#6183)
In hybrid_corexy and hybrid_corexz, the update_limits function is (only) called by the DualCarriage implementation, whenever the carriage changes.
Unfortunately, these limits also keep track of homing status, when they're unhomed they are set to 1 to -1 (invalid range).
As a fix, if the limit was set to "unhomed", we keep it that way, and only update it with the new rail limits if it was already properly homed before.

Signed-off-by: Frans-willem Hardijzer <fw@hardijzer.nl>
2023-05-25 11:55:07 -04:00
Stefan Dej
37315bf336 stm32: add PB5/PB6 as CAN pins - required for BTT U2C v2.x
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-05-20 11:31:28 -04:00
Chris
7511151ac9
docs: Add gcode_button to the Status Reference docs (#6201)
Add gcode_button to the Status Reference docs

Signed-off-by: Chris Laprade <chris@rootiest.com>
2023-05-14 10:19:42 -04:00
xpeng
2471918f08
config: Change the position_max value of Kobra Go to the physic limit (#6200)
Fixed the bed_mesh out of range issue

Signed-off-by: Yipeng Zhou <yipeng_zhou@foxmail.com>
2023-05-14 10:18:07 -04:00
Frederic Morin
33b18fd62b stm32f7: add support for stm32f7 and remram board
Signed-off-by: Frederic Morin <frederic.morin.8@gmail.com>
2023-05-07 11:15:05 -04:00
Eric Callahan
a3eebab4f2 util: report git version info as a dict
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-05-04 14:07:14 -04:00
Eric Callahan
b89a049fdb klippy: report repo branch, remote, and tracking url
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-05-04 14:07:14 -04:00
Kevin O'Connor
3bd0be40d5 lib: Update to latest can2040 code
Disable tx state machine before resetting it
Check for rx message with same id as tx but different payload
Do not use canrx line to alter bit timing of cantx line
Improve bit time synchronization with slow transmitters
Implement tx synchronization to faster transmitters

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-03 10:45:41 -04:00
Kevin O'Connor
1a24e7c5b6 klippy: Report repo version as "dirty" if there are untracked python files
Check for untracked files in the klippy/extras/ and klippy/kinematics/
directories and report those files in the log.  This helps identify
code modifications when inspecting a log.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-05-02 11:40:18 -04:00
Wulfsta
3b0729c949 atsamd: Add support for SAMC21
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2023-05-01 13:56:32 -04:00
Wulfsta
06e5c577bd lib: Add Atmel SAM C21 headers
Signed-off-by: Luke Vuksta <wulfstawulfsta@gmail.com>
2023-05-01 13:56:32 -04:00
Thomas Lété
6414e1772d
config : Longer LK4 X (#6185)
New printer : Longer LK4X configuration

This configuration is based on the one provided by Longer with some tweaks.

Signed-off-by: Thomas Lété <bistory@gmail.com>
2023-05-01 13:30:32 -04:00
Kevin O'Connor
1987742545 lib: Update to latest can2040 code
Fix tx hang after error frame during tx

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-29 11:49:53 -04:00
Kevin O'Connor
bec1d957d2 rp2040: Handle USB resets
On a USB bus reset the controller address needs to be reset to zero.
Otherwise, the device becomes unresponsive after a USB reset and will
remain unresponsive until a power cycle.  This often shows up in the
Linux system logs as "device descriptor read/64, error -32" messages.

Make sure USB_INTE_BUS_RESET_BITS is enabled and clear the USB address
on a bus reset.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-25 00:05:04 -04:00
Kevin O'Connor
b17ae55f5b usb_canbus: Rework USB message transmit prioritization
There is no need to heavily prioritize the sending of canbus packets
over USB.  A single check to flush the incoming canbus packets is
sufficient.

Also, be sure to wake up canserial_notify_tx() even if canhw_send()
blocks.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-24 11:31:06 -04:00
Kevin O'Connor
28f11244c3 usb_canbus: No need to check if canserial can accept a packet
The canserial code already advertizes a receive window, so the host
should never flood the canserial code.  Remove the extra scheduling
checks to simplify the usb_canbus code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-24 11:31:06 -04:00
Kevin O'Connor
3377f29bc5 usb_canbus: Minor code reformatting of drain_hw_queue()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-24 11:31:06 -04:00
Kevin O'Connor
f10c60eea7 usb_canbus: Increase rx canbus packet buffer to 32
A buffer of only 8 canbus packets is only 64 bytes of data, which
could be exceeded if the usb-to-canbus mcu gets busy doing other work.
Increase the buffer to 32 packets.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-24 11:31:06 -04:00
Kevin O'Connor
8b2074e068 stm32: Fix usbotg irq wakeup notification
The DAINTMSK prevents irqs but does not prevent the status reporting
in the GINTSTS and DAINT fields.  Thus, the mask bits should be
checked prior to sending a wakeup notification.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-24 11:29:43 -04:00
Scott Mudge
10e816979e aht10: update comments and docs for AHT20/AHT21 support
The control bytes for the AHT20 and AHT21 are identical to the AHT10, but I had not been able to test just yet to ensure the sensor code supported the other sensors. I've wrapped up testing and updated the comments/docs to reflect this additional support.

Signed-off-by: Scott Mudge <mail@scottmudge.com>
2023-04-24 11:10:00 -04:00
crazyroses
5a49372dec
docs: Update Measuring_Resonances.md (#6177)
Correction for table "Recommended connection scheme for I2C (i2c0a) on the RP2040",  line 160, to match the correct writing in the Fritzing image shown above, RP2040 pin 36 in place of 39;
Correction of typo in line 346, "pins" in place of "pin"

Signed-off-by: Adrian Rose <adrian@crazyroses.net>
2023-04-24 11:07:10 -04:00
jdonagher
9b59d745f1
docs: Update Bed_Mesh.md (#6143)
Fix typo.

Signed-off-by: John Donagher <jdonagher@gmail.com>
2023-04-24 11:00:50 -04:00
Dr. Matthew Swabey
011b4e39e6
docs: Fix nested list in Measuring_Resonances (#6157)
Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-04-19 22:00:03 -04:00
Dr. Matthew Swabey
80a7744b42
sensor_mpu9250: Fix or improve reliability (#6170)
Fixes common MPU-9250 accelerometer issues for RPi Linux MCU and
improves reliability on all other architectures by adjusting the MPU-*
reading algorithm to only read whole Klipper messages' worth of
data from MPU-* and eliminating many unnecessary checks of the MPU FIFO
fill-level that consumed bus bandwidth needed for data transfer. Fixes
intermittent "Lost communication with MCU 'rpi'" due to "Timer too
close" and transposed / corrupted data due to FIFO overrun/data loss
when using MPU-* accelerometers. In addition FIFO overrun checks are
performed by testing the MPU interrupt flag vs. inferring from the FIFO
fill level.

Stress tested for 13hrs with two MPU-6500 attached to one I2C bus on RPi
    and one on a PR2040
Stress tested for 23hrs with two MPU-6500 attached to one I2C bus on RPi
    and one on a ATmega328P (Seeduino Nano)

Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-04-19 12:34:22 -04:00
Justin Schuh
c2fe372925 gcode_macro: Catch variable encoding errors
Catch parsing and json encoding errors at variable assignment.

Signed-off-by: Justin Schuh <code@justinschuh.com>
2023-04-19 12:22:20 -04:00
Justin Schuh
d68a6c28ba webhooks: Log json encoding errors
Signed-off-by: Justin Schuh <code@justinschuh.com>
2023-04-19 12:22:20 -04:00
Florin Popescu
40b4b34998
stm32: Support for USART5 on STM32G0B1 (#6105)
Support for USART5 on PD2,3

Add exception on RCC bits for USART5&6

Signed-off-by: Florin Popescu <florinsgpopescu@gmail.com>
2023-04-19 11:47:18 -04:00
xpeng
cba119db3a
config: Add printer configuration for Anycubic Kobra Go (#6166)
Signed-off-by: Yipeng Zhou <yipeng_zhou@foxmail.com>
2023-04-15 22:24:02 -04:00
Scott Mudge
4748dffd7a
docs: Add AHT10 temperature sensor doc section in Config_Reference.md (followup #6138) (#6167)
Followed general outline used by HTU21D and BME280.

Signed-off-by: Scott Mudge <mail@scottmudge.com>
2023-04-15 19:17:54 -04:00
Nathan
a8b1b0ef05
docs: Fix duplicate section in Measuring_Resonaces.md (#6160)
Removed a duplicated section in Measuring_Resonances.md.
Also fixed its header level.

Signed-off-by: Nathan Chiu <nhchiu2009@gmail.com>
2023-04-11 11:48:20 -04:00
vcore85
c2b2278a49
tmc5160: add DRV_CONF Register for TMC5160 (#6154)
In some condition ,“drvstrength 2” does not work. According to page 17, some mosfets need “drvstrength” set to 0 .

From datasheet rev1.15, the DRVSTRENGTH reset default is 0 .  (instead of 2)

Signed-off-by: Albert Lin <vcore85@gmail.com>
2023-04-11 11:43:19 -04:00
flowerysong
d16adc356b
docs: Add missing code block indicators to Slicers.md(#6161)
Signed-off-by: Paul Arthur <paul.arthur@flowerysong.com>
2023-04-11 11:39:41 -04:00
Kevin O'Connor
aa8a6f4cf1 lib: Update to latest can2040 code
Avoid some gcc warnings by using uint32_t for iterators
Better document the fallthough case statement in crc_bytes()
Fix txpending race from report_line_ackdone()
Make can2040_transmit() multi-cpu atomic

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-11 11:20:57 -04:00
Kevin O'Connor
83308a1051 tmc: Support reporting tmc2240 temperature in driver get_status()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-07 15:20:40 -04:00
Kevin O'Connor
22ee889f41 serialqueue: Rename stalled_bytes stat to upcoming_bytes
The stalled_bytes counter refers to the number of bytes that are not
yet eligible for transmission.  However, the naming leads to confusion
as it could be interpretted as an inability to transmit data.  Rename
to upcoming_bytes to try to avoid that confusion.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-07 15:17:43 -04:00
Scott Mudge
acca55b074
aht10: Added support for AHT10 ambient temperature sensor (#6138)
This commit adds support for the I2C-based AHT10 ambient temperature sensor. The sensor comes pre-calibrated and has a fairly simple command interface, so the interface class is in-turn relatively simple. So far this has been tested on a BTT GTR 1.0 MCU board (STM32F4), and seems to work fine.

Signed-off-by: Scott Mudge <mail@scottmudge.com>
2023-04-07 13:41:06 -04:00
JamesH1978
754a67af4e
config: SKR3, update for second chip choice (#6153)
As found on the discord by user Qtin, this board now ships with one of STM32H743 or STM32H723
Example config updated to reflect this. This has been tested on the users board. To note, the H743
bin will flash to the H723 chip, but will not work.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-04-07 13:05:55 -04:00
visilya
8850084fcf
scripts: Fix flash linux when OUT argument provided (#6133)
Signed-off-by: Ilya Vislotsky <write2ilya@gmail.com>
2023-04-07 12:32:23 -04:00
Kevin O'Connor
e5ed245ff2 stm32: Improve ifdef indent in hard_pwm.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-07 12:27:09 -04:00
Kevin O'Connor
ecc23fc6fa stm32: Prefer "MACH_STM32F1" test over "MACH_STM32F103 || MACH_N32G45x"
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-07 12:25:27 -04:00
Kevin O'Connor
ef34c5bb5d config: Update comment header in printer-voxelab-aquila-2021.cfg
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-04-07 12:21:22 -04:00
Alexey
23e82d37f1
stm32: Add support for Nation N32G45x mcus (#6116)
N32G452/G455 are mostly compatible with STM32F103 but have M4 core and different ADC.

Signed-off-by: Alexey Golyshin <stas2z@gmail.com>
2023-04-07 12:20:14 -04:00
Dr. Matthew Swabey
27dab0ee51
docs: Measuring_Resonances.md improved information on I2C accelerometers and AVR support (#6132)
More information on I2C accelerometers.

Added in table of MCUs with 400kbit/s I2C support

Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-04-07 11:45:54 -04:00
Alex Voinea
fec7ddd8ae
docs: Fix typo in docs (#6147)
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-30 12:30:48 -04:00
Alex Voinea
c9731a6fe2 tmc: DUMP_TMC optional REGISTER parameter
Add an optional REGISTER parameter to DUMP_TMC so that the output is more filtered/cleaner for manual TMC calibration.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-30 11:41:51 -04:00
Kevin O'Connor
36e0afea2d config: Fix motor4 comment in manta m8p configs
Reported by @jakep82.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-03-29 14:19:26 -04:00
spinixguy
9fe3152e23
config: Add config printer-sovol-sv05-2022.cfg (#6122)
Adding Sovol SV06 printer config

Signed-off-by: Joseph Spainhour <spinixguy@gmail.com>
2023-03-29 09:55:02 -04:00
bbro44
d8a9ab5ef7
config: Add Ratrig V-Minion (#6120)
This adds support for the stock configuration of the V-Minion printer from Ratrig, based on the Octopus v1.1 (STM32F446)

Signed-off-by: Benjamin Lesher <bbro44@protonmail.com>
2023-03-29 09:53:54 -04:00
Dr. Matthew Swabey
4026365270
linux: Lock Memory and Increase Priority (#6131)
Realtime programming best practice is to lock realtime code
memory to prevent paging which will lead to unbounded latencies. The
Linux MCU process has well bounded memory and small RAM footprint
so locking the entire process' RAM has no downsides and will improve
behavior when the system comes under memory pressure.
(See bootlin training and Linux Foundation documentation linked below.)
RT process priority ranges from 0-99 (although POSIX only requires 32),
boost MCU process priority to half the max/2 to improve robustness when
the system comes under pressure from other RT Kernel or user processes.

Reference links:
bootlin: https://bootlin.com/doc/training/preempt-rt/preempt-rt-slides.pdf
Linux Foundation: https://wiki.linuxfoundation.org/realtime/documentation/howto/applications/application_base#howto_build_a_simple_rt_application

Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-03-27 21:34:24 -04:00
BIGTREETECH
d518152ab2
stm32: Enable I2C on stm32h7 (#6130)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2023-03-27 21:32:42 -04:00
BIGTREETECH
346e3901f6
tmc: Enable sg_angle_offset for smooth switching from Stealthchop to Spreadcycle (#6123)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2023-03-27 21:18:06 -04:00
Jess
1a2033aba8
scripts: add install script for Ubuntu 22.04 Jammy (#6112)
python-dev package is not  available on Jammy; specifies python3-dev.

Signed-off-by: Jess Sullivan <jess@sulliwood.org>
2023-03-27 21:09:46 -04:00
Chris Thompson
e93f39444c
docs: Document how to connect ADXL345 to Pico then on to Pi. (#5996)
This is based on documentation from:
https://klipper.discourse.group/t/raspberry-pi-pico-adxl345-portable-resonance-measurement/1757

Signed-off-by: Christopher Thompson <chris@hypocrite.org>
2023-03-27 20:38:26 -04:00
Kevin O'Connor
16f54c8200 stale-issue-bot: Update github lock-threads action to v4
Update to latest version in hopes it will reduce failure reports.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-03-27 20:22:44 -04:00
Robert
52f4e20c26
config: Update printer-anycubic-vyper-2021.cfg (#6113)
Having the controller fan PA14 in the config is important for the stepper drivers not to overheat and skip steps.

Signed-off-by: Robert Lilienthal <13837429+RobLil@users.noreply.github.com>
2023-03-21 15:12:58 -04:00
Dr. Matthew Swabey
2466b7a2c6
avr: Allow I2C bus speed to be set by Klipper (#6111)
Allow I2C bus speed to be set by appropriate Klipper commands.

Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-03-21 15:02:58 -04:00
bbro44
e2d7c59812
config: Add Fysetc Cheetah V2.0 (#6119)
This adds support for the Cheetah v2.0 mainboard from Fysetc.

Signed-off-by: Benjamin Lesher <bbro44@protonmail.com>
2023-03-20 11:06:44 -04:00
Alex Voinea
73f4c6cd00 tmc: SET_TMC_FIELD VELOCITY
Ability to specify `VELOCITY` as a parameter for SET_TMC_FIELD. Useful for configuring at runtime the TSTEP based fields of the driver.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-20 10:58:25 -04:00
Alex Voinea
0469710a69 tmc: Implement TMCtstepHelper
Implement a helper for calculating velocity based thresholds for tmc drivers. This code was written in such a way that it can be used with more fields than just tpwmthrs.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-20 10:58:25 -04:00
Kevin O'Connor
c54d83c9f1 tmc: Initialize self.coolthrs in TMCVirtualPinHelper constructor
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-03-15 16:46:35 -04:00
Alex Voinea
a9feeaa9eb tmc: Do not override tcoolthrs if it is configured
If tcoolthrs is configured (not the default 0), then do not force
the value of tcoolthrs=0xfffff during homing. This way, tcoolthrs
can be set to a custom value during homing.

`tpwmthrs` and `en_pwm_mode`/`en_spreadcycle` are now also
correctly restored if they were changed after startup.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-15 16:45:36 -04:00
Kevin O'Connor
fd167894a0 docs: Update reviewers in CONTRIBUTING.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-03-15 14:55:51 -04:00
Alex Voinea
dd39091388 tmc: Enable multistep_filt for drivers that support it
`multistep_filt` was not configured at all on tmc2240 and tmc5160. As such, it would default to the value of 0 when the GCONF field was sent to the driver. However, that field has a default value of 1 in the driver, so klipper was overriding the defaults by accident.
This field improves the stability of velocity based thresholds (it's effectively TSTEP filtering) and it also improves the current regulation stability in stealthchop2 (according to the datasheet).
This field was already set to 1 correctly in the tmc2208/tmc2209 driver code.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-15 11:09:10 -04:00
Alex Voinea
117c1d42ac tmc2209: Remove duplicate pdn_disable initialization
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-15 11:06:24 -04:00
D4SK
0d5b96a601 reactor: Fix typo
Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net>
2023-03-14 22:08:13 -04:00
D4SK
136283bd14 reactor: Fix typo
Signed-off-by: Konstantin Vogel <konstantin.vogel@gmx.net>
2023-03-14 22:08:13 -04:00
Maurice Breit
45dd30c820 docs: Remove comment about default profile loading
Remove outdated comment that the "default" profile is loaded automatically when klipper starts

Signed-off-by: Maurice Breit <github@mauricebreit.de>
2023-03-14 21:12:36 -04:00
Pedro Lamas
87f109984a probe: expose name on status report
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-03-14 21:11:33 -04:00
JamesH1978
2337d05f48
docs: addition of slicer specific gcode for START_PRINT (#6063)
Signed-off-by: James Hartley <james@hartleyns.com>
2023-03-14 21:09:00 -04:00
Sam
187173cbb5
config: Add Ender 3 v2 Neo base config (#6103)
Add the default base config for the Ender 3 v2 Neo (as released 2022).
This config also works with the newer D32F303 based 4.2.2 boards.

Signed-off-by: Sam McLeod <sammcj@users.noreply.github.com>
2023-03-14 21:05:08 -04:00
Dr. Matthew Swabey
9d77f44995
linux: Fast Linux MCU i2c_read() with I2C_RDRW (#6101)
Reading an I2C device from the Linux MCU used a separate write(2)
to select the target register & read(2) to get the value(s). This
implementation uses ioctl(file, I2C_RDWR, ...) to skip a large bus idle
period and extra process sleep by combining them like the stm32.

I2C_RDRW requires I2C_FUNC_I2C flag in the I2C driver. I2C_FUNC_I2C
is defined in:

BCM2835: Pi 1 Models A, A+, B, B+, the Raspberry Pi Zero, the
    Raspberry Pi Zero W, and the Raspberry Pi Compute Module 1
BCM2836: Pi 2 Model B
    Identical to BCM2835 except Cortex
BCM2837: Pi 3 Model B, later models of the Raspberry Pi 2 Model B,
    and the Raspberry Pi Compute Module 3
BCM2837B0: Pi 3 Models A+, B+, and the Raspberry Pi Compute Module 3+
BCM2711: Pi 4 Model B, the Raspberry Pi 400, and the Raspberry Pi
    Compute Module 4
RK3xxx: Rockchips SoCs NanoPi, RockPi, Tinker, etc.
SUNXI: H2, H3, etc. Orange Pi
AMLOGIC: S905x, Banana Pi, Odroid, etc.
TEGRA: NVidia Jetson etc.
MediaTek: Several SBCs in other ranges

Signed-off-by: Matthew Swabey <matthew@swabey.org>
2023-03-14 21:03:07 -04:00
Lasse Dalegaard
ca6e5fe514 probe: Allow overriding horizontal_move_z on gcode
Signed-off-by: Lasse Dalegaard <dalegaard@gmail.com>
2023-03-14 21:01:40 -04:00
Derek Kaser
5a69d0f857
config: Add Anycubic Kobra Plus (#6084)
Signed-off-by: Derek Kaser <derek.kaser@gmail.com>
2023-03-14 20:58:42 -04:00
Koz Ross
e3485fc31b
config: Add printer-elegoo-neptune3-pro configuration (#5965)
Adds a configuration for the Elegoo Neptune 3 Pro.

Signed-off-by: Koz Ross <koz.ross@retro-freedom.nz>
2023-03-14 20:56:45 -04:00
Brandon Baker
57c4da5ecf
config: Example config file for Creality CR5 Pro HT (#6089)
Signed-off-by: Brandon Baker <bakerbrandond@gmail.com>
2023-03-11 11:30:35 -05:00
Alex Voinea
4b1536d62f tmc: Beautify initialization code
Purely esthetic. Make all tmc driver init code similar to one another. The various fields were grouped based on the register which they affect or the function they perform.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-07 10:57:01 -05:00
Alex Voinea
bee1c67416 tmc5160: allow changing the globalscaler at runtime
Previously, the globalscaler was calculated during the config parsing and set to a fixed value. If the current was changed for any reason after the initialization, only IRUN and IHOLD would be changed. This however caused issues:
- If the new current was lower, then the resolution of the possible current values would be low since there are only 32 IRUN/IHOLD steps.
- If the new current was higher, it wouldn't actually work since IRUN and IHOLD are capped at 31, so it wouldn't be possible to increase the current without increasing globalscaler.

With this commit, the globalscaler is recalculated whenever necessary in order to ensure the correct range of IRUN/IHOLD is used.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-07 10:55:44 -05:00
Alex Voinea
e6307ca9fe tmc: Fix s2vs field formatters
Rename the field formatter text for tmc2208/tmc2209 and implement it also for tmc5160.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-03-07 10:52:52 -05:00
BIGTREETECH
b2178f49ec
stm32h7: Restore the RCC set in the bootloader to the default value (#6092)
Signed-off-by: Alan.Ma from BigTreeTech <tech@biqu3d.com>
2023-03-06 11:53:18 -05:00
Alex Voinea
6b75f54e50 tmc2240: initial implementation
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-03-01 20:43:53 -05:00
dahliamoth
e6ef48cdf7
config: Update printer-sunlu-t3-2022.cfg (#6040)
Fix filament sensor and remove unneeded config changes in extruder

The filament sensor on the printer used for initial testing had been removed prior to flashing klipper to it. Only a basic test to see it if triggered or not was preformed. It was discovered by someone else doing some testing on another printer that it would frequently pause. This was a simple oversight, assuming it was a runout switch.

Removed section of config related to filament runout switch and replaced with basic config for filament motion so they printer will simply pause when no more motion is detected. Also notated to add CLEAR_PAUSE to start gcode if using this sensor as it will trigger a paused state when loading or unloading filament. If printer is in a paused state at the start of the print, the attempt to pause will cause the printer to rapidly pause and unpause itself.

Removed min_extruder_temp and max_extrude_only_distance from the extruder section, as they were there only for macros on a test system that is not put into this sample config

Signed-off-by: Zachary Welvaert <zwelvaert@gmail.com>
2023-02-28 12:41:02 -05:00
Apulo
a5fb20765e
config: Update and rename generic-th3d-ezboard-lite-v2.0.cfg to generic-th3d-… (#6070)
The actual board name is EZBoard V2 without the lite. Renaming the file and correcting the intro text to reflect the actual board name.

Signed-off-by: Anthony Dellett <anthony.dellett@gmail.com>
2023-02-23 11:46:21 -05:00
JamesH1978
761b350c80
scripts: Update flash-linux.sh to restart new systemd service (#6049)
This is an update to the script that looks for the new systemd service and restarts it if appropriate.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-02-23 11:44:58 -05:00
Dmitry Butyugin
0a9a0eac3d scripts: Fixed potential undefined var error in graph_accelerometer.py
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-02-23 11:40:00 -05:00
Dmitry Butyugin
14bf9f8ba8 scripts: Support multiple inputs in graph_accelerometer.py raw mode
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-02-23 11:40:00 -05:00
Dmitry Butyugin
ea65670239 scripts: Support resonances files in graph_accelerometer.py
Signed-off-by: Dmitry Butyugin <dmbutyugin@google.com>
2023-02-23 11:40:00 -05:00
Kevin O'Connor
d881171739 mcu: Move lookup_command_tag() to CommandWrapper class
Use mcu.lookup_command().get_command_tag() instead of
mcu.lookup_command_tag().  This improves error reporting on a protocol
mismatch.  It also enables support for a msgtag that is negative.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-22 11:34:36 -05:00
Kevin O'Connor
69dcda1696 mcu: Code movement in mcu.py
This is code movement and comment updates only - no code changes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-22 11:34:31 -05:00
Thijs Triemstra
0a645e4916
docs: use correct mpu9250 i2c_bus (#6064)
Signed-off-by: Thijs Triemstra <info@collab.nl>
2023-02-20 20:19:04 -05:00
Elias Bakken
b7978d37b3
ar100: Support for ar100 (#6054)
Add files to support AR100

Signed-off-by: Elias Bakken <elias@iagent.no>
2023-02-20 20:15:01 -05:00
H. Gregor Molter
d7bd7f1f4b stm32: Add sdio support
Adds sdio support for the stm32f4 to allow for SD card flash updates
without power cycling some boards, e.g. BTT Octopus Pro.

Signed-off-by: H. Gregor Molter <gregor.molter@secretlab.de>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-20 19:55:25 -05:00
Thijs Triemstra
848a78d1a5
docs: Fix typos (#6032)
Signed-off-by: Thijs Triemstra <info@collab.nl>
2023-02-20 11:06:25 -05:00
spinixguy
aca0c71a2b
config: Add printer sovol sv06 config file (#6056)
Signed-off-by: Joseph Spainhour <spinixguy@gmail.com>
2023-02-14 13:26:10 -05:00
JamesH1978
738ddaf362
scripts: update_chitu.py python env version (#6055)
Change script to use Python 3 instead of Python 2, in line with changes to update_mks_robin.py

Signed-off-by: James Hartley <james@hartleyns.com>
2023-02-13 12:28:50 -05:00
Pedro Lamas
4b5d056421 stepper_enable: report status
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-02-13 12:16:17 -05:00
Steven Gotthardt
72b6bd7efa hc32f460: Add support for hc32f460 micro-controllers
Signed-off-by: Steven Gotthardt <gotthardt@gmail.com>
2023-02-13 12:12:27 -05:00
Steven Gotthardt
94cbf5ff48 lib: Add hc32f460 definitions
Signed-off-by: Steven Gotthardt <gotthardt@gmail.com>
2023-02-13 12:12:27 -05:00
Jordan Woyak
1e7057e917
configfile: Make getlists return an empty list on empty string. (#6042)
Signed-off-by: Jordan Woyak <jordan.woyak@gmail.com>
2023-02-09 21:41:09 -05:00
Kevin O'Connor
df1137ef75 workflows: Convert to Ubuntu 20.04 for build test
This also updates to the latest version of pru-gcc.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-09 20:57:53 -05:00
Kevin O'Connor
5ffe5d6349 klippy-requirements: Update to greenlet v2.0.2
Improves compatibility with Python v3.11.  Reported by @flaviut.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-09 18:01:04 -05:00
Pedro Lamas
da8d4b0231 extruder: store currently sync'ed motion queue name
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-02-09 16:51:47 -05:00
JamesH1978
17f7c03921
scripts: update_mks_robin.py python env version (#6043)
The recent PR to change this to say `#!/usr/bin/env python` instead of `#!/usr/bin/env python2` can cause issues on non rpi based OS's where `python` is not mapped to `python3`.

`#!/usr/bin/env python3` should work in both situations.

Signed-off-by: James Hartley <james@hartleyns.com>
2023-02-09 11:44:30 -05:00
Bassam Husain
ae9169c4c3
docs: Fix 'screw_thread' explanation in 'screws_tilt_adjust' section. (#6039)
Signed-off-by: Bassam Husain <bassam.husain@gmail.com>
2023-02-09 11:30:41 -05:00
Bassam Husain
5644481590
docs: Fixed wording in 'Bed_Mesh.md', fade_target section. (#6025)
Signed-off-by: Bassam Husain <bassam.husain@gmail.com>
2023-02-03 18:52:55 -05:00
CODeRUS
791ad6162a
extruder: Add extruder name to extruder_stepper respond message (#6020)
Signed-off-by: Andrei Kozhevnikov <coderusinbox@gmail.com>
2023-02-03 18:50:56 -05:00
Pedro Lamas
fa78e6b8fb screws_tilt_adjust: status result as dictionary
Signed-off-by: Pedro Lamas <pedrolamas@gmail.com>
2023-02-03 18:16:19 -05:00
Kevin O'Connor
d479366242 config: Avoid spaces between mcu name and pin name
Prefer "option: mcu:pin" instead of "option: mcu: pin".

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-03 15:50:17 -05:00
bigtreetech
f250bdfd8a config: Add BigTreeTech EBB V1.2 / EBB SB V1.0 / E3EZ / M5P / M8P V1.1 / Octopus Max EZ
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-03 15:20:20 -05:00
bigtreetech
1979c9d090 stm32: add PB12/PB13 FDCAN2 support STM32G0B1
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-02-03 15:12:09 -05:00
JamesH1978
13fd2833ce
config: Add config for Kingroon KP3S (#6021)
A config that describes a Kingroon KP3S with the STM32F103 Robin Mini/Nano clone

Signed-off-by: James Hartley <james@hartleyns.com>
2023-02-03 10:47:58 -05:00
Artem
4cd5e9d222
config: Update printer-creality-ender2pro-2021.cfg (#6023)
Update pins for serial

Signed-off-by: Artem Kochegizov <metra52@ya.ru>
2023-02-02 11:17:49 -05:00
Eric Callahan
e3253cb79e docs: note change to bed_mesh profile behavior
Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-02-01 11:07:16 -05:00
Eric Callahan
4df1adeb2e bed_mesh: do not load a profile on startup
Some users may not desire this behavior and others
may wish to initialize to a profile not named default.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
2023-02-01 11:07:16 -05:00
Spookee
ead81fbf74
config: Example config file for Lulzbot Mini 2 (#5976)
Config file contains pin mappings to suit Lulzbot Mini 2 using Lulzbot SingleExtruder(0.5mm) and Lulzbot flexible magnetic bed.
Mini 2 uses Einsy Retro mainboard.

Signed-off-by: Trent Sheather <trent.sheather@gmail.com>
2023-01-30 21:47:05 -05:00
dahliamoth
6273d7e05d
config: Added printer config for SUNLU T3 (#6004)
Signed-off-by: Zachary Welvaert <zwelvaert@gmail.com>
2023-01-30 10:46:51 -05:00
Evan Cowden
0407c24c78
config: Duet3-6HC & -6XD Configs (#6006)
Signed-off-by: Evan Cowden <evan38109@gmail.com>
2023-01-25 15:28:53 -05:00
Kevin O'Connor
6026a99ad8 replicape: Only call note_pwm_enable() in main thread
The pca9685_pwm set_pwm() code can be called from a background thread
(when the pin controls a heater).  Propagate updates to the main
thread for enable tracking.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:39:47 -05:00
Kevin O'Connor
1a693c18d6 stm32: Fix CAN2 handling in can.c
Using the CAN2 interface still requires that CAN1 be enabled, and the
filtering hardware is always on the CAN1 hardware block.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:32:37 -05:00
3D Print PT
3935f78543
scripts: Update update_mks_robin.py for Python3 (#5985)
Signed-off-by: Márcio Pereira <3dprintpt@gmail.com>
2023-01-17 18:31:31 -05:00
Kevin O'Connor
80943d3846 stm32: Increase sample time in stm32h7_adc.c
The existing sample times are not long enough to reliably sample the
internal temperature sensor.  Longer sample times should also improve
results with temperature sensors that have a higher inductance.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
33f973e452 stm32: Don't set boost nor linear calibration on stm32h723 adc3
Only adc1 and adc2 have these CR register bits on stm32h723.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
cefbad9ef4 stm32: Reduce read-modify-write of CR in stm32h7_adc.c init
Prefer explicitly setting the CR hardware register to defined values
during initialization.

Also, prefer "#if CONFIG_MACH_STM32H7" over bit definitions to make it
clear that the code applies only on stm32h7.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
d372f913ef stm32: Don't use read-modify-write on ISR register in stm32h7_adc.c
Bits are cleared in the ISR register by writing 1, not by masking.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
51526fd627 stm32: ADC timing rework and fixes in stm32h7_adc.c
The stm32l412 doesn't have a PLLSAI1 clock and therefore the CKMODE
should not be set to zero.

The stm32h7 chips run the adc at 25mhz, so BOOST should be set to
0b10.

Improve timing comments.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
cef0b70c88 stm32: Move clock line mapping from stm32h7_adc.c to lookup_clock_line()
Use the common lookup_clock_line() code to lookup the adc clock lines.
This also enables resets on the adc1/adc2 hardware block.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
1034f19134 stm32: Simplify setting of adc_common fields in stm32h7_adc.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
0bf073ba08 stm32: Use a consistent bank size of 20 across all chips in stm32h7_adc.c
Add a pad entry to adc_pins[] on stm32l4 so that it matches the other
chips.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
f571618376 stm32: Simplify setting of 12bit mode on stm32h7 in stm32h7_adc.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
876c3ffffd stm32: No need to use hardware oversampling in stm32h7_adc.c
Not all chips implement hardware oversampling.  The software already
implements oversampling, and additional hardware oversampling is
unlikely to improve results.  Remove the hardware oversampling to
simplify the code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
efdc29f589 stm32: Simplify CFGR register setup in stm32h7_adc.c
On all chips, the JQDIS bit is set and the CONT, RES, ALIGN bits are
clear after a reset.  There is no need to program the OVRMOD bit.  Use
the same logic across chips to help unify the adc implementation.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Kevin O'Connor
9b7dcfa333 stm32: No need for LDORDY check in stm32h7_adc.c
Not all chips have the LDORDY flag, while all chips will stabilize in
10us.  There is no need for two different implementations as it is
safe to wait 20us on all chips.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:22:21 -05:00
Stefan Dej
e631840ad6 scripts: add systemd klipper-mcu.service example
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-01-17 18:17:25 -05:00
Stefan Dej
deed7f829a docs: update RPi_microcontroller.md to systemd
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-01-17 18:17:25 -05:00
Stefan Dej
cf25c3907c scripts: remove initd klipper-mcu-start.sh
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-01-17 18:17:25 -05:00
Stefan Dej
5502be01f7 linux: add -I attribute for user defined socket paths
Signed-off-by: Stefan Dej <meteyou@gmail.com>
2023-01-17 18:17:25 -05:00
Kevin O'Connor
86acee6e8b z_tilt: Improve python3 compatibility
Sort using comparison on only first item in list to avoid greater/less
than comparison of stepper objects (which causes an error on Python3).

Reported by discourse user salbang.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-17 18:11:57 -05:00
Kevin O'Connor
4671cf2d0e docs: Improve SET_PIN documentation in G-Codes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-13 11:25:06 -05:00
Kevin O'Connor
bca2671efb toolhead: Flush in chunks from flush_step_generation()
If note_kinematic_activity() has a time far in the future it could
result in a single flush attempt of that time range.  Be sure to break
up that range into small chunks using the normal _update_move_time()
mechanism.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-08 10:40:52 -05:00
Kevin O'Connor
52b33c1b81 toolhead: Rename last_kin_flush_time to force_flush_time
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-08 10:40:52 -05:00
Kevin O'Connor
bd2a849566 toolhead: Fix note_kinematic_activity()
It was possible a note_kinematic_activity() call could increase
last_kin_move_time, but _process_moves() could reset it.  Fix by
making sure _process_moves() only ever increases last_kin_move_time.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-08 10:40:52 -05:00
Kevin O'Connor
f1203d56f6 chelper: Minor declaration movement in __init__.py
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-07 23:17:37 -05:00
Kevin O'Connor
4ea11dbb4f trapq: Minor code movement in trapq.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-07 14:13:00 -05:00
Kevin O'Connor
01f90e8f28 console: No need to import pins module
The pins module is no longer used in console.py.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-07 12:00:16 -05:00
Kevin O'Connor
4395ae96a7 serialhdl: Add a get_serialqueue() method
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-06 11:59:35 -05:00
Kevin O'Connor
a564824009 serialqueue: Add comment to do_write()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-05 03:09:43 -05:00
Kevin O'Connor
cbc17a7cb6 docs: Note v0.11.0 release in Config_Changes.md
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-04 12:04:45 -05:00
JamesH1978
3cd8a72e60
spi_flash: Add SKR2 F429 chip variant to spi_flash (#5956)
Later addition of a F429 variant SKR2 was released. Changed btt-skr2 to btt-skr-2-f407 and added a new alias for btt-skr-2-f429

Signed-off-by: James Hartley <james@hartleyns.com>
2023-01-04 12:01:28 -05:00
Kevin O'Connor
448c1a1488 stm32: Reindent ifdefs in stm32f0_i2c.c
A whitespace and comment change only - no functional changes.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2023-01-03 12:52:35 -05:00
Alex Voinea
9c2ccceb9f
stm32: Expand stm32g0 family (#5838)
Add stm32g07x family support.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2023-01-03 12:43:46 -05:00
Stas Yakobov
b337cc3ee8
config: Added precise location of [bed_screws] for Ender-3-s1 (#5944)
Signed-off-by: Stas Yakobov <stas@3os.org>
2023-01-02 15:22:46 -05:00
Clifford Roche
40d8c2ef16 palette2: Fix errors with bad handling of NoneType in a few locations
Issue specific to Python 3, NoneType is being used to compare heartbeat time (actually caused by invalid condition operator), and by returning NoneType in timer functions.

Signed-off-by: Clifford Roche <clifford.roche@gmail.com>
2022-12-31 21:03:37 -05:00
JamesH1978
6ae6aaf711
board_defs: Add Fysetc Cheetah V2 to spi_flash (#5952)
As discussed with user HiitsameAsh on discord, he has confirmed this addition will flash a Fysetc Cheetah V2

Signed-off-by: James Hartley <james@hartleyns.com>
2022-12-31 18:26:30 -05:00
CODeRUS
f57ff2c07e docs: Fix typo in mpu9250 documentation
Adding MPU-6515, replacing MPU-9255 duplicate

Signed-off-by: Andrei Kozhevnikov <coderusinbox@gmail.com>
2022-12-30 22:28:59 -05:00
janherich
29ba5ab05a delta: Better delta build volume constraint check
Existing code uses very restrictive build volume constraint checking
with just narrow cone on top of fully cylinder for delta printers.

Code here implements more permissive and still safe build volume
constraint checks.

Signed-off-by: Jan Herich <jan.herich@gmail.com>
2022-12-30 21:39:32 -05:00
Kevin O'Connor
1ff0a5494a stm32: Check for CONFIG_HAVE_BOOTLOADER_REQUEST in dfu_reboot.c
Support disabling dfu_reboot if HAVE_BOOTLOADER_REQUEST is disabled in
the Kconfig rules.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
b51b068442 avr: No need to define bootloader_request()
Since avr does not define HAVE_BOOTLOADER_REQUEST it is not necessary
to define the function.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
c620f4836e canserial: Only call bootloader_request() if CONFIG_HAVE_BOOTLOADER_REQUEST
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
34fd3f41ea usb_cdc: Only call bootloader_request() if CONFIG_HAVE_BOOTLOADER_REQUEST
Check for the build symbol prior to calling bootloader_request().
Enable the build symbol on rp2040, atsam, and atsamd chips.

This also enables serial bootloader requsts on rp2040, atsam, and
atsamd.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
806cf233ec stm32: Include "misc.h" in stm32l4.c and stm32g4.c
Include for bootloader_request() definition.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
4ca1e5f670 serial_irq: Rename SERIAL_BOOTLOADER_SIDECHANNEL to HAVE_BOOTLOADER_REQUEST
Rename the build symbol.  This is in preparation for enabling
HAVE_BOOTLOADER_REQUEST on usb and canbus.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Kevin O'Connor
4753315601 Kconfig: No need to specify "default n" in main Kconfig file
A "bool" option already defaults to "n" so no need to state that
explicitly.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-30 21:28:32 -05:00
Alex Voinea
9b60daf62d
tmc: Configurable microstep lookup table (#5920)
Make all the microstep lookup table registers configurable via the
config file. It also loads the default values.
TMC220x and TMC2660 do not support this feature.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2022-12-21 21:23:23 -05:00
Chris Lee
aac613bf44 scripts: support CanBoot on RP2040 in flash_usb.py
Signed-off-by: Chris Lee <clee@mg8.org>
2022-12-19 15:42:53 -05:00
janherich
f078a27905 manual_probe: Add Z_OFFSET_APPLY_ENDSTOP for delta
Current Z_OFFSET_APPLY_ENDSTOP command only works for printers
with cartesian architecture which have separate Z axis defined.
But this functionality (persisting Z babystep value to endstops)
is exactly as convinient for delta printers, therefore this
PR implements it.

Signed-off-by: Jan Herich <jan.herich@gmail.com>
2022-12-19 13:14:06 -05:00
Keyan Mobli
8621ebbed2
bed_mesh: Allow bedmeshing at 1mm spaced intervals (#5918)
Signed-off-by: Keyan Mobli <keyan@kmobli.com>
2022-12-19 11:14:45 -05:00
Kevin O'Connor
4af8786587 stm32: Move dfu reboot logic to new dfu_reboot.c file
Move the stm32 DFU reboot logic to a new dfu_reboot.c file.  This
simplifies the per-chip code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-18 19:50:08 -05:00
Kevin O'Connor
b6cd77f6e3 stm32: Separate out USB DFU reboot logic in stm32l4.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-18 19:50:08 -05:00
Kevin O'Connor
be74c72555 stm32: Separate out USB DFU reboot logic in stm32g4.c
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-18 19:50:08 -05:00
theophile
2a25733cd8
screws_tilt_adjust: Add get_status() method (#5921)
Signed-off-by: Christopher Meredith <chmeredith@gmail.com>
2022-12-17 11:39:25 -05:00
Kevin O'Connor
3c1ed3bb27 initial_pins: Add check to reduce compile time size when not in use
Add a check to the start of initial_pins_setup() to make it easier for
gcc to optimize the code if it is not in use.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-16 22:46:47 -05:00
Kevin O'Connor
0c43ae1fd4 stm32: Just clean dcache instead of disabling on stm32h7 dfu reboot
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-16 17:29:45 -05:00
Kevin O'Connor
02b45c91fb armcm_reset: Flush dcache before rebooting into canboot
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-16 17:26:41 -05:00
Kevin O'Connor
b0d9cbfb4b stm32: Fix usb build on stm32g0b0
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 18:43:25 -05:00
Kevin O'Connor
7d1df81e5e stm32: Fix USB support on stm32g0b1
A typo in commit e33b41ab broke USB selection on stm32g0b1.

Reported by @Pmant.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 11:44:12 -05:00
Kevin O'Connor
41c7bb818f test: Add compile test builds for stm32g431, stm32h723, stm32l412
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 11:27:28 -05:00
Kevin O'Connor
ac090d9d52 stm32: Fix stm32l4 build
Commit c5d56f44 neglected to define ADCIN_BANK_SIZE in stm32h7_adc.c
on stm32l4.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 11:27:19 -05:00
Kevin O'Connor
f31540b357 stm32: Minor changes to stm32g0b0 ifdefs
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 10:27:51 -05:00
Alex Voinea
e33b41abaa stm32g0: add stm32g0b0 support
Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2022-12-15 10:05:43 -05:00
Kevin O'Connor
9d668d63a7 stm32: Rework usb_reboot_for_dfu_bootloader() so it works on stm32h723
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 09:52:21 -05:00
Kevin O'Connor
f6199ef613 config: Update generic-bigtreetech-octopus.cfg for f429 and h723 chips
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-15 09:50:01 -05:00
Kevin O'Connor
fe0fc29616 rp2040: Move watchdog code to new watchdog.c file
Move the watchdog code to its own file so that it is easier to disable
it for development builds.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 19:21:25 -05:00
Kevin O'Connor
9b342c65c8 armcm_link: Rename CONFIG_FLASH_START to CONFIG_FLASH_APPLICATION_ADDRESS
Rename the build symbol name for better clarity on what it represents.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 18:44:07 -05:00
Kevin O'Connor
dc94a35752 lpc176x: Fix lpc176x build
Fix build error introduced in commit 6ba2c3e1.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 14:50:31 -05:00
Kevin O'Connor
d40ebdab06 canbus: Rename canserial_send() to canbus_send()
Rename canserial_send() to canbus_send() and canserial_set_filter() to
canbus_set_filter().  This makes it more clear where the code should
reside.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 14:25:21 -05:00
Kevin O'Connor
52a6bed24e canbus: Rename canbus_send() to canhw_send()
Rename canbus_send() to canhw_send() and rename canbus_set_filter() to
canhw_set_filter().  This makes it more clear where the code should
reside.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 14:15:14 -05:00
Kevin O'Connor
e16a693b1e rp2040: Fix copy-paste error in Kconfig comment
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 13:34:15 -05:00
Kevin O'Connor
6ba2c3e1d1 lpc176x: Use "Bootloader offset" prompt in "make menuconfig"
Use the same bootloader offset terminology that is used with other
chips (eg, stm32).

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-14 13:29:39 -05:00
maze
347dfa58ea
gcode_arcs: Allow either one of I, J, K to be default-zero on G2/G3 (#5939)
Signed-off-by: Wijnand Modderman-Lenstra <maze@pyth0n.org>
2022-12-14 12:06:11 -05:00
Kevin O'Connor
69f76b3b66 stm32: Apply race fixes to stm32h7_adc.c
Improve handling of race conditions with hardware updates.  This is
the same changes applied to stm32f0_adc.c in commit 88325b6c.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-12 23:46:49 -05:00
Justin Schuh
201f715b55 save_variables: Verify filename path is writeable at startup
Signed-off-by: Justin Schuh <code@justinschuh.com>
2022-12-11 21:07:47 -05:00
Kevin O'Connor
ba365aff96 gcode_arcs: No need to import gcode module to access Coord()
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-11 20:59:02 -05:00
Andrew Mirsky
0c5c87d7c0 gcode_arcs: support XY, XZ and YZ planes
add G17, G18 and G19 commands to select arc planes
enhance G2/G3 to support arc moves in XY, XZ and YZ planes

Signed-off-by: Andrew Mirsky <andrew@mirsky.net>
2022-12-11 20:55:59 -05:00
Alex Voinea
c7f323e863 stm32g0: Do not disable SWD by accident
Keep SWEN as 1 in FLASH->ACR register such
that the SWD interface doesn't get disabled.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2022-12-11 20:09:50 -05:00
Alex Voinea
0972561783 stm32g4: Do not disable SWD by accident
Keep SWEN as 1 in FLASH->ACR register such
that the SWD interface doesn't get disabled.

Signed-off-by: Alex Voinea <voinea.dragos.alexandru@gmail.com>
2022-12-11 20:09:50 -05:00
BIGTREETECH
516fdae2b7
linux: add 'GPIOI' for linux process (#5926)
Signed-off-by: Alan.Ma from BigTreeTech tech@biqu3d.com
2022-12-11 20:07:58 -05:00
Frank Roth
03006f5ca3 config: printer-artillery-sidewinder-x2-2022.cfg
Minor fix. The screw labels "back left" and "back right"
where swapped in [screws_tilt_adjust] section.

Signed-off-by: Frank Roth <developer@freakydu.de>
2022-12-11 19:53:42 -05:00
Kevin O'Connor
336cc92a0a parsedump: Support running on both python2 and python3
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-07 14:31:03 -05:00
bigtreetech
a42f615881 stm32: add STM32H723 support
Signed-off-by: Chen.BJ from BigTreeTech chenbj@biqu3d.com
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
2022-12-02 13:55:23 -05:00
bigtreetech
50b2e2e67e lib: update lib/stm32h7 to v1.9.0 for stm32h723
Signed-off-by: Chen.BJ from BigTreeTech chenbj@biqu3d.com
2022-12-02 13:26:02 -05:00
Matt Baker
c5d56f4438 stm32g4: implement build,usb,can,i2c,spi,serial,adc.
Signed-off-by: Matt Baker <baker.matt.j@gmail.com>
2022-12-02 11:31:42 -05:00
Matt Baker
9ab367d813 stm32g4: add lib from stm32cubeg4 v1.4.0
Signed-off-by: Matt Baker <baker.matt.j@gmail.com>
2022-12-02 11:31:42 -05:00
Neko-vecter
a1de69e39b corexz: Multiple steppers per axis on CoreXZ
Allowing multiple steppers per axis.

Signed-off-by: Vecter Fang <vecterfang@icloud.com>
2022-12-02 11:25:55 -05:00
1050 changed files with 862754 additions and 18018 deletions

View file

@ -4,12 +4,12 @@ on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-18.04
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Setup cache
uses: actions/cache@v2
uses: actions/cache@v3
with:
path: ci_cache
key: ${{ runner.os }}-build-${{ hashFiles('scripts/ci-install.sh') }}
@ -21,7 +21,7 @@ jobs:
run: ./scripts/ci-build.sh 2>&1
- name: Upload micro-controller data dictionaries
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: data-dict
path: ci_build/dict

View file

@ -12,12 +12,12 @@ jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v3
- name: Setup python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.8'
- uses: actions/cache@v2
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('docs/_klipper3d/mkdocs-requirements.txt') }}
@ -28,7 +28,7 @@ jobs:
- name: Build MkDocs Pages
run: docs/_klipper3d/build-translations.sh
- name: Deploy
uses: JamesIves/github-pages-deploy-action@v4.2.5
uses: JamesIves/github-pages-deploy-action@v4.4.3
with:
branch: gh-pages # The branch the action should deploy to.
folder: site # The folder the action should deploy.

View file

@ -34,7 +34,7 @@ jobs:
+ " bulk of a review has already been completed."
+ "\n"
+ "2. Consider opening a topic on the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#community-forum)"
+ "(https://www.klipper3d.org/Contact.html#discourse-forum)"
+ " server to discuss this work. The Discourse server is a good"
+ " place to discuss development ideas and to engage users"
+ " interested in testing. Reviewers are more likely to"
@ -50,7 +50,7 @@ jobs:
+ " this GitHub Pull Request then it will be automatically"
+ " closed. If this happens, then it is a good idea to move"
+ " further discussion to the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#community-forum)"
+ "(https://www.klipper3d.org/Contact.html#discourse-forum)"
+ " server. Reviewers can reach out on that forum to let you"
+ " know if they are interested and when they are available."
+ "\n\n"

View file

@ -9,7 +9,7 @@ jobs:
if: github.repository == 'Klipper3d/klipper'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
- uses: actions/stale@v8
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: |
@ -31,6 +31,8 @@ jobs:
exempt-issue-labels: 'enhancement,bug'
days-before-stale: 35
days-before-close: 7
days-before-pr-stale: -1
days-before-pr-close: -1
# Close tickets marked with "not on github" label
close_not_on_github:
if: github.repository == 'Klipper3d/klipper'
@ -60,54 +62,54 @@ jobs:
state: 'closed'
});
}
# Close tickets marked with "reviewer needed" label for 2+ weeks
close_reviewer_needed:
if: github.repository == 'Klipper3d/klipper'
runs-on: ubuntu-latest
steps:
- uses: actions/github-script@v6
with:
script: |
const issues = await github.rest.issues.listForRepo({
owner: context.repo.owner,
repo: context.repo.repo,
state: 'open',
labels: 'reviewer needed',
assignee: 'none',
per_page: 100,
page: 1
});
msg = "Unfortunately a reviewer has not assigned themselves to"
+ " this GitHub Pull Request and it is therefore being"
+ " closed. It is a good idea to move"
+ " further discussion to the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#community-forum)"
+ " server. Reviewers can reach out on that forum to let you"
+ " know if they are interested and when they are available."
+ "\n\n"
+ "Best regards,\n"
+ "~ Your friendly GitIssueBot"
+ "\n\n"
+ "PS: I'm just an automated script, not a human being.";
const expireMillis = 1000 * 60 * 60 * 24 * 14;
const curtime = new Date().getTime();
for (const issue of issues.data.values()) {
const updatetime = new Date(issue.updated_at).getTime();
if (curtime < updatetime + expireMillis)
continue;
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
body: msg
});
await github.rest.issues.update({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: issue.number,
state: 'closed'
});
}
# # Close tickets marked with "reviewer needed" label for 2+ weeks
# close_reviewer_needed:
# if: github.repository == 'Klipper3d/klipper'
# runs-on: ubuntu-latest
# steps:
# - uses: actions/github-script@v6
# with:
# script: |
# const issues = await github.rest.issues.listForRepo({
# owner: context.repo.owner,
# repo: context.repo.repo,
# state: 'open',
# labels: 'reviewer needed',
# assignee: 'none',
# per_page: 100,
# page: 1
# });
# msg = "Unfortunately a reviewer has not assigned themselves to"
# + " this GitHub Pull Request and it is therefore being"
# + " closed. It is a good idea to move"
# + " further discussion to the [Klipper Discourse]"
# + "(https://www.klipper3d.org/Contact.html#discourse-forum)"
# + " server. Reviewers can reach out on that forum to let you"
# + " know if they are interested and when they are available."
# + "\n\n"
# + "Best regards,\n"
# + "~ Your friendly GitIssueBot"
# + "\n\n"
# + "PS: I'm just an automated script, not a human being.";
# const expireMillis = 1000 * 60 * 60 * 24 * 14;
# const curtime = new Date().getTime();
# for (const issue of issues.data.values()) {
# const updatetime = new Date(issue.updated_at).getTime();
# if (curtime < updatetime + expireMillis)
# continue;
# await github.rest.issues.createComment({
# owner: context.repo.owner,
# repo: context.repo.repo,
# issue_number: issue.number,
# body: msg
# });
# await github.rest.issues.update({
# owner: context.repo.owner,
# repo: context.repo.repo,
# issue_number: issue.number,
# state: 'closed'
# });
# }
# Mark unassigned PRs that are idle for 2 weeks
mark_reviewer_needed:
if: github.repository == 'Klipper3d/klipper'
@ -135,7 +137,7 @@ jobs:
+ " bulk of a review has already been completed."
+ "\n"
+ "2. Consider opening a topic on the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#community-forum)"
+ "(https://www.klipper3d.org/Contact.html#discourse-forum)"
+ " server to discuss this work. The Discourse server is a good"
+ " place to discuss development ideas and to engage users"
+ " interested in testing. Reviewers are more likely to"
@ -151,7 +153,7 @@ jobs:
+ " this GitHub Pull Request then it will be automatically"
+ " closed. If this happens, then it is a good idea to move"
+ " further discussion to the [Klipper Discourse]"
+ "(https://www.klipper3d.org/Contact.html#community-forum)"
+ "(https://www.klipper3d.org/Contact.html#discourse-forum)"
+ " server. Reviewers can reach out on that forum to let you"
+ " know if they are interested and when they are available."
+ "\n\n"
@ -332,7 +334,7 @@ jobs:
if: github.repository == 'Klipper3d/klipper'
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v3
- uses: dessant/lock-threads@v4
with:
issue-inactive-days: '180'
issue-lock-reason: ''

View file

@ -29,10 +29,11 @@ dirs-y = src
cc-option=$(shell if test -z "`$(1) $(2) -S -o /dev/null -xc /dev/null 2>&1`" \
; then echo "$(2)"; else echo "$(3)"; fi ;)
CFLAGS := -I$(OUT) -Isrc -I$(OUT)board-generic/ -std=gnu11 -O2 -MD \
-Wall -Wold-style-definition $(call cc-option,$(CC),-Wtype-limits,) \
CFLAGS := -iquote $(OUT) -iquote src -iquote $(OUT)board-generic/ \
-std=gnu11 -O2 -MD -Wall \
-Wold-style-definition $(call cc-option,$(CC),-Wtype-limits,) \
-ffunction-sections -fdata-sections -fno-delete-null-pointer-checks
CFLAGS += -flto -fwhole-program -fno-use-linker-plugin -ggdb3
CFLAGS += -flto=auto -fwhole-program -fno-use-linker-plugin -ggdb3
OBJS_klipper.elf = $(patsubst %.c, $(OUT)src/%.o,$(src-y))
OBJS_klipper.elf += $(OUT)compile_time_request.o

View file

@ -4,15 +4,14 @@ Welcome to the Klipper project!
https://www.klipper3d.org/
Klipper is a 3d-Printer firmware. It combines the power of a general
purpose computer with one or more micro-controllers. See the
The Klipper firmware controls 3d-Printers. It combines the power of a
general purpose computer with one or more micro-controllers. See the
[features document](https://www.klipper3d.org/Features.html) for more
information on why you should use Klipper.
information on why you should use the Klipper software.
To begin using Klipper start by
[installing](https://www.klipper3d.org/Installation.html) it.
Start by [installing Klipper software](https://www.klipper3d.org/Installation.html).
Klipper is Free Software. See the [license](COPYING) or read the
[documentation](https://www.klipper3d.org/Overview.html). We depend on
the generous support from our
Klipper software is Free Software. See the [license](COPYING) or read
the [documentation](https://www.klipper3d.org/Overview.html). We
depend on the generous support from our
[sponsors](https://www.klipper3d.org/Sponsors.html).

View file

@ -0,0 +1,138 @@
# This file is an example config file for cartesian style printers.
# One may copy and edit this file to configure a new printer with
# a generic cartesian kinematics.
# DO NOT COPY THIS FILE WITHOUT CAREFULLY READING AND UPDATING IT
# FIRST. Incorrectly configured parameters may cause damage.
# See docs/Config_Reference.md for a description of parameters.
[carriage x]
position_endstop: 0
position_max: 300
homing_speed: 50
endstop_pin: ^PE5
[carriage y]
position_endstop: 0
position_max: 200
homing_speed: 50
endstop_pin: ^PJ1
[extra_carriage y1]
primary_carriage: y
endstop_pin: ^PB6
[carriage z]
position_endstop: 0.5
position_max: 100
endstop_pin: ^PD3
[dual_carriage u]
primary_carriage: x
position_endstop: 300
position_max: 300
homing_speed: 50
endstop_pin: ^PE4
[stepper my_stepper_x]
carriages: x+y
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
[stepper my_stepper_u]
carriages: u-y1
step_pin: PH1
dir_pin: PH0
enable_pin: !PA1
microsteps: 16
rotation_distance: 40
[stepper my_stepper_y0]
carriages: y
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
[stepper my_stepper_y1]
carriages: y1
step_pin: PE3
dir_pin: !PH6
enable_pin: !PG5
microsteps: 16
rotation_distance: 40
[stepper my_stepper_z0]
carriages: z
step_pin: PL3
dir_pin: PL1
enable_pin: !PK0
microsteps: 16
rotation_distance: 8
[stepper my_stepper_z1]
carriages: z
step_pin: PG1
dir_pin: PG0
enable_pin: !PH3
microsteps: 16
rotation_distance: 8
[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
[extruder1]
step_pin: PC1
dir_pin: PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK7
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PH5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6
control: watermark
min_temp: 0
max_temp: 110
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: generic_cartesian
max_velocity: 500
max_accel: 3000
max_z_velocity: 20
max_z_accel: 100

223
config/generic-I3DBEEZ9.cfg Normal file
View file

@ -0,0 +1,223 @@
# This file contains common pin mappings for the I3DBEEZ9 V1.0.
# To use this config, the firmware should be compiled for the
# STM32F407 with a "32KiB bootloader".
# The "make flash" command does not work on the I3DBEEZ9. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the I3DBEEZ9
# with that SD card.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PE9
dir_pin: PF1
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
endstop_pin: PB10
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_y]
step_pin: PE11
dir_pin: PE1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: PE12
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_z]
step_pin: PE13
dir_pin: PC2
enable_pin: !PC0
microsteps: 16
rotation_distance: 8
endstop_pin: PG8
position_endstop: 0
position_max: 200
[extruder]
step_pin: PE14
dir_pin: PA0
enable_pin: !PC3
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB1 # Heat0
sensor_pin: PF4 # T1 Header
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
#[extruder1]
#step_pin: PD15
#dir_pin: PE7
#enable_pin: !PA3
#heater_pin: PD14 # Heat1
#sensor_pin: PF5 # T2
#...
#[extruder2]
#step_pin: PD13
#dir_pin: PG9
#enable_pin: !PF0
#heater_pin: PB0 # Heat2
#sensor_pin: PF6 # T3
#...
#[stepper_z1]
#step_pin: PE4
#dir_pin: PE3
#enable_pin: !PC13
#microsteps: 16
#rotation_distance: 8
#endstop_pin: PD0
#position_endstop: 0.5
#position_max: 200
[heater_bed]
heater_pin: PD12
sensor_pin: PF3 # T0
sensor_type: ATC Semitec 104GT-2
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PC8
[heater_fan fan1]
pin: PE5
#[heater_fan fan2]
#pin: PE6
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2208 configuration
########################################
#[tmc2208 stepper_x]
#uart_pin: PA15
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2208 stepper_y]
#uart_pin: PB8
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2208 stepper_z]
#uart_pin: PB9
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2208 extruder]
#uart_pin: PB3
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2208 extruder1]
#uart_pin: PG15
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2208 extruder2]
#uart_pin: PG12
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2208 stepper_z1]
#uart_pin: PE2
#run_current: 0.650
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PA15
#spi_bus: spi3a
##diag1_pin: PB10
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PB8
#spi_bus: spi3a
##diag1_pin: PE12
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PB9
#spi_bus: spi3a
##diag1_pin: PG8
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PB3
#spi_bus: spi3a
##diag1_pin: PE15
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PG15
#spi_bus: spi3a
##diag1_pin: PE10
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#cs_pin: PG12
#spi_bus: spi3a
##diag1_pin: PG5
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z1]
#cs_pin: PE2
#spi_bus: spi3a
##diag1_pin: PD0
#run_current: 0.650
#stealthchop_threshold: 999999
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=PG4, EXP1_3=PD11, EXP1_5=PG2, EXP1_7=PG6, EXP1_9=<GND>,
EXP1_2=PA8, EXP1_4=PD10, EXP1_6=PG3, EXP1_8=PG7, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PB14, EXP2_3=PG10, EXP2_5=PF11, EXP2_7=PF12, EXP2_9=<GND>,
EXP2_2=PB13, EXP2_4=PB12, EXP2_6=PB15, EXP2_8=<RST>, EXP2_10=PF13
# Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "spi2"
# See the sample-lcd.cfg file for definitions of common LCD displays.

View file

@ -0,0 +1,200 @@
# This file contains common pin mappings for the BIGTREETECH Manta E3EZ
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PB12/PB13)".
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PA14
dir_pin: !PA10
enable_pin: !PA13
microsteps: 16
rotation_distance: 40
endstop_pin: ^PC4
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_y]
step_pin: PC8
dir_pin: !PA15
enable_pin: !PC14
microsteps: 16
rotation_distance: 40
endstop_pin: ^PB0
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_z]
step_pin: PD2
dir_pin: PD4
enable_pin: !PD3
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC6
position_endstop: 0
position_max: 270
[extruder]
step_pin: PD5
dir_pin: !PD6
enable_pin: !PB3
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB11 #HE0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA4 #TH0
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
#[filament_switch_sensor material_0]
#switch_pin: PC5
#[extruder1]
#step_pin: PB7
#dir_pin: PB6
#enable_pin: !PB4
#heater_pin: PB10 # HE1
#sensor_pin: PA5 # T1
#[filament_switch_sensor material_1]
#switch_pin: PB1
[heater_bed]
heater_pin: PB2 #HB
sensor_type: EPCOS 100K B57560G104F #Generic 3950
sensor_pin: PA3 #TB
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PA8
#[heater_fan fan1]
#pin: PB15
#[heater_fan fan2]
#pin: PB14
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PB8
##diag_pin: PC4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_y]
#uart_pin: PC9
##diag_pin: PB0
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_z]
#uart_pin: PD0
##diag_pin: PC6
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 extruder]
#uart_pin: PD1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PB5
#run_current: 0.800
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PB8
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10
##diag1_pin: PF3
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PC9
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10
##diag1_pin: PF4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PD0
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10
##diag1_pin: PF5
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PD1
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PB5
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10
#run_current: 0.800
#stealthchop_threshold: 999999
[board_pins]
aliases:
# EXP1 header
EXP1_1=PC1, EXP1_3=PC3, EXP1_5=PC0, EXP1_7=PA2, EXP1_9=<GND>,
EXP1_2=PC2, EXP1_4=<RST>, EXP1_6=PA0, EXP1_8=PA1, EXP1_10=<5V>
#[bltouch]
#sensor_pin: PA6
#control_pin: PA7
#[output_pin PS_ON]
#pin: PA9
#[output_pin pb9_pin]
#pin: PB9
#[neopixel my_neopixel]
#pin: PC7
#[adxl345]
#cs_pin: PC15
#spi_software_miso_pin: PC11
#spi_software_mosi_pin: PC12
#spi_software_sclk_pin: PC10

View file

@ -75,8 +75,8 @@ pin: PD2
#pin: PD4
#[heater_fan SoC_fan]
#pin: CB1: gpio79
#pin: RPI: gpio26
#pin: CB1:gpio79
#pin: RPI:gpio26
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00

View file

@ -0,0 +1,199 @@
# This file contains common pin mappings for the BIGTREETECH Manta M5P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD0/PD1)".
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC8
dir_pin: !PC9
enable_pin: !PA15
microsteps: 16
rotation_distance: 40
endstop_pin: ^PD3
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_y]
step_pin: PA10
dir_pin: !PA14
enable_pin: !PA13
microsteps: 16
rotation_distance: 40
endstop_pin: ^PD2
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_z]
step_pin: PC6
dir_pin: PC7
enable_pin: !PA9
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC3
position_endstop: 0.0
position_max: 200
[extruder]
step_pin: PB12
dir_pin: !PB11
enable_pin: !PA8
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA1
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
#sensor_type:MAX31865
#sensor_pin: PA4
#spi_bus: spi1
#rtd_nominal_r: 100
#rtd_reference_r: 430
#rtd_num_of_wires: 2
#[filament_switch_sensor material_0]
#switch_pin: PC2
#[extruder1]
#step_pin: PB0
#dir_pin: PB1
#enable_pin: !PC4
#heater_pin: PA7
#sensor_pin: PA2
#...
[heater_bed]
heater_pin: PA5
sensor_type: Generic 3950
sensor_pin: PA0
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PA4
#[heater_fan fan1]
#pin: PA3
#[heater_fan SoC_fan]
#pin: CB1:gpio79
#pin: RPI:gpio26
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PD9
#run_current: 0.800
#diag_pin: PD3
#[tmc2209 stepper_y]
#uart_pin: PD8
#run_current: 0.800
#diag_pin: PD2
#[tmc2209 stepper_z]
#uart_pin: PB10
#run_current: 0.800
#diag_pin: PC3
#[tmc2209 extruder]
#uart_pin: PB2
#run_current: 0.600
#diag_pin: PC2
#[tmc2209 extruder1]
#uart_pin: PA6
#run_current: 0.600
#diag_pin:
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PD9
#spi_bus: spi2
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PD3
#[tmc2130 stepper_y]
#cs_pin: PD8
#spi_bus: spi2
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PD2
#[tmc2130 stepper_z]
#cs_pin: PB10
#spi_bus: spi2
#run_current: 0.650
#stealthchop_threshold: 999999
#diag1_pin: PC3
#[tmc2130 extruder]
#cs_pin: PB2
#spi_bus: spi2
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin: PC2
#[tmc2130 extruder1]
#cs_pin: PA6
#spi_bus: spi2
#run_current: 0.800
#stealthchop_threshold: 999999
#diag1_pin:
[board_pins]
aliases:
# EXP1 header
EXP1_1=PD5, EXP1_3=PB3, EXP1_5=PB5, EXP1_7=PB7, EXP1_9=<GND>,
EXP1_2=PD4, EXP1_4=PD6, EXP1_6=PB4, EXP1_8=PB6, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PB14, EXP2_3=PB8, EXP2_5=PC10, EXP2_7=PC12, EXP2_9=<GND>,
EXP2_2=PB13, EXP2_4=PB9, EXP2_6=PB15, EXP2_8=<RST>, EXP2_10=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#[bltouch]
#sensor_pin: PC13
#control_pin: PC15
# Proximity switch
#[probe]
#pin: PC15
#[neopixel my_neopixel1]
#pin: PC11
#[neopixel my_neopixel2]
#pin: PC14
#[adxl345]
#cs_pin: PC0
#spi_bus: spi2

View file

@ -43,7 +43,7 @@ position_max: 270
#[stepper_]
#step_pin: PD3
#dir_pin: PD2
#enable_pin: PD5
#enable_pin: !PD5
#endstop_pin: PC0
#...
@ -258,7 +258,7 @@ aliases:
EXP2_3=PF7, EXP2_4=PB12,
EXP2_5=PE7, EXP2_6=PB11, # Slot in the socket on this side
EXP2_7=PE8, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PC5
EXP2_9=<GND>, EXP2_10=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
@ -282,3 +282,7 @@ aliases:
#[hall_filament_width_sensor]
#adc1: PC5
#adc2: PB0
#[adxl345]
#cs_pin: PB15
#spi_bus: spi1

View file

@ -0,0 +1,295 @@
# This file contains common pin mappings for the BIGTREETECH Manta M8P
# To use this config, the firmware should be compiled for the
# STM32G0B1 with a "8KiB bootloader" "8 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD12/PD13)".
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PE2
dir_pin: PB4
enable_pin: !PC11
microsteps: 16
rotation_distance: 40
endstop_pin: ^PF3
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_y]
step_pin: PF12
dir_pin: PF11
enable_pin: !PB3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PF4
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_z]
step_pin: PD7
dir_pin: !PD6
enable_pin: !PF10
microsteps: 16
rotation_distance: 8
endstop_pin: ^PF5
position_endstop: 0
position_max: 270
# Motor4
# The M8P only has 4 heater outputs which leaves an extra stepper
# This can be used for a second Z stepper, dual_carriage, extruder co-stepper,
# or other accesory such as an MMU
#[stepper_]
#step_pin: PD3
#dir_pin: PD2
#enable_pin: !PD5
#endstop_pin: PC0
#...
[extruder]
step_pin: PC9
dir_pin: PC8
enable_pin: !PD1
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.4
filament_diameter: 1.75
heater_pin: PE3 # HE0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA1 # T0
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
#[filament_switch_sensor material_0]
#switch_pin: PC1
# Motor6
#[extruder1]
#step_pin: PA10
#dir_pin: PA14
#enable_pin: !PA15
#heater_pin: PB5 # HE1
#sensor_pin: PA2 # T1
#...
#[filament_switch_sensor material_1]
#switch_pin: PC2
# Motor7
#[extruder2]
#step_pin: PD11
#dir_pin: PD9
#enable_pin: !PD15
#heater_pin: PB6 # HE2
#sensor_pin: PA3 # T2
#...
# Motor8
#[extruder3]
#step_pin: PD8
#dir_pin: PC6
#enable_pin: !PC7
#heater_pin: PE1 # HE3
#sensor_pin: PA4 # T3
#...
[heater_bed]
heater_pin: PB7
sensor_type: Generic 3950
sensor_pin: PA0 # TB
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PE6
#[heater_fan fan1]
#pin: PE0
#[heater_fan fan2]
#pin: PC12
#[heater_fan fan3]
#pin: PE5
#[heater_fan fan4]
#pin: PE4
#[heater_fan fan5]
#pin: PB8
#tachometer_pin: PC14
#[heater_fan fan6]
#pin: PB9
#tachometer_pin: PC15
#[heater_fan SoC_fan]
#pin: CB1:gpio79
#pin: RPI:gpio26
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PC10
##diag_pin: PF3
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_y]
#uart_pin: PF13
##diag_pin: PF4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_z]
#uart_pin: PF9
##diag_pin: PF5
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 stepper_]
#uart_pin: PD4
##diag_pin: PC0
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 extruder]
#uart_pin: PD0
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PF8
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder2]
#uart_pin: PD14
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder3]
#uart_pin: PD10
#run_current: 0.800
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PC10
#spi_bus: spi1
##diag1_pin: PF3
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PF13
#spi_bus: spi1
##diag1_pin: PF4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PF9
#spi_bus: spi1
##diag1_pin: PF5
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 stepper_]
#cs_pin: PD4
#spi_bus: spi1
##diag1_pin: PC0
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PD0
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PF8
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#cs_pin: PD14
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder3]
#cs_pin: PD10
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
[board_pins]
aliases:
# EXP1 header
EXP1_1=PE9, EXP1_2=PE10,
EXP1_3=PE11, EXP1_4=PE12,
EXP1_5=PE13, EXP1_6=PE14, # Slot in the socket on this side
EXP1_7=PE15, EXP1_8=PB10,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PB14, EXP2_2=PB13,
EXP2_3=PF7, EXP2_4=PB12,
EXP2_5=PE7, EXP2_6=PB11, # Slot in the socket on this side
EXP2_7=PE8, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#[bltouch]
#sensor_pin: PB2
#control_pin: PB1
# Proximity switch
#[probe]
#pin: PF6
#[output_pin ps_on_pin]
#pin: PC3
#[output_pin pc13_pin]
#pin: PC13
#[neopixel my_neopixel_1]
#pin: PA9
#[neopixel my_neopixel_2]
#pin: PB15
#[hall_filament_width_sensor]
#adc1: PC5
#adc2: PB0
#[adxl345]
#cs_pin: PC4
#spi_bus: spi1

View file

@ -0,0 +1,332 @@
# This file contains common pin mappings for the BIGTREETECH Octopus Max EZ.
# To use this config, the firmware should be compiled for the
# STM32H723 with a "128KiB bootloader" "25 MHz crystal"
# and "USB (on PA11/PA12)" or "CAN bus (on PD0/PD1)".
# See docs/Config_Reference.md for a description of parameters.
# Motor-1
[stepper_x]
step_pin: PC13
dir_pin: PC14
enable_pin: !PE6
microsteps: 16
rotation_distance: 40
endstop_pin: PF0
position_endstop: 0
position_max: 200
homing_speed: 50
# Motor-2
[stepper_y]
step_pin: PE4
dir_pin: PE5
enable_pin: !PE3
microsteps: 16
rotation_distance: 40
endstop_pin: PF2
position_endstop: 0
position_max: 200
homing_speed: 50
# Motor-3
[stepper_z]
step_pin: PE1
dir_pin: PE0
enable_pin: !PE2
microsteps: 16
rotation_distance: 8
endstop_pin: PF4
position_endstop: 0.5
position_max: 200
# Motor-4
# The Octopus only has 4 heater outputs which leaves an extra stepper
# This can be used for a second Z stepper, dual_carriage, extruder co-stepper,
# or other accesory such as an MMU
#[stepper_]
#step_pin: PB8
#dir_pin: PB9
#enable_pin: PB7
#endstop_pin: PF3
#...
# Motor-5
[extruder]
step_pin: PB5
dir_pin: PB4
enable_pin: !PB6
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PF6 # HE0
sensor_pin: PB0 # T0
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
#[filament_switch_sensor material_0]
#switch_pin: PF1
# Motor-6
#[extruder1]
#step_pin: PG15
#dir_pin: PB3
#enable_pin: !PD5
#heater_pin: PA0 # HE1
#sensor_pin: PC5 # T1
#...
#[filament_switch_sensor material_1]
#switch_pin: PC15
# Motor-7
#[extruder2]
#step_pin: PD3
#dir_pin: PD2
#enable_pin: !PD4
#heater_pin: PF9 # HE2
#sensor_pin: PC4 # T2
#...
# Motor-8
#[extruder3]
#step_pin: PA10
#dir_pin: PA9
#enable_pin: !PA15
#heater_pin: PF7 # HE3
#sensor_pin: PA7 # T3
#...
# Motor-9
#[extruder4]
#step_pin: PA8
#dir_pin: PC7
#enable_pin: !PC9
#...
# Motor-10
#[extruder5]
#step_pin: PG6
#dir_pin: PC6
#enable_pin: !PC8
#...
[heater_bed]
heater_pin: PF5
sensor_pin: PB1 # TB
sensor_type: ATC Semitec 104GT-2
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PA6
#[heater_fan fan1]
#pin: PA5
#[heater_fan fan2]
#pin: PA4
#[heater_fan fan3]
#pin: PA3
#[heater_fan fan4]
#pin: PA1
#tachometer_pin: PC3
#[heater_fan fan5]
#pin: PF8
#tachometer_pin: PC1
#[heater_fan fan6]
#pin: PA2
#tachometer_pin: PC2
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PG14
##diag_pin: PF0
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_y]
#uart_pin: PG13
##diag_pin: PF2
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_z]
#uart_pin: PG12
##diag_pin: PF4
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 stepper_]
#uart_pin: PG11
##diag_pin: PF3
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 extruder]
#uart_pin: PG10
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PG9
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder2]
#uart_pin: PD7
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder3]
#uart_pin: PD6
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder4]
#uart_pin: PG8
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder5]
#uart_pin: PG7
#run_current: 0.800
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PG14
#spi_bus: spi4
##diag1_pin: PF0
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PG13
#spi_bus: spi4
##diag1_pin: PF2
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PG12
#spi_bus: spi4
##diag1_pin: PF4
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 stepper_]
#cs_pin: PG11
#spi_bus: spi4
##diag1_pin: PF3
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PG10
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PG9
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#cs_pin: PD7
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder3]
#cs_pin: PD6
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder4]
#cs_pin: PG8
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder5]
#cs_pin: PG7
#spi_bus: spi4
#run_current: 0.800
#stealthchop_threshold: 999999
[board_pins]
aliases:
# FPC header, Aliases EXP1 & EXP2 for mini12864
EXP1_1=PG2, EXP1_2=PD15,
EXP1_3=PD14, EXP1_4=PD13,
EXP1_5=PD12, EXP1_6=PD11,
EXP1_7=PD10, EXP1_8=PE15,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PE13, EXP2_2=PE12,
EXP2_3=PG5, EXP2_4=PE11,
EXP2_5=PG4, EXP2_6=PE14,
EXP2_7=PG3, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=<NC>
# See the sample-lcd.cfg file for definitions of common LCD displays.
#[bltouch]
#sensor_pin: ^PB15
#control_pin: PB14
# Proximity switch
#[probe]
#pin: PF11
#[output_pin ps_on_pin]
#pin: PF13
#[output_pin pf12_pin]
#pin: PF12
#[neopixel my_neopixel_1]
#pin: PE10
#[neopixel my_neopixel_2]
#pin: PE9
#[hall_filament_width_sensor]
#adc1: PC0
#adc2: PF10
#[adxl345]
#cs_pin: PF14
#spi_bus: spi4

View file

@ -0,0 +1,289 @@
# This file contains common pin mappings for the BigTreeTech Octopus
# Pro v1.0 board.
# Important! Do not use this config with an Octopus Pro v1.1 board as
# doing so could result in a heater being inadvertently enabled.
# To use this config, start by identifying the micro-controller on the
# board - it may be an STM32F446, STM32F429, or an STM32H723. Select
# the appropriate micro-controller in "make menuconfig" and select
# "Enable low-level configuration options". For STM32F446 boards the
# firmware should be compiled with a "32KiB bootloader" and a "12MHz
# crystal" clock reference. For STM32F429 boards use a "32KiB
# bootloader" and an "8MHz crystal". For STM32H723 boards use a
# "128KiB bootloader" and a "25Mhz crystal".
# See docs/Config_Reference.md for a description of parameters.
# Driver0
[stepper_x]
step_pin: PF13
dir_pin: PF12
enable_pin: !PF14
microsteps: 16
rotation_distance: 40
endstop_pin: PG6
position_endstop: 0
position_max: 200
homing_speed: 50
# Driver1
[stepper_y]
step_pin: PG0
dir_pin: PG1
enable_pin: !PF15
microsteps: 16
rotation_distance: 40
endstop_pin: PG9
position_endstop: 0
position_max: 200
homing_speed: 50
# Driver2
[stepper_z]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
microsteps: 16
rotation_distance: 8
endstop_pin: PG10
position_endstop: 0.5
position_max: 200
# Driver3
# The Octopus only has 4 heater outputs which leaves an extra stepper
# This can be used for a second Z stepper, dual_carriage, extruder co-stepper,
# or other accesory such as an MMU
#[stepper_]
#step_pin: PG4
#dir_pin: PC1
#enable_pin: !PA0
#endstop_pin: PG11
#...
# Driver4
[extruder]
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA2 # HE0
sensor_pin: PF4 # T0
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
#[filament_switch_sensor material_0]
#switch_pin: PG12
# Driver5
#[extruder1]
#step_pin: PC13
#dir_pin: PF0
#enable_pin: !PF1
#heater_pin: PA3 # HE1
#sensor_pin: PF5 # T1
#...
#[filament_switch_sensor material_1]
#switch_pin: PG13
# Driver6
#[extruder2]
#step_pin: PE2
#dir_pin: PE3
#enable_pin: !PD4
#heater_pin: PB10 # HE2
#sensor_pin: PF6 # T2
#...
#[filament_switch_sensor material_2]
#switch_pin: PG14
# Driver7
#[extruder3]
#step_pin: PE6
#dir_pin: PA14
#enable_pin: !PE0
#heater_pin: PB11 # HE3
#sensor_pin: PF7 # T3
#...
#[filament_switch_sensor material_3]
#switch_pin: PG15
[heater_bed]
heater_pin: PA1
sensor_pin: PF3 # TB
sensor_type: ATC Semitec 104GT-2
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PA8
#[heater_fan fan1]
#pin: PE5
#[heater_fan fan2]
#pin: PD12
#[heater_fan fan3]
#pin: PD13
#[heater_fan fan4]
#pin: PD14
#[controller_fan fan5]
#pin: PD15
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
# CAN bus is also available on this board
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PC4
##diag_pin: PG6
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_y]
#uart_pin: PD11
##diag_pin: PG9
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_z]
#uart_pin: PC6
##diag_pin: PG10
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 stepper_]
#uart_pin: PC7
##diag_pin: PG11
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 extruder]
#uart_pin: PF2
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PE4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder2]
#uart_pin: PE1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder3]
#uart_pin: PD3
#run_current: 0.800
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PC4
#spi_bus: spi1
##diag1_pin: PG6
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PD11
#spi_bus: spi1
##diag1_pin: PG9
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PC6
#spi_bus: spi1
##diag1_pin: PG10
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 stepper_]
#cs_pin: PC7
#spi_bus: spi1
##diag1_pin: PG11
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PF2
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PE4
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#cs_pin: PE1
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder3]
#cs_pin: PD3
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
[board_pins]
aliases:
# EXP1 header
EXP1_1=PE8, EXP1_2=PE7,
EXP1_3=PE9, EXP1_4=PE10,
EXP1_5=PE12, EXP1_6=PE13, # Slot in the socket on this side
EXP1_7=PE14, EXP1_8=PE15,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_2=PA5,
EXP2_3=PB1, EXP2_4=PA4,
EXP2_5=PB2, EXP2_6=PA7, # Slot in the socket on this side
EXP2_7=PC15, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PC5
# See the sample-lcd.cfg file for definitions of common LCD displays.
# A [probe] section can be defined instead with a pin: setting identical
# to the sensor_pin: for a bltouch
#[bltouch]
#sensor_pin: PB7
#control_pin: PB6
#z_offset: 0
#[neopixel my_neopixel]
#pin: PB0

View file

@ -1,6 +1,13 @@
# This file contains common pin mappings for the BigTreeTech Octopus.
# To use this config, the firmware should be compiled for the
# STM32F446 with a "32KiB bootloader" and a "12MHz crystal" clock reference.
# This file contains common pin mappings for the BigTreeTech Octopus
# Pro v1.1 board.
# Important! Do not use this config with an Octopus Pro v1.0 board nor
# non-Pro board.
# To use this config, during "make menuconfig", select "Enable
# low-level configuration options", select the STM32H723
# micro-controller, select a "128KiB bootloader", and select a "25Mhz
# crystal".
# See docs/Config_Reference.md for a description of parameters.
@ -46,7 +53,7 @@ position_max: 200
#[stepper_]
#step_pin: PG4
#dir_pin: PC1
#enable_pin: PA0
#enable_pin: !PA2
#endstop_pin: PG11
#...
@ -59,7 +66,7 @@ microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA2 # HE0
heater_pin: PA0 # HE0
sensor_pin: PF4 # T0
sensor_type: EPCOS 100K B57560G104F
control: pid
@ -89,7 +96,7 @@ max_temp: 250
#step_pin: PE2
#dir_pin: PE3
#enable_pin: !PD4
#heater_pin: PB10 # HE2
#heater_pin: PB0 # HE2
#sensor_pin: PF6 # T2
#...
@ -275,4 +282,4 @@ aliases:
#z_offset: 0
#[neopixel my_neopixel]
#pin: PB0
#pin: PB10

View file

@ -0,0 +1,288 @@
# This file contains common pin mappings for the BigTreeTech Octopus
# (non-Pro) boards.
# Important! Do not use this config with an Octopus Pro v1.1 board as
# doing so could result in a heater being inadvertently enabled.
# To use this config, start by identifying the micro-controller on the
# board - it may be an STM32F446, or STM32F429. Select the
# appropriate micro-controller in "make menuconfig" and select "Enable
# low-level configuration options". For STM32F446 boards the firmware
# should be compiled with a "32KiB bootloader" and a "12MHz crystal"
# clock reference. For STM32F429 boards use a "32KiB bootloader" and
# an "8MHz crystal".
# See docs/Config_Reference.md for a description of parameters.
# Driver0
[stepper_x]
step_pin: PF13
dir_pin: PF12
enable_pin: !PF14
microsteps: 16
rotation_distance: 40
endstop_pin: PG6
position_endstop: 0
position_max: 200
homing_speed: 50
# Driver1
[stepper_y]
step_pin: PG0
dir_pin: PG1
enable_pin: !PF15
microsteps: 16
rotation_distance: 40
endstop_pin: PG9
position_endstop: 0
position_max: 200
homing_speed: 50
# Driver2
[stepper_z]
step_pin: PF11
dir_pin: PG3
enable_pin: !PG5
microsteps: 16
rotation_distance: 8
endstop_pin: PG10
position_endstop: 0.5
position_max: 200
# Driver3
# The Octopus only has 4 heater outputs which leaves an extra stepper
# This can be used for a second Z stepper, dual_carriage, extruder co-stepper,
# or other accesory such as an MMU
#[stepper_]
#step_pin: PG4
#dir_pin: PC1
#enable_pin: !PA0
#endstop_pin: PG11
#...
# Driver4
[extruder]
step_pin: PF9
dir_pin: PF10
enable_pin: !PG2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA2 # HE0
sensor_pin: PF4 # T0
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
#[filament_switch_sensor material_0]
#switch_pin: PG12
# Driver5
#[extruder1]
#step_pin: PC13
#dir_pin: PF0
#enable_pin: !PF1
#heater_pin: PA3 # HE1
#sensor_pin: PF5 # T1
#...
#[filament_switch_sensor material_1]
#switch_pin: PG13
# Driver6
#[extruder2]
#step_pin: PE2
#dir_pin: PE3
#enable_pin: !PD4
#heater_pin: PB10 # HE2
#sensor_pin: PF6 # T2
#...
#[filament_switch_sensor material_2]
#switch_pin: PG14
# Driver7
#[extruder3]
#step_pin: PE6
#dir_pin: PA14
#enable_pin: !PE0
#heater_pin: PB11 # HE3
#sensor_pin: PF7 # T3
#...
#[filament_switch_sensor material_3]
#switch_pin: PG15
[heater_bed]
heater_pin: PA1
sensor_pin: PF3 # TB
sensor_type: ATC Semitec 104GT-2
control: watermark
min_temp: 0
max_temp: 130
[fan]
pin: PA8
#[heater_fan fan1]
#pin: PE5
#[heater_fan fan2]
#pin: PD12
#[heater_fan fan3]
#pin: PD13
#[heater_fan fan4]
#pin: PD14
#[controller_fan fan5]
#pin: PD15
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
# CAN bus is also available on this board
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
########################################
# TMC2209 configuration
########################################
#[tmc2209 stepper_x]
#uart_pin: PC4
##diag_pin: PG6
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_y]
#uart_pin: PD11
##diag_pin: PG9
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 stepper_z]
#uart_pin: PC6
##diag_pin: PG10
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 stepper_]
#uart_pin: PC7
##diag_pin: PG11
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2209 extruder]
#uart_pin: PF2
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PE4
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder2]
#uart_pin: PE1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2209 extruder3]
#uart_pin: PD3
#run_current: 0.800
#stealthchop_threshold: 999999
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PC4
#spi_bus: spi1
##diag1_pin: PG6
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#cs_pin: PD11
#spi_bus: spi1
##diag1_pin: PG9
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#cs_pin: PC6
#spi_bus: spi1
##diag1_pin: PG10
#run_current: 0.650
#stealthchop_threshold: 999999
#[tmc2130 stepper_]
#cs_pin: PC7
#spi_bus: spi1
##diag1_pin: PG11
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#cs_pin: PF2
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#cs_pin: PE4
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#cs_pin: PE1
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
#[tmc2130 extruder3]
#cs_pin: PD3
#spi_bus: spi1
#run_current: 0.800
#stealthchop_threshold: 999999
[board_pins]
aliases:
# EXP1 header
EXP1_1=PE8, EXP1_2=PE7,
EXP1_3=PE9, EXP1_4=PE10,
EXP1_5=PE12, EXP1_6=PE13, # Slot in the socket on this side
EXP1_7=PE14, EXP1_8=PE15,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_2=PA5,
EXP2_3=PB1, EXP2_4=PA4,
EXP2_5=PB2, EXP2_6=PA7, # Slot in the socket on this side
EXP2_7=PC15, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PC5
# See the sample-lcd.cfg file for definitions of common LCD displays.
# A [probe] section can be defined instead with a pin: setting identical
# to the sensor_pin: for a bltouch
#[bltouch]
#sensor_pin: PB7
#control_pin: PB6
#z_offset: 0
#[neopixel my_neopixel]
#pin: PB0

View file

@ -153,3 +153,48 @@ aliases:
#uart_pin: PD12
#run_current: 0.600
#diag_pin:
########################################
# TMC2130 configuration
########################################
#[tmc2130 stepper_x]
#cs_pin: PE0
#spi_software_miso_pin: PA14
#spi_software_mosi_pin: PE14
#spi_software_sclk_pin: PE15
#run_current: 0.800
#diag1_pin: PC1
#[tmc2130 stepper_y]
#cs_pin: PD3
#spi_software_miso_pin: PA14
#spi_software_mosi_pin: PE14
#spi_software_sclk_pin: PE15
#run_current: 0.800
#diag1_pin: PC3
#[tmc2130 stepper_z]
#cs_pin: PD0
#spi_software_miso_pin: PA14
#spi_software_mosi_pin: PE14
#spi_software_sclk_pin: PE15
#run_current: 0.800
#diag1_pin: PC0
#[tmc2130 extruder]
#cs_pin: PC6
#spi_software_miso_pin: PA14
#spi_software_mosi_pin: PE14
#spi_software_sclk_pin: PE15
#run_current: 0.600
#diag1_pin: PC2
#[tmc2130 extruder1]
#cs_pin: PD12
#spi_software_miso_pin: PA14
#spi_software_mosi_pin: PE14
#spi_software_sclk_pin: PE15
#run_current: 0.600
#stealthchop_threshold: 999999
#diag1_pin: PA0

View file

@ -1,6 +1,8 @@
# This file contains common pin mappings for the BigTreeTech SKR 3.
# This board can ship with one of two chips, STM32H743 or STM32H723.
# To use this config, during "make menuconfig" enable "low-level
# options", "STM32H743", "128KiB bootloader", and "25MHz clock".
# options", "STM32H743" or "STM32H723", "128KiB bootloader",
# and "25MHz clock".
# See docs/Config_Reference.md for a description of parameters.

View file

@ -85,11 +85,10 @@ uart_pin: PC11
tx_pin: PC10
uart_address: 3
run_current: 0.650
stealthchop_threshold: 999999
[heater_bed]
heater_pin: PC9
sensor_type: ATC Semitec 104GT-2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
pid_Kp: 54.027

View file

@ -122,6 +122,12 @@ max_z_accel: 100
[static_digital_output usb_pullup_enable]
pins: !PA14
#[neopixel my_neopixel]
#pin: PA8
[output_pin red_led]
pin: PA13
[board_pins]
aliases:
# EXP1 header

View file

@ -106,6 +106,9 @@ pin: gpio18
[heater_fan controller_fan]
pin: gpio20
[temperature_sensor pico]
sensor_type: temperature_mcu
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00

View file

@ -95,4 +95,4 @@ max_z_accel: 100
aliases:
EXP1_1=PC6,EXP1_3=PB10,EXP1_5=PB14,EXP1_7=PB12,EXP1_9=<GND>,
EXP1_2=PB2,EXP1_4=PB11,EXP1_6=PB13,EXP1_8=PB15,EXP1_10=<5V>,
PROBE_IN=PB0,PROBE_OUT=PB1,FIL_RUNOUT=PC6
PROBE_IN=PB0,PROBE_OUT=PB1,FIL_RUNOUT=PA4

View file

@ -0,0 +1,152 @@
# This file contains common pin mappings for the Duet3 6HC. To use
# this config, the firmware should be compiled for the SAME70Q20B.
# To flash the board, erase the existing firmware by jumpering the erase jumper.
# Boot the board, wait for reset to complete, remove the jumper, and then reboot the board,
# as described in Duet's documentation:
# https://docs.duet3d.com/en/User_manual/RepRapFirmware/Updating_firmware#all-other-duet-boards
# Then run: make flash FLASH_DEVICE=/dev/ttyACM0
# See docs/Config_Reference.md for a description of parameters.
# Pins for reference, v1.02 board:
# Driver Step Pins - 0:PC18 1:PC16 2:PC28 3:PC1 4:PC4 5:PC9
# Driver Dir Pins - 0:PB5 1:PD10 2:PA4 3:PA22 4:PC3 5:PD14
# Driver Enable - !PA9
# Driver CS - PD17
# Thermistor Pins - TEMP0:PC15 TEMP1:PC29 TEMP2:PC30 TEMP3:PC31
# Pullup Resistor - 2200
# Vssa Sense:PC13 | Vref Sense:PC0
# Current Sense resistor for drivers - 0.05ohm
# SPI lines:{PC25} -> SPIMosi:PC27 SPIMiso:PC26 SPISCLK:PC24
# Vin Monitor:PA20
# CAN Pins - TX0:PB2 RX0:PB3 TX1:PD12 RX1:PC12
# Heaters - Out0:PA7 Out1:PA24 Out2:PA16 Out3:PA11
# Fan outputs - Out4:PA15 Out5:PC5 Out6:PA8 Out7:PC11 Out8:PC8 Out9:PA12 | Out9 is shared with VFD_Out
# Tach Pins for Fans - Out4.Tach:PC7 Out5.Tach:PD23 Out6.Tach:PA1
# GPIO_out - IO0:PD26 IO1:PD16 IO2:PD27 IO3:PA3 IO4:PE0 IO5:PD21 IO6:PA0 IO7:PD23 IO8:PE1
# GPIO_in - IO0:PD25 IO1:PD15 IO2:PD28 IO3:PE5 IO4:PD30 IO5:PA19 IO6:PA18 IO7:PA17 IO8:PE3
# Driver Diag - 0:PD29 1:PC17 2:PD13 3:PC2 4:PD31 5:PC10
[stepper_x]
#driver 0
step_pin: PC18
dir_pin: PB5
enable_pin: !PA9
microsteps: 128
rotation_distance: 40
endstop_pin: PD25 #IO0
position_endstop: 0
position_max: 450
[tmc5160 stepper_x]
cs_pin: PD17
spi_bus: usart1
chain_position: 1
chain_length: 6
interpolate: False
run_current: 1
sense_resistor: 0.05
[stepper_y]
#driver 1
step_pin: PC16
dir_pin: PD10
enable_pin: !PA9
microsteps: 128
rotation_distance: 40
endstop_pin: PD15 #IO1
position_endstop: 0
position_max: 450
[tmc5160 stepper_y]
cs_pin: PD17
chain_position: 2
chain_length: 6
interpolate: False
run_current: 1.0
sense_resistor: 0.05
[stepper_z]
#driver2
step_pin: PC28
dir_pin: PA4
enable_pin: !PA9
microsteps: 64
rotation_distance: 8
endstop_pin: PD28 #IO2
position_endstop: 0
position_min: 0
position_max: 400
[tmc5160 stepper_z]
cs_pin: PD17
chain_position: 3
chain_length: 6
interpolate: False
run_current: 1.0
sense_resistor: 0.05
[adc_scaled vref_scaled]
vref_pin: PC0
vssa_pin: PC13
[extruder]
#driver3
step_pin: PC1
dir_pin: PA22
enable_pin: !PA9
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA24 #Out1
sensor_type: ATC Semitec 104GT-2
pullup_resistor: 2200
sensor_pin: vref_scaled:PC29 #Temp1
control: pid
pid_Kp: 30.089
pid_Ki: 2.229
pid_Kd: 101.550
min_temp: 0
max_temp: 285
[tmc5160 extruder]
cs_pin: PD17
chain_position: 4
chain_length: 6
interpolate: False
run_current: .6
sense_resistor: 0.05
[heater_fan heatbreak_fan]
pin: PC8 #Out8
heater: extruder
heater_temp: 50.0
[heater_bed]
heater_pin: PA7 #Out0
sensor_type: Generic 3950
sensor_pin: vref_scaled:PC15 #Temp0
control: pid
pullup_resistor: 2200
pid_Kp: 61.049
pid_Ki: 2.339
pid_Kd: 398.344
min_temp: 0
max_temp: 130
[heater_fan heatbreak_fan]
pin: PA15 #Out4
[fan]
pin: PC5 #Out5
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: cartesian
max_velocity: 350
max_accel: 3000

View file

@ -0,0 +1,108 @@
# This file contains common pin mappings for the Duet3 6XD. To use
# this config, the firmware should be compiled for the SAME70Q20B.
# To flash the board, erase the existing firmware by jumpering the erase jumper.
# Boot the board, wait for reset to complete, remove the jumper, and then reboot the board,
# as described in Duet's documentation:
# https://docs.duet3d.com/en/User_manual/RepRapFirmware/Updating_firmware#all-other-duet-boards
# Then run: make flash FLASH_DEVICE=/dev/ttyACM0
# See docs/Config_Reference.md for a description of parameters.
# Pins for reference, v1.0 board:
# Driver Step Pins - 0:PC18 1:PC16 2:PC28 3:PC1 4:PC4 5:PC9
# Driver Dir Pins - 0:PB5 1:PD10 2:PA4 3:PA22 4:PC3 5:PD14
# Driver En Pins - 0:PB4 1:PA21 2:PC20 3:PA23 4:PA2 5:PD17
# Driver Err Pins - 0:PD29 1:PC17 2:PD13 3:PC2 4:PD31 5:PC10
# Thermistor Pins - TEMP0:PC15 TEMP1:PC29 TEMP2:PC0 TEMP3:PC31
# Pullup Resistor - 2200
# Vssa Sense:PC13 | Vref Sense:PC30
# SPI0:{PD19, PA5, PA6, PD20, PC22} -> SPIMosi:PB1 SPIMiso:PB0 SPISCLK:PB13
# SPI1:{PC25} -> SPIMosi:PC27 SPIMiso:PC26 SPISCLK:PC24 DATA_RDY:PE2
# Vin Monitor:PA20
# LED's - Diag:PB6, Act:PB7
# CAN Pins - TX0:PB2 RX0:PB3 TX1:PD12 RX1:PC12
# Heaters - Out0:PA24 Out1:PA16 Out2:PA11
# Fan outputs - Out3:PA15 Out4:PC5 Out5:PA8 Out6:PC11 Out7:PC8 Out8:PA12
# Tach Pins for Fans - Out3.Tach:PC7 Out4.Tach:PD23 Out5.Tach:PA1
# VFD - PA7
# GPIO_out - IO0:PD26 IO1:PD16 IO2:PD27 IO3:PA3 IO4:PE0 IO5:PD21 IO6:PA0 IO7:PD23 IO8:PE1
# GPIO_in - IO0:PD25 IO1:PD15 IO2:PD28 IO3:PE5 IO4:PD30 IO5:PA19 IO6:PA18 IO7:PA17 IO8:PE3
[stepper_x]
#driver 0
step_pin: PC18
dir_pin: PB5
enable_pin: PB4
microsteps: 128
rotation_distance: 40
endstop_pin: PD25 #IO0
position_endstop: 0
position_max: 450
[stepper_y]
#driver 1
step_pin: PC16
dir_pin: PD10
enable_pin: PA21
microsteps: 128
rotation_distance: 40
endstop_pin: PD15 #IO1
position_endstop: 0
position_max: 450
[stepper_z]
#driver2
step_pin: PC28
dir_pin: PA4
enable_pin: PC20
microsteps: 64
rotation_distance: 8
endstop_pin: PD28 #IO2
position_endstop: 0
position_min: 0
position_max: 400
[adc_scaled vref_scaled]
vref_pin: PC30
vssa_pin: PC13
[extruder]
#driver3
step_pin: PC1
dir_pin: PA22
enable_pin: PA23
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA24 #Out0
sensor_type: ATC Semitec 104GT-2
pullup_resistor: 2200
sensor_pin: vref_scaled:PC29 #Temp1
control: pid
pid_Kp: 30.089
pid_Ki: 2.229
pid_Kd: 101.550
min_temp: 0
max_temp: 285
[heater_fan heatbreak_fan]
pin: PC8 #Out7
heater: extruder
heater_temp: 50.0
[heater_fan heatbreak_fan]
pin: PA15 #Out3
[fan]
pin: PC5 #Out4
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: cartesian
max_velocity: 350
max_accel: 3000

View file

@ -0,0 +1,138 @@
# This file contains common pin mappings for the Fysetc Cheetah V2.0
# To use this config, the firmware should be compiled for the
# STM32F401 with a "32KiB bootloader".
# Rename "klipper.bin" to "firmware.bin", copy to Sdcard and insert in motherboard
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC0
dir_pin: PC1
enable_pin: !PA8
rotation_distance: 40
microsteps: 64
endstop_pin: ^PB4
position_endstop: 0
position_max: 200
homing_speed: 50
[tmc2209 stepper_x]
uart_pin: PA3
tx_pin: PA2
uart_address: 0
run_current: 0.800
interpolate: false
stealthchop_threshold: 0
[stepper_y]
step_pin: PC14
dir_pin: !PC13
enable_pin: !PC15
rotation_distance: 40
microsteps: 64
endstop_pin: ^PC8
position_endstop: 0
position_max: 200
homing_speed: 50
[tmc2209 stepper_y]
uart_pin: PA3
tx_pin: PA2
uart_address: 2
run_current: 0.800
interpolate: false
stealthchop_threshold: 0
[stepper_z]
step_pin: PB9
dir_pin: PB8
enable_pin: !PC2
rotation_distance: 8
microsteps: 64
endstop_pin: ^PB1
position_endstop: 0
position_max: 200
[tmc2209 stepper_z]
uart_pin: PA3
tx_pin: PA2
uart_address: 1
run_current: 0.800
interpolate: false
stealthchop_threshold: 0
[extruder]
step_pin: PB2
dir_pin: !PA15
enable_pin: !PD2
rotation_distance: 33.500
microsteps: 16
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC6
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
pid_kp: 21.527
pid_ki: 1.063
pid_kd: 108.982
min_temp: 0
max_temp: 250
[tmc2209 extruder]
uart_pin: PA3
tx_pin: PA2
uart_address: 3
run_current: 0.800
interpolate: false
stealthchop_threshold: 0
[heater_bed]
heater_pin: PC7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
pid_kp: 54.027
pid_ki: 0.770
pid_kd: 948.182
min_temp: 0
max_temp: 120
[fan]
pin: PA1
[heater_fan my_hotend_fan]
pin: PA13
heater: extruder
heater_temp: 50.0
[controller_fan my_controller_fan]
pin: PA14
heater: extruder, heater_bed
stepper: stepper_x, stepper_y, stepper_z, extruder
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 5000
max_z_velocity: 5
max_z_accel: 1000
[mcu]
serial: INSERTSERIALIDHERE
[board_pins]
aliases:
# EXP1 header
EXP1_1=<5V>, EXP1_3=<RST>, EXP1_5=PA7, EXP1_7=PA4, EXP1_9=PA5,
EXP1_2=<GND>, EXP1_4=PC3, EXP1_6=PC11, EXP1_8=PC10, EXP1_10=PA6,
# EXP2 header
EXP2_1=<5V>, EXP2_3=PB7, EXP2_5=PB14, EXP2_7=PB12, EXP2_9=PC12,
EXP2_2=<GND>, EXP2_4=PB6, EXP2_6=PB13, EXP2_8=PB15, EXP2_10=PC9,
# EXP3 header
EXP3_1=PC9, EXP3_3=PC10, EXP3_5=PC11, EXP3_7=PB12, EXP3_9=<GND>,
EXP3_2=PC12, EXP3_4=PB14, EXP3_6=PB13, EXP3_8=PB15, EXP3_10=<5V>
# Pins EXP1_4, EXP1_8, EXP1_6 are also MISO, MOSI, SCK of bus "spi2"

View file

@ -78,7 +78,7 @@ max_temp: 130
pin: PL5
#fan for hotend FAN1
#[heater_fan my_nozzle_fan]
#[heater_fan heatbreak_cooling_fan]
#pin: PL4
#shutdown_speed: 1

View file

@ -80,7 +80,7 @@ max_temp: 130
pin: PB0
#fan for hotend FAN1
#[heater_fan my_nozzle_fan]
#[heater_fan heatbreak_cooling_fan]
#pin: PB1
#shutdown_speed: 1

View file

@ -80,7 +80,7 @@ max_temp: 130
pin: PB0
#fan for hotend FAN1
#[heater_fan my_nozzle_fan]
#[heater_fan heatbreak_cooling_fan]
#pin: PB1
#shutdown_speed: 1

View file

@ -91,7 +91,7 @@ max_temp: 130
pin: PB0
#fan for hotend FAN1
#[heater_fan my_nozzle_fan]
#[heater_fan heatbreak_cooling_fan]
#pin: PB1
#shutdown_speed: 1

View file

@ -0,0 +1,241 @@
# This file contains common pin mappings for the LDO Leviathan v1.2.
# To use this config, during "make menuconfig", select "Enable
# low-level configuration options", select the STM32F446 micro-controller,
# select a "32KiB bootloader", and select a "12Mhz crystal".
# See docs/Config_Reference.md for a description of parameters.
# HV-STEPPER-0
[stepper_x]
step_pin: PB10
dir_pin: PB11
enable_pin: !PG0
microsteps: 32
rotation_distance: 40
endstop_pin: PC1 # X-ENDSTOP
position_endstop: 0
position_max: 200
homing_speed: 50
[tmc5160 stepper_x]
spi_bus: spi4
cs_pin: PE15
#diag0_pin: PG1
interpolate: False
sense_resistor: 0.075
run_current: 0.8
stealthchop_threshold: 0
# HV-STEPPER-1
[stepper_y]
step_pin: PF15
dir_pin: PF14
enable_pin: !PE9
microsteps: 32
rotation_distance: 40
endstop_pin: PC2 # Y-ENDSTOP
position_endstop: 0
position_max: 200
homing_speed: 50
[tmc5160 stepper_y]
spi_bus: spi4
cs_pin: PE11
#diag0_pin: PE10
interpolate: False
sense_resistor: 0.075
run_current: 0.8
stealthchop_threshold: 0
# STEPPER-0
[stepper_z]
step_pin: PD4
dir_pin: PD3
enable_pin: !PD7
microsteps: 32
rotation_distance: 8
endstop_pin: PC3 # Z-ENDSTOP
position_endstop: 0
position_max: 200
[tmc2209 stepper_z]
uart_pin: PD5
#diag_pin: PD6
interpolate: False
run_current: 0.6
stealthchop_threshold: 999999
# The Leviathan was developed for Voron printers. It therefore has several
# steppers for the z-axes, but only one heater for one extruder.
# STEPPER-1
#[stepper_z1]
#step_pin: PC12
#dir_pin: PC11
#enable_pin: !PD2
#microsteps: 32
#rotation_distance: 8
#
#[tmc2209 stepper_z1]
#uart_pin: PD5
##diag_pin: PD6
#interpolate: False
#run_current: 0.6
#stealthchop_threshold: 999999
# STEPPER-2
#[stepper_z2]
#step_pin: PC9
#dir_pin: PC8
#enable_pin: !PC10
#microsteps: 32
#rotation_distance: 8
#
#[tmc2209 stepper_z2]
#uart_pin: PA8
##diag_pin: PA15
#interpolate: False
#run_current: 0.6
#stealthchop_threshold: 999999
# STEPPER-3
#[stepper_z3]
#step_pin: PG7
#dir_pin: PG6
#enable_pin: !PC7
#microsteps: 32
#rotation_distance: 8
#
#[tmc2209 stepper_z2]
#uart_pin: PG8
##diag_pin: PC6
#interpolate: False
#run_current: 0.6
#stealthchop_threshold: 999999
# STEPPER-4
[extruder]
step_pin: PD10
dir_pin: PD9
enable_pin: !PD13
microsteps: 32
rotation_distance: 22.67
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PG10 # HEATER
sensor_pin: PA2 # TH1
sensor_type: ATC Semitec 104NT-4-R025H42G
pullup_resistor: 2200
control: pid
pid_Kp: 36.787
pid_Ki: 4.716
pid_Kd: 71.735
min_temp: 0
max_temp: 250
[tmc2209 stepper_z]
uart_pin: PD11
#diag_pin: PD12
interpolate: False
run_current: 0.5
stealthchop_threshold: 0
#[filament_switch_sensor material_0]
#switch_pin: PC0 # FILAMENT-SENSOR
[heater_bed]
heater_pin: PG11 # HEATBED
sensor_pin: PA1 # TH0
sensor_type: ATC Semitec 104GT-2
pullup_resistor: 2200
control: pid
pid_kp: 56.723
pid_ki: 5.561
pid_kd: 144.642
min_temp: 0
max_temp: 130
[fan]
pin: PB7 # FAN0
#tachometer_pin: PB0
#[heater_fan fan1]
#pin: PB3
#tachometer_pin: PB4
#[heater_fan fan2]
#pin: PF7
#tachometer_pin: PF6
#[controller_fan fan3]
#pin: PF9
#tachometer_pin: PF8
[mcu]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
# CAN bus is also available on this board
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[board_pins]
aliases:
# EXP1 header
EXP1_1=PG9, EXP1_2=PG12,
EXP1_3=PG13, EXP1_4=PG14,
EXP1_5=PC13, EXP1_6=PC14,
EXP1_7=PC15, EXP1_8=PF0,
EXP1_9=<GND>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_2=PA5,
EXP2_3=PE2, EXP2_4=PE4,
EXP2_5=PE3, EXP2_6=PA7,
EXP2_7=PE5, EXP2_8=<RST>,
EXP2_9=<GND>, EXP2_10=PE4,
# See the sample-lcd.cfg file for definitions of common LCD displays.
# EXTENSION PORT
EXP3_1=<5V>, EXP3_2=<5V>, # max. 0.5A
EXP3_3=<GND>, EXP3_4=<GND>,
EXP3_5=<3.3V>, EXP3_6=<3.3V>, # max. 0.5A
EXP3_7=PF5, EXP3_8=PF4,
EXP3_9=PF3, EXP3_10=PF2,
EXP3_11=PC4, EXP3_12=PC5, # EXP3_11 and EXP3_12 are ADC inputs
EXP3_13=PB0, EXP3_14=PB1, # EXP3_13 and EXP3_14 are ADC inputs
EXP3_15=PE8, EXP3_16=PE7, # EXP3_15 is UART5_TX, EXP3_16 is UART5_RX
EXP3_17=PG5, EXP3_18=PG4,
EXP3_19=PG3, EXP3_20=PG2,
EXP3_21=PD15, EXP3_22=PD14,
EXP3_23=PB15, EXP3_24=PB14, # EXP3_23 is SPI2_MOSI
# EXP3_24 is SPI2_MISO
EXP3_25=PB13, EXP3_26=PB12, # EXP3_25 is SPI2_SCK + CAN2_TX
# EXP3_26 is SPI2_CS + CAN2_RX
EXP3_27=<GND>, EXP3_28=<GND>,
EXP3_29=<24V>, EXP3_30=<24V>, # max. 0.5A
#[probe]
#sensor_pin: PF1 # Z-PROBE
#z_offset: 0
#[led my_led]
#white_pin: PE6 # LED-Strip
#[neopixel my_neopixel]
#pin: PF10 # NEOPIXEL
#[temperature_sensor TH2]
#sensor_type: ATC Semitec 104GT-2
#sensor_pin: PA0 # TH2
#pullup_resistor: 2200
#[temperature_sensor TH3]
#sensor_type: ATC Semitec 104GT-2
#sensor_pin: PA3 # TH3
#pullup_resistor: 2200

View file

@ -0,0 +1,232 @@
# This file contains common pin mappings for the Mellow Fly-E3-v2.
# To use this config, the firmware should be compiled for the
# STM32F407 with a "32KiB bootloader".
# The "make flash" command does not work on the Fly-E3-v2. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "firmware.bin" or "klipper.bin" on an SD card and then restart the Fly-E3-v2
# with that SD card.
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_27004A001851323333353137-if00
[stepper_x]
step_pin: PE5
dir_pin: PC0
enable_pin: !PC1
microsteps: 16
rotation_distance: 30
full_steps_per_rotation: 200
endstop_pin: PE7 #X-STOP
position_endstop: 0
position_max: 200
homing_speed: 50
second_homing_speed: 10
homing_retract_dist: 5.0
homing_positive_dir: false
step_pulse_duration: 0.000004
[stepper_y]
step_pin: PE4
dir_pin: !PC13
enable_pin: !PC14
microsteps: 16
rotation_distance: 30
full_steps_per_rotation: 200
endstop_pin: PE8 #Y-STOP
position_endstop: 0
position_max: 200
homing_speed: 50
second_homing_speed: 10
homing_retract_dist: 5.0
homing_positive_dir: false
step_pulse_duration: 0.000004
[stepper_z]
step_pin: PE1
dir_pin: !PB7
enable_pin: !PE3
microsteps: 16
rotation_distance: 30
full_steps_per_rotation: 200
endstop_pin: PE9 #Z-STOP
position_min: 0
position_endstop: 0
position_max: 200
homing_speed: 5
second_homing_speed: 3
homing_retract_dist: 5.0
homing_positive_dir: false
step_pulse_duration: 0.000004
[extruder]
step_pin: PE2
dir_pin: PD5
enable_pin: !PD6
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC6 #E0
########################################
# Extruder 100K thermistor configuration
########################################
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC4 #T0 TEMP
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 275
########################################
# Extruder MAX31865 PT100 2 wire config
########################################
# sensor_type: MAX31865
# sensor_pin: PD15 #PT-100
# spi_speed: 4000000
# spi_software_sclk_pin: PD12
# spi_software_mosi_pin: PD11
# spi_software_miso_pin: PD13
# rtd_nominal_r: 100
# rtd_reference_r: 430
# rtd_num_of_wires: 2
# rtd_use_50Hz_filter: True
min_temp: 0
max_temp: 300
#[extruder1]
#step_pin: PE0
#dir_pin: PD1
#enable_pin: !PD3
#microsteps: 16
#heater_pin: PC7 #E1
#sensor_pin: PC5 #T1 TEMP
########################################
# TMC2209 configuration
########################################
[tmc2209 stepper_x]
uart_pin: PC15
interpolate: False
run_current: 0.3
sense_resistor: 0.110
stealthchop_threshold: 999999
[tmc2209 stepper_y]
uart_pin: PB6
interpolate: False
run_current: 0.3
sense_resistor: 0.110
stealthchop_threshold: 999999
[tmc2209 stepper_z]
uart_pin: PD7
interpolate: False
run_current: 0.4
sense_resistor: 0.110
stealthchop_threshold: 999999
[tmc2209 extruder]
uart_pin: PD4
interpolate: False
run_current: 0.27
sense_resistor: 0.075
stealthchop_threshold: 999999
#[tmc2209 extruder1]
#uart_pin: PD0
#interpolate: False
#run_current: 0.27
#sense_resistor: 0.075
#stealthchop_threshold: 999999
#######################################
# Heated Bed
#######################################
[heater_bed]
heater_pin: PB0 #BED
sensor_type: Generic 3950
sensor_pin: PB1 #B-TEMP
max_power: 1.0
min_temp: 0
max_temp: 120
control: pid
pid_kp: 58.437
pid_ki: 2.347
pid_kd: 363.769
#######################################
# LIGHTING
#######################################
#[led Toolhead]
#white_pin: PA2 #FAN2
#cycle_time: 0.010
#initial_white: 0
#######################################
# COOLING
#######################################
[heater_fan hotend_fan]
pin: PA1 #FAN1
max_power: 1.0
kick_start_time: 0.5
heater: extruder
heater_temp: 50
fan_speed: 1.0
[controller_fan controller_fan]
pin: PA0 #FAN0
max_power: 1.0
kick_start_time: 0.5
heater: extruder
stepper: stepper_x, stepper_y, stepper_z
fan_speed: 1.0
idle_timeout: 60
[fan]
pin: PA3 #FAN3
max_power: 1.0
off_below: 0.2
[temperature_sensor Mellow_Fly_E3_V2]
sensor_type: temperature_mcu
min_temp: 5
max_temp: 80
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 50
max_z_accel: 100
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
EXP1_1=PD10, EXP1_3=PA8, EXP1_5=PE15, EXP1_7=PA14, EXP1_9=<GND>,
EXP1_2=PA9, EXP1_4=PA10, EXP1_6=PE14, EXP1_8=PA13, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_3=PB11, EXP2_5=PB10, EXP2_7=PE13, EXP2_9=<GND>,
EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=<RST>, EXP2_10=<NC>,
# See the sample-lcd.cfg file for definitions of common LCD displays.
#######################################
# BL-Touch
#######################################
#[bltouch]
#sensor_pin: PC2
#control_pin: PE6
#z_offset: 0

View file

@ -89,32 +89,32 @@ max_z_velocity: 5
max_z_accel: 100
[mcp4018 x_axis_pot]
scl_pin: PJ5
sda_pin: PF3
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PF3
wiper: 0.50
scale: 0.773
[mcp4018 y_axis_pot]
scl_pin: PJ5
sda_pin: PF7
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PF7
wiper: 0.50
scale: 0.773
[mcp4018 z_axis_pot]
scl_pin: PJ5
sda_pin: PK3
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PK3
wiper: 0.50
scale: 0.773
[mcp4018 a_axis_pot]
scl_pin: PJ5
sda_pin: PA5
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PA5
wiper: 0.50
scale: 0.773
[mcp4018 b_axis_pot]
scl_pin: PJ5
sda_pin: PJ6
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PJ6
wiper: 0.50
scale: 0.773

View file

@ -84,7 +84,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.3
value: 1.3
[output_pin stepper_z_current]
pin: PL4
@ -92,7 +92,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.3
value: 1.3
[output_pin stepper_e_current]
pin: PL5
@ -100,7 +100,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.25
value: 1.25
[static_digital_output stepper_config]
pins:

View file

@ -0,0 +1,268 @@
# This file contains common pin mappings for MKS Monster8
# boards. To use this config, the firmware should be compiled for the
# stm32f407. When running "make menuconfig", select the 48KiB
# bootloader, and enable "USB for communication".
# The "make flash" command does not work on the MKS Monster8. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "mks_monster8.bin" on an SD card or Udisk and then restart the
# MKS Monster8 with that SD card or Udisk.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC14
dir_pin: PC13
enable_pin: !PC15
microsteps: 16
rotation_distance: 40
endstop_pin: !PA14 # PA13 for X-max; endstop have'!' is NO
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_y]
step_pin: PE5
dir_pin: !PE4
enable_pin: !PC15
microsteps: 16
rotation_distance: 40
endstop_pin: !PA15 # PC5 for Y-max; endstop have'!' is NO
position_endstop: 0
position_max: 200
homing_speed: 50
[stepper_z]
step_pin: PE1
dir_pin: PE0
enable_pin: !PE2
microsteps: 16
rotation_distance: 8
endstop_pin: !PB13 # PB12 for Z-max; endstop have'!' is NO
position_endstop: 0
position_max: 220
[extruder]
step_pin: PB5
dir_pin: !PB4
enable_pin: !PB6
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
control: pid
pid_Kp: 22
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 260
#[extruder1]
#step_pin: PD6
#dir_pin: !PD5
#enable_pin: !PD7
#heater_pin: PB0
#sensor_pin: PC2
#[extruder2]
#step_pin: PD2
#dir_pin: !PD1
#enable_pin: !PD3
#heater_pin: PA3
#sensor_pin: PC3
#[extruder3]
#step_pin: PC7
#dir_pin: PC6
#enable_pin: !PC8
#[extruder4]
#step_pin: PD13
#dir_pin: !PD12
#enable_pin: !PD14
[heater_bed]
heater_pin: PB10
sensor_type: NTC 100K MGB18-104F39050L32
sensor_pin: PC0
max_power: 1.0
control: pid
pid_kp: 71.039
pid_ki: 2.223
pid_kd: 567.421
min_temp: 0
max_temp: 200
#fan for printed model FAN0
[fan]
pin: PA2
#fan for hotend FAN1
#[heater_fan my_nozzle_fan]
[heater_fan fan1]
pin: PA1
shutdown_speed: 1
#fan for control board FAN2
#[heater_fan my_control_fan]
[heater_fan fan2]
pin: PA0
shutdown_speed: 1
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f407xx_4D0045001850314335393520-if00
[printer]
kinematics: cartesian
max_velocity: 10000
max_accel: 20000
max_z_velocity: 100
max_z_accel: 1000
#####################################################################
# LED Control
#####################################################################
#[output_pin caselight ](Use PA9)
## Chamber Lighting - In 5V-RGB Position
#pin: PA9
#pwm: true
#shutdown_value: 0
#value:100
#cycle_time: 0.01
########################################
# TMC UART configuration
########################################
#[tmc2208 stepper_x]
#uart_pin: PE6
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 stepper_y]
#uart_pin: PE3
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 stepper_z]
#uart_pin: PB7
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 extruder]
#uart_pin: PB3
#run_current: 0.8
#hold_current: 0.5
#sense_resistor: 0.110
#stealthchop_threshold: 999999
#[tmc2208 extruder1]
#uart_pin: PD4
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 extruder2]
#uart_pin: PD0
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 extruder3]
#uart_pin: PD15
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
#[tmc2208 extruder4]
#uart_pin: PD11
#run_current: 0.8
#hold_current: 0.5
#stealthchop_threshold: 999999
########################################
# TMC SPI configuration
########################################
#[tmc2130 stepper_x]
#spi_bus: spi4
#cs_pin: PE6
#diag1_pin: PA14
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 stepper_y]
#spi_bus: spi4
#cs_pin: PE3
#diag1_pin: PA15
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 stepper_z]
#spi_bus: spi4
#cs_pin: PB7
#diag1_pin: PB13
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 extruder]
#spi_bus: spi4
#cs_pin: PB3
#diag1_pin: PA13
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 extruder1]
#spi_bus: spi4
#cs_pin: PD4
#diag1_pin: PC5
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 extruder2]
#spi_bus: spi4
#cs_pin: PD0
#diag1_pin: PB12
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 extruder3]
#spi_bus: spi4
#cs_pin: PD15
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
#[tmc2130 extruder4]
#spi_bus: spi4
#cs_pin: PD11
#run_current: 0.800
#hold_current: 0.500
#stealthchop_threshold: 999999
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=PB2, EXP1_3=PE11, EXP1_5=PD9, EXP1_7=PE15, EXP1_9=<GND>,
EXP1_2=PE10, EXP1_4=PD10, EXP1_6=PD8, EXP1_8=PE7, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_3=PE9, EXP2_5=PE8, EXP2_7=PB11, EXP2_9=<GND>,
EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=<RST>, EXP2_10=<3.3v>
# Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "ssp1"

117
config/generic-remram.cfg Normal file
View file

@ -0,0 +1,117 @@
# This file contains common pin mappings for remram boards. To use this
# config, the firmware should be compiled for the ST stm32f765.
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PA15
dir_pin: PC10
enable_pin: !PC12
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PB12 # X_MIN
position_endstop: 0
position_max: 200
homing_speed: 10
[tmc2130 stepper_x]
cs_pin: PB1
spi_bus: spi1
run_current: 0.600
stealthchop_threshold: 999999
diag1_pin: ^!PC11
[stepper_y]
step_pin: PB3
dir_pin: !PD6
enable_pin: !PD4
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PB14 # Y_MIN
position_endstop: 0
position_max: 200
homing_speed: 10
[tmc2130 stepper_y]
cs_pin: PB0
spi_bus: spi1
run_current: 0.600
stealthchop_threshold: 999999
diag1_pin: ^!PD5
[stepper_z]
step_pin: PB10
dir_pin: PE13
enable_pin: !PE15
microsteps: 16
rotation_distance: 8
endstop_pin: ^!PD8 # Z_MIN
position_endstop: 0.5
position_max: 200
homing_speed: 10
[tmc2130 stepper_z]
cs_pin: PC5
spi_bus: spi1
run_current: 0.600
stealthchop_threshold: 999999
diag1_pin: ^!PE14
[extruder]
step_pin: PB11
dir_pin: PE10
enable_pin: !PE11
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA3 # HEATER
sensor_type: Generic 3950
sensor_pin: PC1 # TEMP2
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
[tmc2130 extruder]
cs_pin: PC4
spi_bus: spi1
run_current: 0.600
stealthchop_threshold: 999999
diag1_pin: ^!PE12
[heater_fan hotend_fan]
pin: PA2 # FAN2
[heater_bed]
heater_pin: PA1 # BED OUT
sensor_type: Generic 3950
sensor_pin: PC0 # TEMP1
control: watermark
min_temp: 0
max_temp: 130
[fan] # Print cooling fan.
pin: PA0 # FAN1
# [temperature_sensor temp3]
# sensor_type: Generic 3950
# sensor_pin: PC2 # TEMP3
# min_temp: 0
# max_temp: 300
# gcode_id: temp3
[static_digital_output yellow_led]
pins: !PD0 # STATUS LED

View file

@ -1,4 +1,4 @@
# This file contains common pin mappings for the TH3D EZBoard Lite v2.
# This file contains common pin mappings for the TH3D EZBoard v2.
# To use this config, check "Enable extra low-level configuration options"
# and compile the firmware for the STM32F405 with 12mhz Crystal,
# 48KiB Bootloader, and USB communication.

View file

@ -97,7 +97,7 @@ max_z_accel: 30
[output_pin case_light]
pin: PH5
static_value: 1.0
value: 1.0
# Motor current settings.
[output_pin stepper_xy_current]
@ -107,7 +107,7 @@ scale: 2.000
# Max power setting.
cycle_time: .000030
hardware_pwm: True
static_value: 1.200
value: 1.200
# Power adjustment setting.
[output_pin stepper_z_current]
@ -116,7 +116,7 @@ pwm: True
scale: 2.000
cycle_time: .000030
hardware_pwm: True
static_value: 1.200
value: 1.200
[output_pin stepper_e_current]
pin: PL3
@ -124,4 +124,4 @@ pwm: True
scale: 2.000
cycle_time: .000030
hardware_pwm: True
static_value: 1.250
value: 1.250

View file

@ -89,7 +89,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.3
value: 1.3
[output_pin stepper_z_current]
pin: PL4
@ -97,7 +97,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.3
value: 1.3
[output_pin stepper_e_current]
pin: PL3
@ -105,7 +105,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.25
value: 1.25
[display]
lcd_type: st7920

View file

@ -126,7 +126,6 @@ restart_method: arduino
kinematics: cartesian
max_velocity: 150
max_accel: 3000
max_accel_to_decel: 1500
max_z_velocity: 7
max_z_accel: 50
square_corner_velocity: 5

View file

@ -0,0 +1,133 @@
# This file contains a configuration for the Anycubic Kobra Go printer.
#
# See docs/Config_Reference.md for a description of parameters.
#
# To build the firmware, use the following configuration:
# - Micro-controller: Huada Semiconductor HC32F460
# - Communication interface: Serial (PA3 & PA2) - Anycubic
#
# Installation:
# 1. Rename the klipper bin to `firmware.bin` and copy it to an SD Card.
# 2. Power off the Printer, insert the SD Card and power it on.
# 3. The the LCD will be stuck on the Firmware-update screen.
# Just Wait for 3-5 minutes to ensure the firmware is flashed.
# 4. After waiting, shutdown the printer and remove the SD Card.
[stepper_x]
step_pin: PA12
dir_pin: PA11
enable_pin: !PA15
microsteps: 16
rotation_distance: 40
endstop_pin: !PH2
position_endstop: -13
position_min:-13
position_max: 236
homing_speed: 50
[stepper_y]
step_pin: PA9
dir_pin: PA8
enable_pin: !PA15
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PC13
position_endstop: -9
position_min:-9
position_max: 230
homing_speed: 50
[stepper_z]
step_pin: PC7
dir_pin: !PC6
enable_pin: !PA15
microsteps: 16
rotation_distance: 8
endstop_pin: ^PC14
position_endstop: 0
position_min: -10
position_max: 255
homing_speed: 5
[extruder]
step_pin: PB15
dir_pin: PB14
enable_pin: !PA15
microsteps: 16
rotation_distance: 31.07
max_extrude_only_velocity: 25
max_extrude_only_accel: 1000
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB8
sensor_type: ATC Semitec 104GT-2
sensor_pin: PC3
min_extrude_temp: 170
min_temp: 0
max_temp: 250
control: pid
pid_kp: 19.56
pid_ki: 1.62
pid_kd: 200.00
[heater_bed]
heater_pin: PB9
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
min_temp: 0
max_temp: 120
control: pid
pid_kp: 97.1
pid_ki: 1.41
pid_kd: 1675.16
[bed_mesh]
speed: 200
horizontal_move_z: 2.5
mesh_min: 5, 5
mesh_max: 215, 215
probe_count: 5, 5
[probe]
pin: PA1
x_offset: -20.8
y_offset: 0
z_offset: 0
samples: 3
samples_result: average
samples_tolerance_retries: 3
sample_retract_dist: 0.5
speed: 2
lift_speed: 4
[safe_z_home]
home_xy_position: 0, 0
speed: 5
z_hop: 10
z_hop_speed: 15
[controller_fan controller_fan]
pin: PB12
[heater_fan extruder_fan]
pin: PB13
[fan]
pin: PB5
cycle_time: 0.00005 #20kHz
[output_pin enable_pin]
pin: PB6
value: 1
#This pin enables the bed, hotend, extruder fan, part fan.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 500
max_z_velocity: 4
max_z_accel: 100

View file

@ -0,0 +1,197 @@
# This file contains a configuration for the Anycubic Kobra Plus printer.
#
# The Kobra Plus mainboard must be modified to correct conflicting UART
# addresses. As delivered, the X stepper and E0 stepper use UART address 0.
# To correct, move resistor R65 to R66. This moves the X stepper to address 3.
#
# After making this modification, any future firmwares will need to use the new
# address for the X stepper. To revert to the stock firmware, either undo the
# modification, or recompile the stock firmware using the correct addresses for
# X_SLAVE_ADDRESS and E0_SLAVE_ADDRESS.
#
# See docs/Config_Reference.md for a description of parameters.
#
# To build the firmware, use the following configuration:
# - Micro-controller: Huada Semiconductor HC32F460
# - Communication interface: Serial (PA3 & PA2) - Anycube
# - Clock Speed: 200 MHz
#
# Installation:
# 1. Rename the klipper bin to `firmware.bin` and copy it to an SD Card.
# 2. Power off the Printer, insert the SD Card and power it on.
# 3. The printer should beep several times and the LCD will be stuck on the
# Splash screen.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 1800
max_z_velocity: 40
max_z_accel: 100
[stepper_x]
step_pin: PA5
dir_pin: PA4
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: !PA6
position_min: -4
position_endstop: -4
position_max: 304
homing_speed: 100
[tmc2209 stepper_x]
uart_pin: PA15
tx_pin: PA9
sense_resistor: 0.100
run_current: 0.9
uart_address: 3
stealthchop_threshold: 999999
[stepper_y]
step_pin: PC4
dir_pin: PA7
enable_pin: !PC3
microsteps: 16
rotation_distance: 32
endstop_pin: !PC5
position_min: -6
position_endstop: -6
position_max: 300
homing_speed: 100
[tmc2209 stepper_y]
uart_pin: PA15
tx_pin: PA9
sense_resistor: 0.100
run_current: 0.9
uart_address: 1
stealthchop_threshold: 999999
[stepper_z]
step_pin: PC7
dir_pin: !PC6
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: PA8
position_endstop: 0
position_min: -15
position_max: 350
homing_speed: 10
[tmc2209 stepper_z]
uart_pin: PA15
tx_pin: PA9
sense_resistor: 0.100
run_current: 0.9
uart_address: 2
stealthchop_threshold: 999999
[stepper_z1]
step_pin: PB1
dir_pin: !PB0
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
[extruder]
max_extrude_only_distance: 200
max_extrude_only_velocity: 60
max_extrude_only_accel: 3000
step_pin: PC14
dir_pin: !PC15
enable_pin: !PC3
microsteps: 16
rotation_distance: 7.71
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
min_extrude_temp: 170
control: pid
pid_kp: 22.20
pid_ki: 1.08
pid_kd: 119.0
min_temp: 0
max_temp: 275
[tmc2208 extruder]
uart_pin: PA15
tx_pin: PA9
sense_resistor: 0.100
run_current: 0.8
uart_address: 0
stealthchop_threshold: 999999
[heater_bed]
heater_pin: PA0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
control: pid
pid_kp: 97.1
pid_ki: 1.41
pid_kd: 1675.16
min_temp: 0
max_temp: 120
[filament_switch_sensor runout]
pause_on_runout: True
switch_pin: !PC13
[controller_fan controller_fan]
pin: PA14
heater: heater_bed
[heater_fan hotend_fan]
pin: PA13
[fan]
pin: PB9
[probe]
pin: !PB6
speed: 2.0
lift_speed: 4.0
samples: 2
sample_retract_dist: 5
samples_tolerance_retries: 3
z_offset: 0.2
activate_gcode: probe_reset
[output_pin probe_reset_pin]
pin: PB7
value: 1
[safe_z_home]
home_xy_position: 0, 0
speed: 100
z_hop: 10
z_hop_speed: 15
move_to_previous: False
[bed_mesh]
speed: 100
mesh_min: 10, 10
mesh_max: 290, 290
algorithm: bicubic
probe_count: 5, 5
[gcode_macro probe_reset]
gcode:
SET_PIN PIN=probe_reset_pin VALUE=0
G4 P300
SET_PIN PIN=probe_reset_pin VALUE=1
G4 P100
[output_pin LED]
pin: PB8
[output_pin beeper]
pin: PB5

View file

@ -102,6 +102,10 @@ max_temp: 110
[fan]
pin: PA0
[controller_fan controller_fan]
pin: PA14
stepper: stepper_x,stepper_y,stepper_z,stepper_z1
[probe]
pin: !PB12
z_offset: 0

View file

@ -0,0 +1,126 @@
# This file contains pin mappings for the Artillery Genius Pro (2022)
# with a Artillery_Ruby-v1.2 board. To use this config, during "make menuconfig"
# select the STM32F401 with "No bootloader" and USB (on PA11/PA12)
# communication.
# To flash this firmware, set the physical bridge between +3.3V and Boot0 PIN
# on Artillery_Ruby mainboard. Then run the command:
# make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f401xc_*-if00
# See docs/Config_Reference.md for a description of parameters.
[extruder]
max_extrude_only_distance: 700.0
step_pin: PA7
dir_pin: PA6
enable_pin: !PC4
microsteps: 16
rotation_distance: 7.1910
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC9
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
min_temp: 0
max_temp: 250
control: pid
pid_Kp: 23.223
pid_Ki: 1.518
pid_Kd: 88.826
[stepper_x]
step_pin: !PB14
dir_pin: PB13
enable_pin: !PB15
microsteps: 16
rotation_distance: 40
endstop_pin: !PA2
position_endstop: 0
position_max: 220
homing_speed: 60
[stepper_y]
step_pin: PB10
dir_pin: PB2
enable_pin: !PB12
microsteps: 16
rotation_distance: 40
endstop_pin: !PA1
position_endstop: 0
position_max: 220
homing_speed: 60
[stepper_z]
step_pin: PB0
dir_pin: !PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 250
position_min: -5
[heater_bed]
heater_pin: PA8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
min_temp: 0
max_temp: 130
control: pid
pid_Kp: 23.223
pid_Ki: 1.518
pid_Kd: 88.826
[bed_screws]
screw1: 38,45
screw2: 180,45
screw3: 180,180
screw4: 38,180
[fan]
pin: PC8
off_below: 0.1
[heater_fan hotend_fan]
pin: PC7
heater: extruder
heater_temp: 50.0
[controller_fan stepper_fan]
pin: PC6
idle_timeout: 300
[mcu]
serial: /dev/serial/by-id/usb-Klipper_stm32f401xc_
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 4000
max_z_velocity: 50
square_corner_velocity: 5.0
max_z_accel: 100
[bltouch]
sensor_pin: PC2
control_pin: PC3
x_offset:27.25
y_offset:-12.8
z_offset: 0.25
speed:10
samples:1
samples_result:average
[bed_mesh]
speed: 800
mesh_min: 30, 20
mesh_max: 210, 200
probe_count: 5,5
algorithm: bicubic
move_check_distance: 3.0
[safe_z_home]
home_xy_position: 110,110
speed: 100
z_hop: 10
z_hop_speed: 5

View file

@ -132,9 +132,9 @@ screw1_name: front left
screw2: 223,63
screw2_name: front right
screw3: 223,263
screw3_name: back left
screw3_name: back right
screw4: 23,263
screw4_name: back right
screw4_name: back left
speed: 100.0
screw_thread: CW-M5

View file

@ -0,0 +1,188 @@
# For the Artillery Sidewinder X3 Pro/Plus that came factory installed with V1.29 firmware, follow these steps.
# - Compile with the processor model STM32F401.
# - Select the 48KiB bootloader,
# - Select USB PA11/PA12 for USB communication interface.
# - Select USART2 PA3/PA2 for UART communication via the Wi-Fi Tx/Rx pins
# To set 48KiB bootloader, you need to make a change to make menuconfig Kconfig file
# Here is a link to a how-to video: https://youtu.be/dpc76zN7Dh0
# Rename klipper.bin to yuntu.bin
# Copy the file out/yuntu.bin to an SD card and then restart the printer with that SD card
#
# For models that did not come with V1.29 installed
# - Compile with the processor model STM32F401.
# - Select the NO BOOTLOADER
# - Select USB PA11/PA12 for USB communication interface.
# - Select USART2 PA3/PA2 for UART communication via the Wi-Fi Tx/Rx pins
# - quit, save, make
# - Connect your printer to a computer running Pronterface, Octoprint, Repetier, BedLeveler5000 (anything with Console capability)
# - Power on the machine and send M997 through console into Marlin, this will put the board into "DFU" mode
# - DO NOT TURN OFF THE PRINTER
# - Connect your Linux/Klipper device to the USB port
# - Run lsusb and verify that the STM32 DFU device is visible (Bus 001 Device 006: ID 0483:df11 STMicroelectronics STM Device in DFU Mode)
# - Run sudo make flash 0483:df11
# - Run lsusb again and there should be two devices:
# Bus 001 Device 007: ID 1d50:614e OpenMoko, Inc. stm32f401xc
# Bus 001 Device 003: ID 0cf3:e010 Qualcomm Atheros Communications stm32f401xc
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/ttyACM0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 15
max_z_accel: 100
square_corner_velocity: 5
[led LED_Light]
white_pin: PC2
initial_white: 1.0
[neopixel hotend_neopixel]
pin: PD2
color_order: GRB
initial_RED: 1.0
initial_GREEN: 1.0
initial_BLUE: 1.0
[stepper_x]
step_pin: PA8
dir_pin: PC9
enable_pin: !PA15
microsteps: 16
rotation_distance: 40
endstop_pin: !PB9
position_min: 0
position_endstop: 0
position_max: 315
homing_speed: 50
[stepper_y]
step_pin: PC7
dir_pin: !PC6
enable_pin: !PC8
microsteps: 16
rotation_distance: 40
endstop_pin: !PB8
position_endstop: 0
position_max: 315
homing_speed: 50
[stepper_z]
step_pin: PB10
dir_pin: !PA4
enable_pin: !PC4
rotation_distance: 8
microsteps: 16
position_min: -1
position_max: 400
endstop_pin: probe:z_virtual_endstop # Use Z- as endstop
#homing_speed: 10.0
[extruder]
max_extrude_only_distance: 100.0
step_pin: PC11
dir_pin: !PC10
enable_pin: !PC12
microsteps: 64
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA6
sensor_type: EPCOS 100K B57560G104F #Generic 3950
sensor_pin: PC5
min_extrude_temp: 170
min_temp: 0
max_temp: 300
# Calibrate E-Steps https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders
rotation_distance: 17.75
# Calibrate PID: https://www.klipper3d.org/Config_checks.html#calibrate-pid-settings
# - Example: PID_CALIBRATE HEATER=extruder TARGET=200
control: pid
pid_kp: 30.356
pid_ki: 1.857
pid_kd: 124.081
# Calibrate PA: https://www.klipper3d.org/Pressure_Advance.html
[heater_bed]
heater_pin: PA7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
max_temp: 100
min_temp: 0
# Calibrate PID: https://www.klipper3d.org/Config_checks.html#calibrate-pid-settings
# - Example: PID_CALIBRATE HEATER=heater_bed TARGET=60
control: pid
pid_kp: 64.230
pid_ki: 0.723
pid_kd: 1425.905
[heater_fan hotend_fan]
pin: PB1
heater: extruder
heater_temp: 50.0
[fan]
pin: PB0
[temperature_fan Artillery_MCU]
sensor_type: temperature_mcu
pin: PA5
max_temp: 60.0
target_temp: 40.0
min_temp: 0
shutdown_speed: 0.0
kick_start_time: 0.5
off_below: 0.19
max_speed: 1.0
min_speed: 0.0
control: watermark
[filament_switch_sensor filament_sensor]
pause_on_runout: true
switch_pin: PC1
[probe]
pin: PC14
x_offset:45.2
y_offset:11.6
speed:5
lift_speed:15
z_offset: 2.350
[safe_z_home]
home_xy_position: 110, 145 # X, Y coordinate (e.g. 100, 100) where the Z homing should be
speed: 300.0
z_hop: 10
z_hop_speed: 15.0
[bed_mesh]
speed: 300
horizontal_move_z: 6
mesh_min: 46,15
mesh_max: 300,300
probe_count: 10, 10
fade_start: 1.0
fade_end: 0.0
algorithm: bicubic
[screws_tilt_adjust]
screw1: 120, 153
screw1_name: center reference
screw2: 7, 45
screw2_name: front left
screw3: 210, 45
screw3_name: front right
screw4: 227, 145
screw4_name: right center
screw5: 210, 245
screw5_name: rear right
screw6: 7, 245
screw6_name: rear left
screw7: 7, 145
screw7_name: left center
horizontal_move_z: 8
speed: 300
screw_thread: CW-M4

View file

@ -6,7 +6,8 @@
# communication. Enable PA0 GPIO pin on startup.
#
# Flash this firmware on the MCU by copying "out/klipper.bin" to an SD
# card and turning the printer on with the card inserted. The firmware
# card and turning the printer on by pressing and holding the power
# button with the card inserted for 10-20 seconds. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed.
#

View file

@ -0,0 +1,154 @@
# This file contains pin mappings for the Creality CR-10S Pro V2. To use
# this config, the firmware should be compiled for the AVR atmega2560.
# See docs/Config_Reference.md for a description of parameters.
## General Config
[mcu]
serial: /dev/serial/by-id/<YOUR_USB_ID>
[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 1500
max_z_velocity: 10
max_z_accel: 100
## Stepper Motors and Extruder
[stepper_x]
step_pin: PF0 #ar54
dir_pin: PF1 #ar55
enable_pin: !PD7 #!ar38
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200
endstop_pin: ^PE5 #^ar3
position_endstop: 0
position_min: 0
position_max: 300
homing_speed: 50
homing_retract_dist: 5
[stepper_y]
step_pin: PF6 #ar60
dir_pin: !PF7 #ar61
enable_pin: !PF2 #!ar56
rotation_distance: 40
microsteps: 16
full_steps_per_rotation: 200
endstop_pin: ^PJ1 #^ar14
position_endstop: 0
position_min: 0
position_max: 310
homing_speed: 50
homing_retract_dist: 5
[stepper_z]
step_pin: PL3 #ar46
dir_pin: !PL1 #!ar48
enable_pin: !PK0 #!ar62
rotation_distance: 8
microsteps: 16
full_steps_per_rotation: 200
endstop_pin: probe:z_virtual_endstop
position_min: -3
position_max: 363 # you can go higher but then the cables crimp
[extruder]
step_pin: PA4 # ar26
dir_pin: PA6 # !ar28
enable_pin: !PA2 # !ar24
rotation_distance: 22.900
microsteps: 16
full_steps_per_rotation: 200
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 500.0
max_extrude_only_velocity: 70.0
max_extrude_only_accel: 1000.0
heater_pin: PB4 #ar10
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5 #analog13
control: pid #calibrated in Klipper, you will need to run this for your machine
pid_kp: 28.359
pid_ki: 1.616
pid_kd: 124.426
min_extrude_temp: 170
min_temp: 5
max_temp: 275
[fan]
pin: PH6 #ar9
[heater_bed]
heater_pin: PH5 #ar8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK6 #analog14
control: pid #calibrated in Klipper, you will need to run this for your machine
pid_kp: 70.936
pid_ki: 1.151
pid_kd: 1093.298
min_temp: 5
max_temp: 140
## BLTouch and Safe Z Settings
[bltouch]
sensor_pin: ^PD2
control_pin: PB5
stow_on_each_sample: False # Be careful
probe_with_touch_mode: True
x_offset: -27
y_offset: -2
z_offset: 2 # you will need to calibrate this in Klipper
speed: 4.0
samples: 2
sample_retract_dist: 3.0
[safe_z_home]
home_xy_position: 177,155
speed: 80.0
z_hop: 10.0
z_hop_speed: 5.0
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 5, 5
mesh_max: 268, 305
probe_count: 5,5
fade_start: 1
fade_end: 10
[filament_switch_sensor e0_sensor]
switch_pin: PE4 #ar2
pause_on_runout: False
runout_gcode:
PAUSE_PARK
## Calibrating the Bed
# this is for the bltouch to calibrate the bed
[screws_tilt_adjust]
screw1: 40,40
screw1_name: front left screw
screw2: 295,40
screw2_name: front right screw
screw3: 295,280
screw3_name: rear right screw
screw4: 40,280
screw4_name: rear left screw
speed: 50
horizontal_move_z: 10
screw_thread: CW-M3
[bed_screws]
screw1: 13,38
screw1_name: front left screw
screw2: 268,38
screw2_name: front right screw
screw3: 268,278
screw3_name: rear right screw
screw4: 13,38
screw4_name: rear left screw
horizontal_move_z: 5
[pause_resume]

View file

@ -98,7 +98,6 @@ max_temp: 100
[output_pin led]
pin: PC14
static_value: 0
# Neopixel LED support
# [neopixel led_neopixel]

View file

@ -0,0 +1,152 @@
# This file contains common pin mappings for the Creality CR5 Pro HT.
# The mainboard is a Creality 3D v2.5.1 (8-bit mainboard with
# ATMega2560). To use this config, the firmware should be compiled for
# the AVR atmega2560.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PF0 #ar54
dir_pin: !PF1 #ar55
enable_pin: !PD7 #!ar38
microsteps: 16
rotation_distance: 40 # 16 microsteps * 200 steps/rotation / 80 steps/mm
endstop_pin: ^!PE5 #^ar3
position_min: 0
position_max: 300
position_endstop: 0
homing_speed: 50
[stepper_y]
step_pin: PF6 #ar60
dir_pin: !PF7 #ar61
enable_pin: !PF2 #!ar56
microsteps: 16
rotation_distance: 40 # 16 microsteps * 200 steps/rotation / 80 steps/mm
endstop_pin: ^!PJ1 #^ar14
position_endstop: 0
position_max: 220
homing_speed: 50
[stepper_z]
step_pin: PL3 #ar46
dir_pin: !PL1 #!ar48
enable_pin: !PK0 #!ar62
microsteps: 16
rotation_distance: 4 # 16 microsteps * 200 steps/rotation / 800 steps/mm
position_max: 380
position_min: -10
endstop_pin: probe:z_virtual_endstop
[safe_z_home]
home_xy_position: 140, 110
speed: 80
z_hop: 10
z_hop_speed: 10
[extruder]
step_pin: PA4 # ar26
dir_pin: !PA6 # !ar28
enable_pin: !PA2 # !ar24
microsteps: 16
rotation_distance: 23.24736 # 16 microsteps * 200 steps/rotation / 137.65 steps/mm
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4 #ar10
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5 #analog13
control: pid
pid_kp: 17.647
pid_ki: 1.079
pid_kd: 72.131
min_temp: 0
max_temp: 300
[heater_bed]
heater_pin: PH5 #ar8
sensor_type: ATC Semitec 104GT-2
sensor_pin: PK6 #analog14
control: pid
pid_kp: 75.501
pid_ki: 2.542
pid_kd: 560.598
min_temp: 0
max_temp: 130
[fan]
pin: PH6 #ar9
[mcu]
serial: /dev/ttyUSB0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 2000
max_z_velocity: 5
max_z_accel: 100
#[display]
# DWIN screen currently unsupported
[bltouch]
sensor_pin: ^PD2 #^ar19
control_pin: PB5 #ar11
set_output_mode: 5V
pin_move_time: 0.4
x_offset: 37.0
y_offset: 0.0
z_offset: 2.40
samples: 2
sample_retract_dist: 2
samples_result: average
[bed_mesh]
speed: 50
horizontal_move_z: 6
mesh_min: 47,10
mesh_max: 270,210
probe_count: 7,7
algorithm: bicubic
[pause_resume]
recover_velocity: 50
[filament_switch_sensor fil_runout_sensor]
pause_on_runout: True
switch_pin: !PE4 #ar2
[bed_screws]
screw1: 8,5
screw1_name: front left screw
screw2: 8,210
screw2_name: rear left screw
screw3: 218,210
screw3_name: rear right screw
screw4: 218,5
screw4_name: front right screw
[screws_tilt_adjust]
screw1: 8,5
screw1_name: front left screw
screw2: 8,210
screw2_name: rear left screw
screw3: 218,210
screw3_name: rear right screw
screw4: 218,5
screw4_name: front right screw
speed: 50
horizontal_move_z: 10
screw_thread: CW-M4
[output_pin case_light]
pin: PH4 #ar7
value: 1
[gcode_macro CASE_LIGHT_ON]
gcode:
SET_PIN PIN=case_light VALUE=1
[gcode_macro CASE_LIGHT_OFF]
gcode:
SET_PIN PIN=case_light VALUE=0

View file

@ -1,4 +1,5 @@
# This file contains pin mappings for the stock 2020 Creality CR6-SE.
# This file contains pin mappings for the stock 2020 Creality CR6-SE
# with the early 4.5.2 board only.
# To use this config, during "make menuconfig" select the STM32F103
# with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
@ -98,6 +99,10 @@ z_offset: 0.0
speed: 2.0
samples: 5
[safe_z_home]
home_xy_position: 117, 117
z_hop: 10
[filament_switch_sensor filament_sensor]
pause_on_runout: true
switch_pin: ^!PA7

View file

@ -1,4 +1,6 @@
# This file contains pin mappings for the Creality CR6-SE with Rev. 4.5.3 Motherboard (Late 2020/2021) as the heater pins changed.
# This file contains pin mappings for the Creality CR6-SE
# with Rev. 4.5.3 Motherboard (Late 2020/2021) as the heater pins changed.
# This config also works for the CR-ERA_V1.1.0.3
# To use this config, during "make menuconfig" select the STM32F103
# with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
@ -98,6 +100,10 @@ z_offset: 0.0
speed: 2.0
samples: 5
[safe_z_home]
home_xy_position: 117, 117
z_hop: 10
[filament_switch_sensor filament_sensor]
pause_on_runout: true
switch_pin: ^!PA7

View file

@ -5,7 +5,7 @@
# If you prefer a direct serial connection, in "make menuconfig"
# select "Enable extra low-level configuration options" and select
# serial (on USART3 PB11/PB10), which is broken out on the 10 pin IDC
# serial (on USART2 PA3/PA2), which is broken out on the 10 pin IDC
# cable used for the LCD module as follows:
# 3: Tx, 4: Rx, 9: GND, 10: VCC

View file

@ -0,0 +1,95 @@
# This file contains pin mappings for the Creality Ender2 Pro
# with the HC32F460. The board is CR-FDM-v2.5.S4.170
# To use this config, during "make menuconfig" select HC32F460
# Flash this firmware by copying "out/klipper.bin" to a SD card
# as /user/firmware.bin
# Turn on the printer with the card inserted.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC1
dir_pin: PC0
enable_pin: !PC2
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_min: -20
position_endstop: -20
position_max: 165
homing_speed: 50
[stepper_y]
step_pin: PB9
dir_pin: PB8
enable_pin: !PH2
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_min: -5
position_endstop: -5
position_max: 165
homing_speed: 50
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PB7
microsteps: 16
rotation_distance: 8
endstop_pin: ^PB0
position_endstop: 0.0
position_max: 180
[extruder]
max_extrude_only_distance: 100.0
step_pin: PB3
dir_pin: PA15
enable_pin: !PB4
microsteps: 16
rotation_distance: 27.53480577
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_pin: PC5
sensor_type: Generic 3950
control: pid
pid_Kp: 29.634
pid_Ki: 2.102
pid_Kd: 104.459
min_temp: 0
max_temp: 260
[heater_bed]
heater_pin: PB10
sensor_type: Generic 3950
sensor_pin: PC4
control: pid
pid_Kp: 72.921
pid_Ki: 1.594
pid_Kd: 834.031
min_temp: 0
max_temp: 80
[fan]
pin: PA0
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[display]
lcd_type: st7920
cs_pin: PB15
sclk_pin: PB14
sid_pin: PB12
encoder_pins: ^PB13,^PA2
click_pin: ^!PC7

View file

@ -110,8 +110,8 @@ stow_on_each_sample: false
[bed_mesh]
speed: 120
mesh_min: 20, 20
mesh_max: 200, 197
mesh_min: 10, 10
mesh_max: 200, 194
probe_count: 4,4
algorithm: bicubic
@ -120,7 +120,6 @@ home_xy_position: 147, 154
speed: 75
z_hop: 10
z_hop_speed: 5
move_to_previous: true
[filament_switch_sensor e0_sensor]
switch_pin: !PC15
@ -129,3 +128,9 @@ runout_gcode: PAUSE
[pause_resume]
recover_velocity: 25
[bed_screws]
screw1: 20, 29
screw2: 195, 29
screw3: 195, 198
screw4: 20, 198

View file

@ -120,7 +120,6 @@ home_xy_position: 187, 192
speed: 75
z_hop: 10
z_hop_speed: 5
move_to_previous: true
[filament_switch_sensor e0_sensor]
switch_pin: !PC15

View file

@ -0,0 +1,155 @@
# This file contains pin mappings for the stock 2022 Creality Ender 3
# V2 Neo. To use this config, during "make menuconfig" select the
# STM32F103 with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
# If you prefer a direct serial connection, in "make menuconfig"
# select "Enable extra low-level configuration options" and select
# serial (on USART3 PB11/PB10), which is broken out on the 10 pin IDC
# cable used for the LCD module as follows:
# 3: Tx, 4: Rx, 9: GND, 10: VCC
# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed.
# This also works for the GD32F303 based Creality 4.2.2 board.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 0
position_max: 235
homing_speed: 80
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 0
position_max: 235
homing_speed: 80
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 250
homing_speed: 4
second_homing_speed: 1
homing_retract_dist: 2.0
[extruder]
max_extrude_only_distance: 100.0
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 34.406
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
# tuned for stock hardware with 70 degree Celsius target
pid_kp: 70.405
pid_ki: 1.229
pid_kd: 1008.553
min_temp: 0
max_temp: 130
[fan]
pin: PA0
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 5000
max_z_velocity: 5
square_corner_velocity: 5.0
max_z_accel: 100
[bltouch]
sensor_pin: ^PB1
control_pin: PB0
x_offset: -45.0
y_offset: -10.0
z_offset: 0
speed: 20
samples: 1
sample_retract_dist: 8.0
[safe_z_home]
home_xy_position: 160,120
speed: 150
z_hop: 10
z_hop_speed: 10
[bed_mesh]
speed: 120
mesh_min: 30,30 # Need to handle head distance with cr-touch (bl_touch)
mesh_max: 189,189 # Max probe range
probe_count: 5,5
fade_start: 1
fade_end: 10
fade_target: 0
algorithm: bicubic
[bed_screws]
screw1:30,25
screw1_name:1
screw2:200,25
screw2_name:2
screw3:200,195
screw3_name:3
screw4:30,195
screw4_name:4
[screws_tilt_adjust]
screw1: 67, 42
screw1_name: front left screw
screw2: 237.60, 42
screw2_name: front right screw
screw3: 237.60, 212
screw3_name: rear right screw
screw4: 67.60, 212
screw4_name: rear left screw
horizontal_move_z: 10
speed: 200
screw_thread: CW-M4 # Use CW for Clockwise and CCW for Counter Clockwise
# [display]
# The Ender 3 v2 Neo's 4.3" LCD display is not supported by klipper
[output_pin beeper]
pin: PB13

View file

@ -1,10 +1,12 @@
# This file contains common pin mappings for the 2019 Creality
# Ender 5. To use this config, the firmware should be compiled for the
# AVR atmega1284p.
# AVR atmega1284p. This also works for the v1.1.5 silent boards.
# Note, a number of Melzi boards are shipped with a bootloader that
# requires the following command to flash the board:
# avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex
# For v1.1.5 silent boards, the following command is used:
# avrdude -p atmega1284p -c arduino -P /dev/ttyUSB0 -b 115200 -U flash:w:out/klipper.elf.hex
# If the above command does not work and "make flash" does not work
# then one may need to flash a bootloader to the board - see the
# Klipper docs/Bootloaders.md file for more information.
@ -80,6 +82,8 @@ pin: PB4
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
# Silent boards tend to have the exact same serial ID, except without USB2.0, using USB instead.
# e.g. /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
[printer]
kinematics: cartesian

View file

@ -0,0 +1,170 @@
# Creality Ender 5 S1 (HW version: CR4NS200141C13)
#
# printer_size: 220x220x280
# To use this config, during "make menuconfig" select the STM32F401
# with a "64KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
#
# Flash this firmware by creating a directory named "STM32F4_UPDATE"
# on an SD card, copying the "out/klipper.bin" to it and then turn
# on the printer with the card inserted. The firmware filename must
# end in ".bin" and must not match the last filename that was flashed.
#
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
rotation_distance: 40
microsteps: 16
endstop_pin: !PA5
position_endstop: 220
position_max: 222
homing_speed: 80
[stepper_y]
step_pin: PB8
dir_pin: !PB7
enable_pin: !PC3
rotation_distance: 40
microsteps: 16
endstop_pin: !PA6
position_endstop: 220
position_max: 220
homing_speed: 80
[stepper_z]
step_pin: PB6
dir_pin: PB5
enable_pin: !PC3
rotation_distance: 8
microsteps: 16
endstop_pin: probe:z_virtual_endstop
position_max: 280
homing_speed: 20
second_homing_speed: 1
homing_retract_dist: 2.0
[extruder]
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
rotation_distance: 7.5
microsteps: 16
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid # tuned for stock hardware with 210 degree Celsius target
pid_kp: 20.749
pid_ki: 1.064
pid_kd: 101.153
min_temp: 0
max_temp: 305
[heater_bed]
heater_pin: PA7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid # tuned for stock hardware with 60 degree Celsius target
pid_kp: 66.566
pid_ki: 0.958
pid_kd: 1155.761
min_temp: 0
max_temp: 110
# Part cooling fan
[fan]
pin: PA0
kick_start_time: 0.5
# Hotend fan
# set fan runnig when extruder temperature is over 60
[heater_fan heatbreak_fan]
pin: PC0
heater:extruder
heater_temp: 60
fan_speed: 0.8
[filament_switch_sensor filament_sensor]
pause_on_runout: true
switch_pin: ^!PC15
# Stock CR Touch bed sensor
[bltouch]
sensor_pin: ^PC14
control_pin: PC13
x_offset: -13
y_offset: 27
z_offset: 2.0
speed: 10
stow_on_each_sample: true # Occasional bed crashes when false
samples: 4
sample_retract_dist: 2
samples_result: average
probe_with_touch_mode: true
[bed_mesh]
speed: 150
mesh_min: 3,28 # need to handle head distance with bl_touch
mesh_max: 205,218
mesh_pps: 3
probe_count: 4,4
fade_start: 1
fade_end: 10
fade_target: 0
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[safe_z_home]
home_xy_position: 123,83
speed: 200
z_hop: 10
z_hop_speed: 10
# Many Ender 5 S1 printers appear to suffer from a slight twist
# in the X axis. This twist can be measured, and compensated for
# using the AXIS_TWIST_COMPENSATION_CALIBRATE G-Code command. See
# https://www.klipper3d.org/Axis_Twist_Compensation.html for more
# information. This section provides the setup for this optional
# calibration step.
[axis_twist_compensation]
calibrate_start_x: 3
calibrate_end_x: 207
calibrate_y: 110
# Probe locations for assisted bed screw adjustment.
[screws_tilt_adjust]
screw1: 38,6
screw1_name: Front Left Screw
screw2: 215,6
screw2_name: Front Right Screw
screw3: 215,175
screw3_name: Rear Right Screw
screw4: 38,175
screw4_name: Rear Left Screw
horizontal_move_z: 5
speed: 100
screw_thread: CW-M4
[bed_screws]
screw1: 25,25
screw1_name: Front Left Screw
screw2: 195,25
screw2_name: Front Right Screw
screw3: 195,195
screw3_name: Rear Right Screw
screw4: 25,195
screw4_name: Rear Left Screw
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 5000
max_z_velocity: 5
max_z_accel: 100
square_corner_velocity: 5.0

View file

@ -0,0 +1,126 @@
# This file contains pin mappings for the stock Elegoo Neptune 3 Pro (ZNP Robin Nano_DW V2.2)
# To use this config, during "make menuconfig" select the STM32F401 with a
# "32KiB bootloader" and serial (on USART1 PA10/PA9) communication.
# Note that the "make flash" command does not work with ZNP Robin boards.
# After running "make", rename the out/klipper.bin file to out/ZNP_ROBIN_NANO.bin
# Copy the file out/ZNP_ROBIN_NANO.bin to an SD card formatted to FAT32
# and then restart the printer with the SD card inserted.
# See docs/Config_Reference.md for a description of parameters.
# Core
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
# Steppers
[stepper_x]
step_pin: PC12
dir_pin: PB3
enable_pin: !PD2
microsteps: 16
rotation_distance: 40
endstop_pin: PA13
position_min: -5
position_endstop: -5
position_max: 235
homing_speed: 50
[stepper_y]
step_pin: PC11
dir_pin: PA15
enable_pin: !PC10
microsteps: 16
rotation_distance: 40
endstop_pin: PB8
position_endstop: 0
position_max: 234
homing_speed: 50
[stepper_z]
step_pin: PC7
dir_pin: !PC9
enable_pin: !PC8
microsteps: 16
rotation_distance: 8
position_min: -0.8
endstop_pin: probe:z_virtual_endstop
position_max: 283
homing_speed: 10
[probe]
pin: PA8
# NOTE: Set this to a value based on your printer and bed.
z_offset: 0
x_offset: -28.5
y_offset: 22
[extruder]
step_pin: PB10
dir_pin: PB1
enable_pin: !PC6
microsteps: 16
rotation_distance: 8.42
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA6
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
control: pid
# NOTE: These settings are for PETG, thus 240C at 30% fan.
pid_Kp: 26.27
pid_Ki: 1.607
pid_Kd: 107.380
min_temp: 0
max_temp: 260
max_extrude_only_distance: 100
[heater_bed]
heater_pin: PA5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
control: pid
# NOTE: These settings are for PETG, thus 80C bed temperature.
pid_Kp: 70.173
pid_Ki: 1.418
pid_Kd: 868.388
min_temp: 0
max_temp: 100
# Coooling
[fan]
pin: PA7
[heater_fan hotend_fan]
pin: PB0
# Rest
# This is put on the FAN3 pin.
[led top_LEDs]
white_pin: PB9
cycle_time: 0.005
[filament_switch_sensor filament_runout_sensor]
switch_pin: PB4
[safe_z_home]
home_xy_position: 143.5, 93
[bed_mesh]
mesh_min: 10, 25
mesh_max: 205, 220
probe_count: 6, 6
algorithm: bicubic
speed: 100

View file

@ -127,32 +127,32 @@ max_z_velocity: 5
max_z_accel: 100
[mcp4018 x_axis_pot]
scl_pin: PJ5
sda_pin: PF3
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PF3
wiper: 118
scale: 127
[mcp4018 y_axis_pot]
scl_pin: PJ5
sda_pin: PF7
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PF7
wiper: 118
scale: 127
[mcp4018 z_axis_pot]
scl_pin: PJ5
sda_pin: PK3
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PK3
wiper: 40
scale: 127
[mcp4018 a_axis_pot]
scl_pin: PJ5
sda_pin: PA5
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PA5
wiper: 118
scale: 127
[mcp4018 b_axis_pot]
scl_pin: PJ5
sda_pin: PJ6
i2c_software_scl_pin: PJ5
i2c_software_sda_pin: PJ6
wiper: 118
scale: 127

View file

@ -71,25 +71,21 @@ pid_Kp: 39
pid_Ki: 2
pid_Kd: 210
[extruder1]
[extruder_stepper e1]
extruder:
step_pin: PA0
dir_pin: !PB6
enable_pin: !PA1
microsteps: 16
rotation_distance: 32
nozzle_diameter: 0.4
filament_diameter: 1.75
shared_heater: extruder
[extruder2]
[extruder_stepper e2]
extruder:
step_pin: PB2
dir_pin: !PB11
enable_pin: !PC4
microsteps: 16
rotation_distance: 32
nozzle_diameter: 0.4
filament_diameter: 1.75
shared_heater: extruder
[heater_bed]
heater_pin: PB1

View file

@ -0,0 +1,256 @@
# This file contains common pin mappings for the Geeetech GT2560 v4.0 and v4.1b
# boards. These boards use a firmware compiled for the AVR atmega2560.
# For default Geeetech A10/A20 (1 extruder),
# A10M/A20M (mixing 2 in 1 out),
# A10T/A20T (mixing 3 in 1 out) printers
# Installation: https://www.klipper3d.org/Installation.html
# Always read for first start: https://www.klipper3d.org/Config_checks.html
[mcu]
# Might need to be changed: https://www.klipper3d.org/Installation.html
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
[printer]
kinematics: cartesian
max_velocity: 200
max_accel: 1500
max_z_velocity: 20
max_z_accel: 500
# # uncomment for BLTouch/3DTouch
# [bltouch]
# sensor_pin: PC7 # there is an external pull up so no need in ^
# control_pin: PB5
# speed: 3.0
# samples: 2
# x_offset: -42.0
# y_offset: -1.0
# z_offset: 1.0 # during calibration this line is commented out and new record added at the end of file
[safe_z_home]
home_xy_position: 100, 100 # Change coordinates to the center of your print bed
speed: 50
z_hop: 10 # Move up 10mm
z_hop_speed: 5
[stepper_x]
enable_pin: !PC2
dir_pin: !PG2
step_pin: PC0
microsteps: 16
rotation_distance: 40
endstop_pin: !PA2 # there are external pull ups
position_endstop: 0
position_max: 220 # for A10/M/T / change to 250 for A20/M/T
homing_speed: 40
[stepper_y]
enable_pin: !PA7
dir_pin: !PC4
step_pin: PC6
microsteps: 16
rotation_distance: 40
endstop_pin: !PA6 # there are external pull ups
position_endstop: 0
position_max: 220 # for A10/M/T / change to 250 for A20/M/T
homing_speed: 40
[stepper_z]
enable_pin: !PA5
dir_pin: PA1
step_pin: PA3
microsteps: 16
rotation_distance: 8
#endstop_pin: probe:z_virtual_endstop # uncomment for BLTouch/3DTouch
endstop_pin: !PC7 # comment for BLTouch/3DTouch
position_endstop: 0 # comment for BLTouch/3DTouch
position_max: 230 # for A10/M/T / change to 250 for A20/M/T
position_min: -5
homing_speed: 20
[extruder]
enable_pin: !PB6
dir_pin: PL5
step_pin: PL3
microsteps: 16
rotation_distance: 8 # Needs to be optimized: https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders
nozzle_diameter: 0.4
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK3
min_temp: 0
max_temp: 250
max_extrude_only_distance: 200.0
# Parameters for stock hotend on A10M
# Please recalibrate according to https://www.klipper3d.org/Config_checks.html#calibrate-pid-settings
control: pid
pid_kp: 54.722
pid_ki: 4.800
pid_kd: 155.958
[extruder_stepper extruder_1]
extruder:
enable_pin: !PL1
dir_pin: PL2
step_pin: PL0
microsteps: 16
rotation_distance: 8 # Needs to be optimized: https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders
[extruder_stepper extruder_2]
extruder:
enable_pin: !PG0
dir_pin: PL4
step_pin: PL6
microsteps: 16
rotation_distance: 8 # Needs to be optimized: https://www.klipper3d.org/Rotation_Distance.html#calibrating-rotation_distance-on-extruders
[heater_bed]
heater_pin: PG5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK2
min_temp: 0
max_temp: 120
# Parameters for `SuperPlate` on A10M
# Please recalibrate according to https://www.klipper3d.org/Config_checks.html#calibrate-pid-settings
control: pid
pid_kp: 70.936
pid_ki: 1.785
pid_kd: 704.924
[fan]
pin: PH6
cycle_time: 0.150
kick_start_time: 0.300
# # for GT2560V4.0 with 20pin flat cable toward the display
# [display]
# lcd_type: hd44780
# hd44780_protocol_init: True
# rs_pin: PD1
# e_pin: PH0
# d4_pin: PH1
# d5_pin: PD0
# d6_pin: PE3
# d7_pin: PC1
# encoder_pins: ^PG1, ^PL7
# click_pin: ^!PD2
# for GT2560V4.1B with 12pin flat cable toward the display YHCB2004-06 ver3.0
# the aip31068_spi driver was added to Klipper on 2024-12-02, commit aecb29d2
[display]
lcd_type: aip31068_spi
latch_pin: PE3
spi_software_sclk_pin: PD0
spi_software_mosi_pin: PC1
spi_software_miso_pin: PH7 # any unused pin
encoder_pins: ^PH0, ^PH1
click_pin: ^!PD2
[filament_switch_sensor sensor_e0]
switch_pin: !PK4
[filament_switch_sensor sensor_e1]
switch_pin: !PK5
[filament_switch_sensor sensor_e2]
# switch_pin: !PE2 # for GT2560V4.0
switch_pin: !PF0 # for GT2560V4.1B
# to enable M118 echo command
[respond]
# Specific macros for mixing colors.
# Add in slicer new filament color and in filament start G-Code add desired mixing factor:
# M163 S0 P50 ; set extruder 0 to 50%
# M163 S1 P40 ; set extruder 1 to 40%
# M163 S2 P10 ; set extruder 2 to 10%
# M164 ; commit the mix factors
[gcode_macro M163]
description: M163 [P<factor>] [S<index>] Set a single mix factor (in proportion to the sum total of all mix factors). The mix must be committed to a virtual tool by M164 before it takes effect.
gcode:
{% if 'P' in params %}
{% set s = params.S|default(0)| int %}
{% if s == 0 %}
SET_GCODE_VARIABLE MACRO=M164 VARIABLE=e0_parts VALUE={params.P|default(0)|float}
M118 Set Mixing factor for extruder 0 to {params.P|default(0)|float}
{% elif s == 1 %}
SET_GCODE_VARIABLE MACRO=M164 VARIABLE=e1_parts VALUE={params.P|default(0)|float}
M118 Set Mixing factor for extruder 1 to {params.P|default(0)|float}
{% elif s == 2 %}
SET_GCODE_VARIABLE MACRO=M164 VARIABLE=e2_parts VALUE={params.P|default(0)|float}
M118 Set Mixing factor for extruder 2 to {params.P|default(0)|float}
{% endif %}
{% else %}
M118 No Mixing factor set, missing value for P
{% endif %}
M118 {e0_parts} {e1_parts} {e2_parts}
[gcode_macro M164]
description: Applies the set mixing factors to the extruders
# default values:
variable_e0_parts : 100
variable_e1_parts : 0
variable_e2_parts : 0
gcode:
# normalize the parts to sum of 1
{% set e0 = e0_parts / (e0_parts + e1_parts + e2_parts) | float %}
{% set e1 = e1_parts / (e0_parts + e1_parts + e2_parts) | float %}
{% set e2 = e2_parts / (e0_parts + e1_parts + e2_parts) | float %}
M118 scaled rot-dist_e0 { printer.configfile.settings.extruder.rotation_distance / (e0 + 0.000001) | float }
M118 scaled rot-dist_e1 { printer.configfile.settings['extruder_stepper extruder_1'].rotation_distance / (e1 + 0.000001) | float }
M118 scaled rot-dist_e2 { printer.configfile.settings['extruder_stepper extruder_2'].rotation_distance / (e2 + 0.000001) |float }
# activate stepper percentages
SYNC_EXTRUDER_MOTION EXTRUDER=extruder MOTION_QUEUE=extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder_1 MOTION_QUEUE=extruder
SYNC_EXTRUDER_MOTION EXTRUDER=extruder_2 MOTION_QUEUE=extruder
SET_EXTRUDER_ROTATION_DISTANCE EXTRUDER=extruder DISTANCE={ printer.configfile.settings.extruder.rotation_distance / (e0+0.000001)|float }
SET_EXTRUDER_ROTATION_DISTANCE EXTRUDER=extruder_1 DISTANCE={ printer.configfile.settings['extruder_stepper extruder_1'].rotation_distance / (e1+0.000001)|float }
SET_EXTRUDER_ROTATION_DISTANCE EXTRUDER=extruder_2 DISTANCE={ printer.configfile.settings['extruder_stepper extruder_2'].rotation_distance / (e2+0.000001)|float }
M118 Mixing factors {e0} {e1} {e2} are activated
# In PrusaSlicer:
# - you can add as many extruders as mixing ratios you want
# - in Printer Settings -> Custom G-code -> Tool change G-code add:
# TOOL_CHANGE EXTRUDER={next_extruder}
# - in this config file add:
# [gcode_macro TOOL_CHANGE]
# description: Tool change macro with mix ratio setup for 11 extruders
# variable_extruder: 0
# gcode:
# {% set extruder = params.EXTRUDER|default(0)| int %}
# {% if extruder == 0 %}
# M163 S0 P100
# M163 S1 P0
# M163 S2 P0
# M164
# M118 Switching to Extruder 0
# {% elif extruder == 1 %}
# M163 S0 P90
# M163 S1 P10
# M163 S2P0
# M164
# M118 Switching to Extruder 1
# {% elif extruder == 2 %}
# # and so on ...
# {% else %}
# M118 Unknown extruder number: {extruder}
# {% endif %}
# In OrcaSlicer:
# you can add as many filaments as mixing ratios you want
# in Material settings -> Advanced -> Filament start G-code add desired mixing ratio:
# ; filament start gcode
# M163 S0 P100 ; set extruder 0
# M163 S1 P0 ; set extruder 1
# M163 S2 P0 ; set extruder 2
# M164 ; commit the mix factors
# For gradient over Z axis:
# In `Printer -> Custom G-code -> After layer change G-code` add:
# M163 S0 P{ layer_num * 100 / total_layer_count } ; Gradient 0-100
# M163 S1 P{(total_layer_count-layer_num) * 100 / total_layer_count} ; Gradient 100-0
# M164 ; commit the mix factors

View file

@ -0,0 +1,108 @@
# This file contains common pin mappings for the Kingroon KP3S printer,
# which uses a modified MKS Robin board.
# To use this config, the firmware should be compiled for the
# STM32F103. When running "make menuconfig", enable "extra low-level
# configuration setup", select the 28KiB bootloader, and serial (on
# USART3 PB11/PB10) communication. Also, select "Enable extra low-level
# configuration options" and configure "GPIO pins to set at
# micro-controller startup" to "!PC6,!PD13" to disable the LCD as it is not
# compatible with klipper
# Note that the "make flash" command does not work with MKS Robin
# boards. After running "make", run the following command:
# ./scripts/update_mks_robin.py out/klipper.bin out/Robin_nano.bin
# Copy the file out/Robin_nano.bin to an SD card and then restart the
# printer with that SD card.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PE3
dir_pin: !PE2
enable_pin: !PE4
microsteps: 32
rotation_distance: 40
endstop_pin: !PA15
position_endstop: 0
position_max: 180
homing_speed: 50
[stepper_y]
step_pin: PE0
dir_pin: !PB9
enable_pin: !PE1
microsteps: 32
rotation_distance: 40
endstop_pin: !PA12
position_endstop: 0
position_max: 180
homing_speed: 50
[stepper_z]
step_pin: PB5
dir_pin: PB4
enable_pin: !PB8
microsteps: 32
rotation_distance: 8
endstop_pin: !PA11
position_endstop: 0.5
position_max: 180
[safe_z_home]
home_xy_position: 90,90
z_hop: 10
[thermistor Kingroon_B3950]
temperature1: 25.0
resistance1: 103180.0
temperature2: 150.0
resistance2: 1366.2
temperature3: 250.0
resistance3: 168.6
[extruder]
step_pin: PD6
dir_pin: !PD3
enable_pin: !PB3
microsteps: 32
gear_ratio: 3:1
rotation_distance: 23.244
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC3
sensor_type: Kingroon_B3950
sensor_pin: PC1
control: pid
pid_kp: 27.057
pid_ki: 1.171
pid_kd: 156.254
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PA0
sensor_type: Kingroon_B3950
sensor_pin: PC0
control: pid
pid_kp: 61.779
pid_ki: 1.572
pid_kd: 606.980
min_temp: 0
max_temp: 130
[fan]
pin: PB1
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 2000
max_z_velocity: 25
max_z_accel: 100
[static_digital_output display_reset]
pins: !PC6, !PD13

View file

@ -0,0 +1,118 @@
# This file contains pin mappings for the stock 2022 LONGER3D LK4 X
# with the 32-bit LGT_KIT_V2_X board. To use this config, during
# "make menuconfig" select the STM32F103 with a "32KiB bootloader" and
# serial (on USART1 PA10/PA9) communication.
# Flash this firmware by copying "out/klipper.bin" to a SD card,
# then rename it to "firmware.bin"and turning on the printer with
# the card inserted.
# See docs/Config_Reference.md for a description of parameters.
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 4000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PD3
dir_pin: PD2
enable_pin: !PD4
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PE6
position_endstop: 0
position_max: 265
homing_speed: 80
[stepper_y]
step_pin: PD6
dir_pin: PD5
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
endstop_pin: ^!PE4
position_endstop: 0
position_max: 220
homing_speed: 80
[stepper_z]
step_pin: PB4
dir_pin: !PB3
enable_pin: !PB5
microsteps: 16
rotation_distance: 8
# Without BLTouch
# endstop_pin: ^!PE2
# With BLTouch
endstop_pin: probe: z_virtual_endstop
# position_endstop: 0.0
position_min: -5
position_max: 250
[extruder]
max_extrude_only_distance: 200
step_pin: PB9
dir_pin: PB8
enable_pin: !PE0
microsteps: 16
rotation_distance: 4.4504
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC1
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 25.011
pid_Ki: 1.463
pid_Kd: 106.922
min_temp: 0
max_temp: 260
[heater_bed]
heater_pin: PA0
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC0
control: pid
# tuned for stock hardware with 60 degree Celsius target
pid_Kp: 69.370
pid_Ki: 1.526
pid_Kd: 788.215
min_temp: 0
max_temp: 110
[fan]
pin: PA1
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[bed_screws]
screw1: 30,30
screw2: 190,30
screw3: 190,190
screw4: 30,190
# Pin mappings for BL_T port
[bltouch]
sensor_pin: ^PE1
control_pin: PA8
x_offset: -51
y_offset: -8
z_offset: 0 # You need to adjust this for your printer
[bed_mesh]
speed: 120
mesh_min: 10, 10
mesh_max: 210, 210
probe_count: 4, 4
[safe_z_home]
home_xy_position: 161, 118
speed: 80
z_hop: 10 # Move up 10mm
z_hop_speed: 5

View file

@ -125,7 +125,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.300
value: 1.300
[output_pin stepper_z_current]
pin: PL4
@ -133,7 +133,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.630
value: 1.630
[output_pin stepper_e_current]
pin: PL5
@ -141,7 +141,7 @@ pwm: True
scale: 2.0
cycle_time: .000030
hardware_pwm: True
static_value: 1.250
value: 1.250
[static_digital_output stepper_config]
# Microstepping pins

View file

@ -0,0 +1,157 @@
#This file contains pin mappings for the stock Lulzbot Mini 2 which uses
#EinsyRetro mainboard and SingleExtruder(0.5mm) hotend.
#To use this config, the firmware should be compiled for the AVR atmega2560.
# Pin numbers checked against Lulzbot fork of Marlin pins_EINSYRETRO.h
# https://gitlab.com/lulzbot3d/marlin/-/blob/master/Marlin/src/pins/rambo/
#pins_EINSY_RETRO.h
# validated against https://github.com/ultimachine/EinsyRetro/blob/1.0b/board/
#Project%20Outputs%20for%20EinsyRetro/Schematic%20Prints_EinsyRetro_1.0b.PDF
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/ttyACM0
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 2000
max_z_velocity: 40
max_z_accel: 100
[stepper_x]
step_pin: PC0
dir_pin: !PL0
enable_pin: !PA7
rotation_distance: 32
microsteps: 16
endstop_pin: tmc2130_stepper_x:virtual_endstop
position_endstop: -7
position_min: -7
position_max: 168
homing_retract_dist: 0
homing_speed: 30
[stepper_y]
step_pin: PC1
dir_pin: !PL1
enable_pin: !PA6
rotation_distance: 32
microsteps: 16
endstop_pin: tmc2130_stepper_y:virtual_endstop
position_endstop: -5
position_min: -5
position_max: 192
homing_retract_dist: 0
homing_speed: 30
[stepper_z]
step_pin: PC2
dir_pin: !PL2
enable_pin: !PA5
rotation_distance: 32
microsteps: 16
endstop_pin: PH4
position_endstop: 183
position_max: 185
position_min: -2
[extruder]
step_pin: PC3
dir_pin: PL6
enable_pin: !PA4
microsteps: 16
rotation_distance: 7.465
nozzle_diameter: 0.5
filament_diameter: 2.85
heater_pin: PE5
sensor_type: ATC Semitec 104GT-2
sensor_pin: PF0
min_temp: 0
max_temp: 280
control: pid
pid_kp: 24.121
pid_ki: 1.079
pid_kd: 134.779
[heater_bed]
heater_pin: PG5
sensor_type: Honeywell 100K 135-104LAG-J01
sensor_pin: PF2
min_temp: 0
max_temp: 130
control: pid
pid_kp: 71.304
pid_ki: 1.662
pid_kd: 764.734
[fan]
pin: PH5
[heater_fan nozzle_cooling_fan]
pin: PH3
[probe]
pin: ^!PB4
z_offset: 1.377
#z offset will need to be adjusted if you use the magnetic bed upgrade as the
#washer thickness will apply a different offset between the nozzle and true
#bed level.
samples: 3
sample_retract_dist: 1.0
samples_tolerance: 0.200
[bed_tilt]
points: -5, 22
-5, 190
160, 190
160, 22
speed: 30
horizontal_move_z: 5
[tmc2130 stepper_x]
cs_pin: PG0
run_current: 0.975
diag0_pin: ^!PK2
driver_SGT: 4
sense_resistor: 0.120
[tmc2130 stepper_y]
cs_pin: PG2
run_current: 0.975
diag0_pin: ^!PK7
driver_SGT: 4
sense_resistor: 0.120
[tmc2130 stepper_z]
cs_pin: PK5
run_current: 0.960
diag0_pin: ^!PK6
stealthchop_threshold: 999999
sense_resistor: 0.120
[tmc2130 extruder]
cs_pin: PK4
run_current: 0.960
diag0_pin: ^!PK3
stealthchop_threshold: 999999
sense_resistor: 0.120
[static_digital_output sd_card]
pins: PB0
[safe_z_home]
home_xy_position: 75, 75
speed: 30.0
z_hop: 5
[display]
lcd_type: st7920
cs_pin: PD5
sclk_pin: PD2
sid_pin: PD3
menu_timeout: 5
encoder_pins: ^PJ1,^PJ2
encoder_steps_per_detent: 2
click_pin: ^!PH6

View file

@ -199,7 +199,6 @@ algorithm: bicubic
bicubic_tension: 0.15
fade_start: 0.5
fade_end: 2.5
relative_reference_index: 60
[bed_screws]
screw1: 0,0

View file

@ -0,0 +1,180 @@
# This file contains pin mappings for a full Ratrig V-Minion kit
# with an Octopus Pro v1.1 board.
#
# This will not work with RatOS
#
# To use this config, during "make menuconfig" select the STM32F446
# with a "32KiB bootloader", USB (on PA11/PA12) communication, and
# a "12MHZ Crystal"
#
# Flash this firmware on the MCU by copying "out/klipper.bin" to an SD
# card and turning the printer on with the card inserted. The firmware
# filename must be named "firmware.bin"
#
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PF13
dir_pin: !PF12
enable_pin: !PF14
endstop_pin: ^PG6
rotation_distance: 40
microsteps: 64
position_max: 180
position_min: 0
homing_speed: 60
position_endstop: 0
[tmc2209 stepper_x]
uart_pin: PC4
run_current: 0.8
interpolate: false
stealthchop_threshold: 0
[stepper_y]
step_pin: PG0
dir_pin: PG1
enable_pin: !PF15
endstop_pin: ^PG9
rotation_distance: 40
microsteps: 64
position_max: 180
position_min: 0
homing_speed: 60
position_endstop: 0
[tmc2209 stepper_y]
uart_pin: PD11
run_current: 0.8
interpolate: false
stealthchop_threshold: 0
[stepper_z]
step_pin: PC13
dir_pin: !PF0
enable_pin: !PF1
endstop_pin: probe:z_virtual_endstop
rotation_distance: 4
position_min: -5
microsteps: 64
position_max: 180
[tmc2209 stepper_z]
uart_pin: PE4
run_current: 0.8
interpolate: false
stealthchop_threshold: 0
[extruder]
rotation_distance: 5.57
full_steps_per_rotation: 200
filament_diameter: 1.750
step_pin: PF11
dir_pin: !PG3
enable_pin: !PG5
microsteps: 64
nozzle_diameter: 0.4
heater_pin: PA2
sensor_type: Generic 3950
sensor_pin: PF4
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 290
[tmc2209 extruder]
uart_pin: PC6
run_current: 0.70
stealthchop_threshold: 0
interpolate: False
[probe]
pin: ^PB7
x_offset: -24.0
y_offset: -13.0
z_offset: 0.0
speed: 5
samples: 2
sample_retract_dist: 2
lift_speed: 5.0
samples_result: median
samples_tolerance: 0.02
samples_tolerance_retries: 5
[bed_mesh]
speed: 300
horizontal_move_z: 5
mesh_min: 15,15
mesh_max: 150,160
probe_count: 5,5
fade_start: 1.0
fade_end: 10.0
mesh_pps: 2,2
algorithm: bicubic
bicubic_tension: .2
[screws_tilt_adjust]
screw1: 80, 108
screw1_name: Left Screw
screw2: 155, 72
screw2_name: Front Right Screw
screw3: 155, 147
screw3_name: Rear Right Screw
horizontal_move_z: 10
speed: 300
screw_thread: CCW-M4
[safe_z_home]
home_xy_position: 90,90
z_hop: 5
speed: 300
[heater_bed]
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PF3
control: pid
pid_kp: 54.027
pid_ki: 0.770
pid_kd: 948.182
min_temp: 0
max_temp: 120
[fan]
pin: PA8
shutdown_speed: 0.0
[heater_fan hotend_cooling_fan]
pin: PE5
fan_speed: 1.0
heater: extruder
heater_temp: 50.0
[controller_fan controller_fan]
pin: PD12
fan_speed: 1.0
stepper: stepper_x, stepper_y, stepper_z
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 20000
max_z_velocity: 15
max_z_accel: 2000
[mcu]
serial: INSERTSERIALIDHERE
[board_pins octopus_11_tmc2209]
aliases:
## Expansion ports
# EXP1 header
EXP1_1=PE8, EXP1_3=PE9, EXP1_5=PE12, EXP1_7=PE14, EXP1_9=<GND>,
EXP1_2=PE7, EXP1_4=PE10, EXP1_6=PE13, EXP1_8=PE15, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PA6, EXP2_3=PB1, EXP2_5=PB2, EXP2_7=PC15, EXP2_9=<GND>,
EXP2_2=PA5, EXP2_4=PA4, EXP2_6=PA7, EXP2_8=<RST>, EXP2_10=PC5,
# Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "spi2"

View file

@ -0,0 +1,144 @@
# This file contains pin mappings for the stock 2022 Sovol SV05
# with the 32-bit Creality 4.2.2 board.
#
# To use this config, during "make menuconfig" select the STM32F103
# with a "28KiB bootloader" and serial (on USART1 PA10/PA9)
# communication.
#
# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed. Might need a renaming if printer dosnt flash.
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 1000
minimum_cruise_ratio: 0.0
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 220
position_max: 220
homing_speed: 50
position_min: -4
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 220
position_max: 220
position_min: -4
homing_speed: 50
[stepper_z]
step_pin: PB6
dir_pin: PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: probe:z_virtual_endstop
position_max: 300
position_min: -3
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
min_temp: 0
max_temp: 130
control: pid
pid_kp: 64.742
pid_ki: 0.827
pid_kd: 1267.326
[fan]
pin: PA0
[safe_z_home]
home_xy_position: 70, 103
speed: 100
z_hop: 10
z_hop_speed: 20
[extruder]
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 7.394
nozzle_diameter: 0.400
filament_diameter: 1.750
max_extrude_only_distance: 100.0
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
min_temp: 0
max_temp: 280
control: pid
pid_kp: 28.850
pid_ki: 1.658
pid_kd: 125.496
[bltouch]
sensor_pin: ^PB1
control_pin: PB0
z_offset: 0
x_offset: 40
y_offset: 7
samples: 2
samples_tolerance: 0.015
samples_tolerance_retries: 5
[bed_mesh]
speed: 100
horizontal_move_z: 5
mesh_min: 40, 7
mesh_max: 220, 220
probe_count: 5, 5
algorithm: bicubic
fade_start: 1
fade_end: 10
[bed_screws]
screw1: 25,28
screw2: 195,28
screw3: 195,197
screw4: 25,197
[screws_tilt_adjust]
screw1: -4,21
screw1_name: front left screw
screw2: 155,21
screw2_name: front right screw
screw3: 155,190
screw3_name: rear right screw
screw4: -4,190
screw4_name: rear left screw
horizontal_move_z: 10
speed: 50
screw_thread: CW-M4
[display]
lcd_type: st7920
cs_pin: PB12
sclk_pin: PB13
sid_pin: PB15
encoder_pins: ^PB14, ^PB10
click_pin: ^!PB2

View file

@ -0,0 +1,159 @@
# This file contains pin mappings for the stock Sovol SV06
# To use this config, during "make menuconfig" select the
# STM32F103 with a "28KiB bootloader" and serial (on USART1 PA10/PA9) communication.
# Also, since it is using the GD32F103, please select Disable SWD at startup
#
# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed.
#
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[stepper_x]
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 220
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_x]
uart_pin: PC1
run_current: 0.860
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 81
diag_pin: PA5
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
position_max: 220
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_y]
uart_pin: PC0
run_current: 0.900
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 82
diag_pin: PA6
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_min: -4
position_max: 250
homing_speed: 4
[tmc2209 stepper_z]
uart_pin: PA15
run_current: 1.000
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
diag_pin: PA7
[extruder]
max_extrude_only_distance: 100.0
step_pin: PB4
dir_pin: !PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 4.56
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
pid_kd: 86.991
pid_kp: 21.479
pid_ki: 1.326
min_temp: 0
max_temp: 300
[tmc2209 extruder]
uart_pin: PC14
run_current: 0.550
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
pid_kp: 64.440
pid_ki: 0.773
pid_kd: 1343.571
min_temp: 0
max_temp: 130
[fan]
pin: PA0
[probe]
pin: PB1
x_offset: 27
y_offset: -20
z_offset: 0
samples: 2
samples_tolerance: 0.015
samples_tolerance_retries: 5
[safe_z_home]
home_xy_position: 85,135
z_hop: 10
z_hop_speed: 5
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 28, 20
mesh_max: 210, 205
probe_count: 10
algorithm: bicubic
fade_start: 1
fade_end: 10
fade_target: 0
[display]
lcd_type: st7920
cs_pin: PB12
sclk_pin: PB13
sid_pin: PB15
encoder_pins: ^PB14, ^PB10
click_pin: ^!PB2

View file

@ -0,0 +1,147 @@
# This file contains pin mappings for the stock Sovol SV06 Plus
# To use this config, during "make menuconfig" select the
# STM32F103 with a "28KiB bootloader" and serial (on USART1 PA10/PA9) communication.
# Also, since it is using the GD32F103, please select Disable SWD at startup
#
# Flash this firmware by copying "out/klipper.bin" to a SD card and
# turning on the printer with the card inserted. The firmware
# filename must end in ".bin" and must not match the last filename
# that was flashed.
#
# Note: The stock LCD display does not currently work with Klipper
#
# See docs/Config_Reference.md for a description of parameters.
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 500
max_accel: 2000
max_z_velocity: 10
max_z_accel: 100
[stepper_x]
step_pin: PC2
dir_pin: !PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_x:virtual_endstop
position_endstop: 0
position_max: 305
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_x]
uart_pin: PC1
run_current: 0.860
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 86
diag_pin: PA5
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: tmc2209_stepper_y:virtual_endstop
position_endstop: 0
position_max: 305
homing_speed: 40
homing_retract_dist: 0
[tmc2209 stepper_y]
uart_pin: PC0
run_current: 0.900
sense_resistor: 0.150
uart_address: 3
driver_SGTHRS: 110
diag_pin: PA6
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 4
endstop_pin: probe:z_virtual_endstop
position_min: -4
position_max: 350
homing_speed: 4
[tmc2209 stepper_z]
uart_pin: PA15
run_current: 1.000
interpolate: False
sense_resistor: 0.150
uart_address: 3
diag_pin: PA7
[extruder]
max_extrude_only_distance: 100.0
step_pin: PB4
dir_pin: !PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 4.56
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
pid_kd: 41.96
pid_kp: 15.66
pid_ki: 1.49
min_temp: 0
max_temp: 300
[tmc2209 extruder]
uart_pin: PC14
run_current: 0.550
stealthchop_threshold: 0
interpolate: False
sense_resistor: 0.150
uart_address: 3
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
pid_kp: 186.38
pid_ki: 36.12
pid_kd: 637.30
min_temp: 0
max_temp: 130
[fan]
pin: PA0
[probe]
pin: PB1
x_offset: 28
y_offset: -20
z_offset: 0
[safe_z_home]
home_xy_position: 123,170
z_hop: 10
z_hop_speed: 5
[bed_mesh]
speed: 120
mesh_min: 28, 20
mesh_max: 270, 270
probe_count: 5
algorithm: bicubic
fade_end: 10
fade_target: 0
[filament_switch_sensor filament_runout_sensor]
switch_pin: PA4
pause_on_runout: True

View file

@ -0,0 +1,198 @@
# This file contains common pin mappings for the SUNLU Terminator T3 board
# To use this config, the firmware should be compiled for the
# STM32F103 with a "28KiB bootloader" and USB communication.
# Select "Disable SWD at startup (for GigaDevice stmf32f103 clones)"
# Also, select "Enable extra low-level configuration options" and configure
# "GPIO pins to set at micro-controller startup" to "!PA14".
# The "make flash" command does not work on the SUNLU Terminator T3 board. Instead,
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the board with that SD card.
# See docs/Config_Reference.md for a description of parameters.
# Rename the file to printer.cfg
##################################################################
# Printer
##################################################################
[mcu]
#obtain your MCU id using ls /dev/serial/by-path/*
serial: dev/serial/by-id/usb-Klipper_stm32f103xe_00000000000
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[static_digital_output usb_pullup_enable]
pins: !PA14
[bltouch]
sensor_pin: PC14
control_pin: PA1
x_offset: -28.45
y_offset: 4
z_offset: 1.915
pin_up_touch_mode_reports_triggered: FALSE #needed bc of the bltouch clone used by sunlu
[safe_z_home]
home_xy_position: 115,115
speed: 75
z_hop: 10
z_hop_speed: 5
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 10, 10
mesh_max: 190, 220
probe_count: 5,5
fade_start: 1
fade_end: 10
[bed_screws]
#for BED_SCREWS_ADJUST
screw1: 31,38 #X,Y Position
screw1_name: Front Left
screw2: 201,38 #X,Y Position
screw2_name: Front Right
screw3: 201,204 #X,Y Position
screw3_name: Rear Right
screw4: 31,204 #X,Y Position
screw4_name: Rear Left
##IMPORTANT. If using the filament sensor add CLEAR_PAUSE to your slicer's start gcode or to your print start macro.##
##The act of loading and unloading filament will trigger a paused state##
[filament_motion_sensor Filament_Sensor]
detection_length: 7.0
extruder: extruder
switch_pin: !PC15
pause_on_runout: FALSE
runout_gcode: PAUSE
#########################################################
# Motion Axis
#########################################################
[stepper_x]
step_pin: PB13
dir_pin: !PB12
enable_pin: !PB14
microsteps: 16
rotation_distance: 40
endstop_pin: !PC0
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_y]
step_pin: PB10
dir_pin: !PB2
enable_pin: !PB11
microsteps: 16
rotation_distance: 40
endstop_pin: !PC1
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_z]
step_pin: PB0
dir_pin: PC5
enable_pin: !PB1
microsteps: 16
rotation_distance: 4
position_max: 250
endstop_pin: probe:z_virtual_endstop
###################################################
# Heaters
###################################################
[extruder]
step_pin: PB3
dir_pin: !PB4
enable_pin: !PD2
microsteps: 16
rotation_distance: 23.18840579710145
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PC8
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PA0
control: pid
pid_Kp: 19.479
pid_Ki: 1.073
pid_Kd: 88.385
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PC9
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC3
control: pid
pid_Kp: 62.673
pid_Ki: 1.530
pid_Kd: 641.619
min_temp: 0
max_temp: 130
#########################################
# Fans
#########################################
[heater_fan Hotend]
pin: PC7
heater: extruder
heater_temp: 50.0
[fan]
pin: PC6
###############################################
# Stock Screen
###############################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=<GND>,
EXP1_2=PA15, EXP1_4=<RST>, EXP1_6=PB9, EXP1_8=PB15, EXP1_10=<5V>
[display]
lcd_type: st7920
cs_pin: PB8 #EXP1_7
sclk_pin: PB9 #EXP1_6
sid_pin: PB15 #EXP1_8
encoder_pins: ^PA10, ^PA9 #^EXP1_5, ^EXP1_3
click_pin: ^!PA15 #^!EXP1_2
[output_pin beeper]
pin: PB5 #EXP1_1
pwm: True
value: 0
shutdown_value: 0
cycle_time: 0.001
scale: 1
[gcode_macro M300]
gcode:
{% set S = params.S|default(1000)|int %} ; S sets the tone frequency
{% set P = params.P|default(100)|int %} ; P sets the tone duration
{% set L = 0.5 %} ; L varies the PWM on time, close to 0 or 1 the tone gets a bit quieter. 0.5 is a symmetric waveform
{% if S <= 0 %} ; dont divide through zero
{% set F = 1 %}
{% set L = 0 %}
{% elif S >= 10000 %} ;max frequency set to 10kHz
{% set F = 0 %}
{% else %}
{% set F = 1/S %} ;convert frequency to seconds
{% endif %}
SET_PIN PIN=beeper VALUE={L} CYCLE_TIME={F} ;Play tone
G4 P{P} ;tone duration
SET_PIN PIN=beeper VALUE=0

View file

@ -78,7 +78,7 @@ pid_Kd: 698.838
min_temp: 0
max_temp: 70
[heater_fan my_nozzle_fan]
[heater_fan heatbreak_cooling_fan]
pin: PH4
[fan]

View file

@ -0,0 +1,138 @@
# Klipper configuration for the TronXY Crux1 printer
# CXY-V10.1-220921 mainboard, GD32F4XX or STM32F446 MCU
#
# =======================
# BUILD AND FLASH OPTIONS
# =======================
#
# MCU-architecture: STMicroelectronics
# Processor model: STM32F446
# Bootloader offset: 64KiB
# Comms interface: Serial on USART1 PA10/PA9
#
# Build the firmware with these options
# Rename the resulting klipper.bin into fmw_tronxy.bin
# Put the file into a directory called "update" on a FAT32 formatted SD card.
# Turn off the printer, plug in the SD card and turn the printer back on
# Flashing will start automatically and progress will be indicated on the LCD
# Once the flashing is completed the display will get stuck on the white Tronxy logo bootscreen
# The LCD display will NOT work anymore after flashing Klipper onto this printer
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 250
max_accel: 1500
square_corner_velocity: 5
max_z_velocity: 15
max_z_accel: 100
[controller_fan drivers_fan]
pin: PD7
[pwm_cycle_time BEEPER_pin]
pin: PA8
value: 0
shutdown_value: 0
cycle_time: 0.001
[safe_z_home]
home_xy_position: 0, 0
speed: 100
z_hop: 10
z_hop_speed: 5
[stepper_x]
step_pin: PE5
dir_pin: PF1
enable_pin: !PF0
microsteps: 16
rotation_distance: 20
endstop_pin: ^!PC15
position_endstop: -1
position_min: -1
position_max: 180
homing_speed: 100
homing_retract_dist: 10
second_homing_speed: 25
[stepper_y]
step_pin: PF9
dir_pin: !PF3
enable_pin: !PF5
microsteps: 16
rotation_distance: 20
endstop_pin: ^!PC14
position_endstop: -3
position_min: -3
position_max: 180
homing_retract_dist: 10
homing_speed: 100
second_homing_speed: 25
[stepper_z]
step_pin: PA6
dir_pin: !PF15
enable_pin: !PA5
microsteps: 16
rotation_distance: 4
endstop_pin: ^!PC13
position_endstop: 0
position_max: 180
position_min: 0
[extruder]
step_pin: PB1
dir_pin: PF13
enable_pin: !PF14
microsteps: 16
rotation_distance: 16.75
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PG7
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC3
control: pid
pid_kp: 22.2
pid_ki: 1.08
pid_kd: 114.00
min_temp: 0
max_temp: 250
min_extrude_temp: 170
max_extrude_only_distance: 450
[heater_fan hotend_fan]
heater: extruder
heater_temp: 50.0
pin: PG9
[fan]
pin: PG0
[filament_switch_sensor filament_sensor]
pause_on_runout: True
switch_pin: ^!PE6
[heater_bed]
heater_pin: PE2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC2
min_temp: 0
max_temp: 130
control: pid
pid_kp: 10.00
pid_ki: 0.023
pid_kd: 305.4
[bed_screws]
screw1: 17.5, 11
screw1_name: front_left
screw2: 162.5, 11
screw2_name: front_right
screw3: 162.5, 162.5
screw3_name: back_right
screw4: 17.5, 162.5
screw4_name: back_left

View file

@ -0,0 +1,84 @@
# This file contains pin mappings for the Voxelab Aquila
# with the FFP0173 1.0.1 mainboard. To use this config, during
# "make menuconfig" select the STM32F103 for STM32/G32, or
# Nation N32G452 for N32 version, 28KB boot, serial PA9/PA10.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC2
dir_pin: PB9
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA5
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_y]
step_pin: PB8
dir_pin: PB7
enable_pin: !PC3
microsteps: 16
rotation_distance: 40
endstop_pin: ^PA6
position_endstop: 0
position_max: 235
homing_speed: 50
[stepper_z]
step_pin: PB6
dir_pin: !PB5
enable_pin: !PC3
microsteps: 16
rotation_distance: 8
endstop_pin: ^PA7
position_endstop: 0.0
position_max: 250
[extruder]
max_extrude_only_distance: 100.0
step_pin: PB4
dir_pin: PB3
enable_pin: !PC3
microsteps: 16
rotation_distance: 34.406
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC5
control: pid
# tuned for stock hardware with 200 degree Celsius target
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PC4
control: pid
# tuned for stock hardware with 50 degree Celsius target
pid_Kp: 54.027
pid_Ki: 0.770
pid_Kd: 948.182
min_temp: 0
max_temp: 130
[fan]
pin: PA0
[mcu]
serial: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
restart_method: command
[printer]
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100

View file

@ -86,7 +86,7 @@ pwm: True
scale: 2.782
cycle_time: .000030
hardware_pwm: True
static_value: 1.2
value: 1.2
[output_pin stepper_z_current]
pin: PL4
@ -94,7 +94,7 @@ pwm: True
scale: 2.782
cycle_time: .000030
hardware_pwm: True
static_value: 1.2
value: 1.2
[output_pin stepper_e_current]
pin: PL3
@ -102,7 +102,7 @@ pwm: True
scale: 2.782
cycle_time: .000030
hardware_pwm: True
static_value: 1.0
value: 1.0
[display]
lcd_type: ssd1306

View file

@ -10,21 +10,21 @@ serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
#canbus_uuid: 0e0d81e4210c
[adxl345]
cs_pin: EBBCan: PB12
cs_pin: EBBCan:PB12
spi_bus: spi2
axes_map: x,y,z
[extruder]
step_pin: EBBCan: PA9
dir_pin: !EBBCan: PA8
enable_pin: !EBBCan: PA10
step_pin: EBBCan:PA9
dir_pin: !EBBCan:PA8
enable_pin: !EBBCan:PA10
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan: PB1
heater_pin: EBBCan:PB1
sensor_type: EPCOS 100K B57560G104F
sensor_pin: EBBCan: PA0
sensor_pin: EBBCan:PA0
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
@ -33,22 +33,22 @@ min_temp: 0
max_temp: 250
#sensor_type:MAX31865
#sensor_pin: EBBCan: PA15
#sensor_pin: EBBCan:PA15
#spi_bus: spi1a
#rtd_nominal_r: 100
#rtd_reference_r: 430
#rtd_num_of_wires: 2
[tmc2209 extruder]
uart_pin: EBBCan: PA13
uart_pin: EBBCan:PA13
run_current: 0.650
stealthchop_threshold: 999999
[fan]
pin: EBBCan: PA1
pin: EBBCan:PA1
[heater_fan hotend_fan]
pin: EBBCan: PA2
pin: EBBCan:PA2
heater: extruder
heater_temp: 50.0

View file

@ -10,23 +10,23 @@ serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
#canbus_uuid: 0e0d81e4210c
[adxl345]
cs_pin: EBBCan: PB12
spi_software_sclk_pin: EBBCan: PB10
spi_software_mosi_pin: EBBCan: PB11
spi_software_miso_pin: EBBCan: PB2
cs_pin: EBBCan:PB12
spi_software_sclk_pin: EBBCan:PB10
spi_software_mosi_pin: EBBCan:PB11
spi_software_miso_pin: EBBCan:PB2
axes_map: x,y,z
[extruder]
step_pin: EBBCan: PD0
dir_pin: !EBBCan: PD1
enable_pin: !EBBCan: PD2
step_pin: EBBCan:PD0
dir_pin: !EBBCan:PD1
enable_pin: !EBBCan:PD2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan: PA2
heater_pin: EBBCan:PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: EBBCan: PA3
sensor_pin: EBBCan:PA3
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
@ -35,22 +35,22 @@ min_temp: 0
max_temp: 250
# sensor_type:MAX31865
# sensor_pin: EBBCan: PA4
# sensor_pin: EBBCan:PA4
# spi_bus: spi1
# rtd_nominal_r: 100
# rtd_reference_r: 430
# rtd_num_of_wires: 2
[tmc2209 extruder]
uart_pin: EBBCan: PA15
uart_pin: EBBCan:PA15
run_current: 0.650
stealthchop_threshold: 999999
[fan]
pin: EBBCan: PA0
pin: EBBCan:PA0
[heater_fan hotend_fan]
pin: EBBCan: PA1
pin: EBBCan:PA1
heater: extruder
heater_temp: 50.0

View file

@ -0,0 +1,68 @@
# This file contains common pin mappings for the BIGTREETECH EBBCan
# Canbus board. To use this config, the firmware should be compiled for the
# STM32G0B1 with "8 MHz crystal" and "USB (on PA11/PA12)" or "CAN bus (on PB0/PB1)".
# The "EBB Can" micro-controller will be used to control the components on the nozzle.
# See docs/Config_Reference.md for a description of parameters.
[mcu EBBCan]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
#canbus_uuid: 0e0d81e4210c
[adxl345]
cs_pin: EBBCan:PB12
spi_software_sclk_pin: EBBCan:PB10
spi_software_mosi_pin: EBBCan:PB11
spi_software_miso_pin: EBBCan:PB2
axes_map: x,y,z
[extruder]
step_pin: EBBCan:PD0
dir_pin: !EBBCan:PD1
enable_pin: !EBBCan:PD2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan:PB13
sensor_type: EPCOS 100K B57560G104F
sensor_pin: EBBCan:PA3
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
# sensor_type:MAX31865
# sensor_pin: EBBCan:PA4
# spi_bus: spi1
# rtd_nominal_r: 100
# rtd_reference_r: 430
# rtd_num_of_wires: 2
[tmc2209 extruder]
uart_pin: EBBCan:PA15
run_current: 0.650
stealthchop_threshold: 999999
[fan]
pin: EBBCan:PA0
[heater_fan hotend_fan]
pin: EBBCan:PA1
heater: extruder
heater_temp: 50.0
#[neopixel hotend_rgb]
#pin: EBBCan:PD3
#[bltouch]
#sensor_pin: ^EBBCan:PB8
#control_pin: EBBCan:PB9
#[filament_switch_sensor switch_sensor]
#switch_pin: EBBCan:PB4
#[filament_motion_sensor motion_sensor]
#switch_pin: ^EBBCan:PB3

View file

@ -0,0 +1,84 @@
# This file contains common pin mappings for the BIGTREETECH EBBCan
# Canbus board. To use this config, the firmware should be compiled for the
# STM32G0B1 with "8 MHz crystal" and "USB (on PA11/PA12)" or "CAN bus (on PB0/PB1)".
# The "EBB Can" micro-controller will be used to control the components on the nozzle.
# See docs/Config_Reference.md for a description of parameters.
[mcu EBBCan]
serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
#canbus_uuid: 0e0d81e4210c
[temperature_sensor EBB_NTC]
sensor_type: Generic 3950
sensor_pin: EBBCan:PA2
[adxl345]
cs_pin: EBBCan:PB12
spi_software_sclk_pin: EBBCan:PB10
spi_software_mosi_pin: EBBCan:PB11
spi_software_miso_pin: EBBCan:PB2
axes_map: x,y,z
[extruder]
step_pin: EBBCan:PD0
dir_pin: !EBBCan:PD1
enable_pin: !EBBCan:PD2
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: EBBCan:PB13
sensor_type: EPCOS 100K B57560G104F
sensor_pin: EBBCan:PA3
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
# sensor_type:MAX31865
# sensor_pin: EBBCan:PA4
# spi_bus: spi1
# rtd_nominal_r: 100
# rtd_reference_r: 430
# rtd_num_of_wires: 2
[tmc2209 extruder]
uart_pin: EBBCan:PA15
run_current: 0.650
stealthchop_threshold: 999999
[fan]
pin: EBBCan:PA0
[heater_fan hotend_fan]
pin: EBBCan:PA1
heater: extruder
heater_temp: 50.0
#[heater_fan 4W_FAN0]
#pin: EBBCan:PB14
#tachometer_pin: EBBCan:PB15
#tachometer_ppr: 1
#[neopixel hotend_rgb]
#pin: EBBCan:PD3
#[bltouch]
#sensor_pin: ^EBBCan:PB8
#control_pin: EBBCan:PB9
## NPN and PNP proximity switch types can be set by jumper
#[probe]
#pin: ^EBBCan:PC13
#[output_pin PB5]
#pin: EBBCan:PB5
#[output_pin PB7]
#pin: EBBCan:PB7
#[output_pin PB6]
#pin: EBBCan:PB6

View file

@ -10,21 +10,21 @@ serial: /dev/serial/by-id/usb-Klipper_Klipper_firmware_12345-if00
#canbus_uuid: 0e0d81e4210c
[adxl345]
cs_pin: HermitCrab: PB12
cs_pin: HermitCrab:PB12
spi_bus: spi2
axes_map: y,z,-x
[extruder]
step_pin: HermitCrab: PA6
dir_pin: !HermitCrab: PA7
enable_pin: !HermitCrab: PA5
step_pin: HermitCrab:PA6
dir_pin: !HermitCrab:PA7
enable_pin: !HermitCrab:PA5
microsteps: 16
rotation_distance: 33.500
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: HermitCrab: PA2
heater_pin: HermitCrab:PA2
sensor_type: EPCOS 100K B57560G104F
sensor_pin: HermitCrab: PA1
sensor_pin: HermitCrab:PA1
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
@ -33,15 +33,15 @@ min_temp: 0
max_temp: 250
[tmc2209 extruder]
uart_pin: HermitCrab: PB0
uart_pin: HermitCrab:PB0
run_current: 0.650
stealthchop_threshold: 999999
[fan]
pin: HermitCrab: PA4
pin: HermitCrab:PA4
[heater_fan hotend_fan]
pin: HermitCrab: PA3
pin: HermitCrab:PA3
heater: extruder
heater_temp: 50.0

177
config/sample-corexyuv.cfg Normal file
View file

@ -0,0 +1,177 @@
# This file contains a configuration snippet for a CoreXYUV
# printer with an independent dual extruder moving over X and Y axes.
# See docs/Config_Reference.md for a description of parameters.
[carriage x]
position_endstop: 0
position_max: 300
homing_speed: 50
endstop_pin: ^PE5
[carriage y]
position_endstop: 0
position_max: 200
homing_speed: 50
endstop_pin: ^PJ1
[dual_carriage u]
primary_carriage: x
safe_distance: 70
position_endstop: 300
position_max: 300
homing_speed: 50
endstop_pin: ^PE4
[dual_carriage v]
primary_carriage: y
safe_distance: 50
position_endstop: 200
position_max: 200
homing_speed: 50
endstop_pin: ^PD4
[stepper a]
carriages: x+y
step_pin: PF0
dir_pin: PF1
enable_pin: !PD7
microsteps: 16
rotation_distance: 40
[stepper b]
carriages: u-v
step_pin: PH1
dir_pin: PH0
enable_pin: !PA1
microsteps: 16
rotation_distance: 40
[stepper c]
carriages: x-y
step_pin: PF6
dir_pin: !PF7
enable_pin: !PF2
microsteps: 16
rotation_distance: 40
[stepper d]
carriages: u+v
step_pin: PE3
dir_pin: !PH6
enable_pin: !PG5
microsteps: 16
rotation_distance: 40
[extruder]
step_pin: PA4
dir_pin: PA6
enable_pin: !PA2
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB4
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK5
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
[gcode_macro PARK_extruder]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=x
SET_DUAL_CARRIAGE CARRIAGE=y
G90
G1 X0 Y0
[gcode_macro T0]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=x
SET_DUAL_CARRIAGE CARRIAGE=y
[extruder1]
step_pin: PC1
dir_pin: PC3
enable_pin: !PC7
microsteps: 16
rotation_distance: 33.5
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PB5
sensor_type: EPCOS 100K B57560G104F
sensor_pin: PK7
control: pid
pid_Kp: 22.2
pid_Ki: 1.08
pid_Kd: 114
min_temp: 0
max_temp: 250
[gcode_macro PARK_extruder1]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=u
SET_DUAL_CARRIAGE CARRIAGE=v
G90
G1 X300 Y200
[gcode_macro T1]
gcode:
PARK_{printer.toolhead.extruder}
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=u
SET_DUAL_CARRIAGE CARRIAGE=v
# A helper script to activate copy mode
[gcode_macro ACTIVATE_COPY_MODE]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=x MODE=PRIMARY
SET_DUAL_CARRIAGE CARRIAGE=y MODE=PRIMARY
G1 X0 Y0
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=u MODE=PRIMARY
SET_DUAL_CARRIAGE CARRIAGE=v MODE=PRIMARY
G1 X150 Y100
SET_DUAL_CARRIAGE CARRIAGE=u MODE=COPY
SET_DUAL_CARRIAGE CARRIAGE=v MODE=COPY
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
# A helper script to activate mirror mode
[gcode_macro ACTIVATE_MIRROR_MODE]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=x MODE=PRIMARY
SET_DUAL_CARRIAGE CARRIAGE=y MODE=PRIMARY
G1 X0 Y0
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=u MODE=PRIMARY
SET_DUAL_CARRIAGE CARRIAGE=v MODE=PRIMARY
G1 X300 Y100
SET_DUAL_CARRIAGE CARRIAGE=u MODE=MIRROR
SET_DUAL_CARRIAGE CARRIAGE=v MODE=COPY
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
[printer]
kinematics: generic_cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
## An optional input shaper support
#[input_shaper]
## The section is intentionally empty
#
#[delayed_gcode init_shaper]
#initial_duration: 0.1
#gcode:
# SET_DUAL_CARRIAGE CARRIAGE=u
# SET_DUAL_CARRIAGE CARRIAGE=v
# SET_INPUT_SHAPER SHAPER_TYPE_X=<dual_carriage_x_shaper> SHAPER_FREQ_X=<dual_carriage_x_freq> SHAPER_TYPE_Y=<dual_carriage_y_shaper> SHAPER_FREQ_Y=<dual_carriage_y_freq>
# SET_DUAL_CARRIAGE CARRIAGE=x MODE=PRIMARY
# SET_DUAL_CARRIAGE CARRIAGE=y MODE=PRIMARY
# SET_INPUT_SHAPER SHAPER_TYPE_X=<primary_carriage_x_shaper> SHAPER_FREQ_X=<primary_carriage_x_freq> SHAPER_TYPE_Y=<primary_carriage_y_shaper> SHAPER_FREQ_Y=<primary_carriage_y_freq>

View file

@ -0,0 +1,90 @@
# This file contains common pin mappings for the Duet3 1LC. To use
# this config, the firmware should be compiled for the SAMC21G18 with:
# Bootloader offset of "No Bootloader"
# Clock Reference of "25 Mhz crystal" if the board version is v1.1 or later
# Clock Reference of "12 Mhz crystal" if the board version is v1.0 or earlier
# Communication interface of "CAN bus (on PA25/PA24)"
# To flash the board use a debugger, or use a raspberry pi and follow
# the instructions at docs/Bootloaders.md fot the SAMC21. You may
# supply power to the 1LC by connecting the 3.3v rail on the Pi to the
# 5v input of the SWD header on the 1LC.
# See docs/Config_Reference.md for a description of parameters.
# Pins for reference, v1.3 board:
# Driver Step Pin - PA27
# Driver Dir Pin - PA28
# Driver Enable - !PB2
# Thermistor Pins - TEMP0:PB9 TEMP1:PA2
# Pullup Resistor - 2200
# Vssa Sense:PA6 | Vref Sense:PA7
# Current Sense resistor for drivers - 0.091ohm
# CAN Pins - CAN0_TX:PA24 CAN0_RX:PA25
# Heaters - OUT_0:PA11
# Fan outputs - OUT_1:PA10 OUT_2:PB11
# Tach Pins for Fans - OUT_1_TACHO:PA13 OUT_2_TACHO:PB10
# GPIO_out - IO0:PA12
# GPIO_in - IO0:PA9 IO1:PA21 IO2:PA18
# Driver Diag - 0:PB3
[adc_scaled toolboard_vref_scaled]
vref_pin: toolboard:PA7
vssa_pin: toolboard:PA6
[extruder]
step_pin: toolboard:PA27
dir_pin: toolboard:PA28
enable_pin: !toolboard:PB2
rotation_distance: 23.1336867485061
gear_ratio: 50:10
microsteps: 64
full_steps_per_rotation: 200
nozzle_diameter: 0.400
filament_diameter: 1.75
heater_pin: toolboard:PA11
sensor_type: PT1000
sensor_pin: toolboard_vref_scaled:PB9
pullup_resistor: 2200
min_temp: 0
max_temp: 280
max_power: 1.0
control: pid
pwm_cycle_time: 0.01666
pid_Kp: 26.454
pid_Ki: 1.357
pid_Kd: 128.955
[tmc2209 extruder]
uart_pin: toolboard:PA20
tx_pin: toolboard:PA22
interpolate: False
run_current: 0.35
sense_resistor: 0.091
[fan]
pin: toolboard:PA10
tachometer_pin: toolboard:PA13
[heater_fan hotend_fan]
pin: toolboard:PB11
tachometer_pin: toolboard:PB10
heater: extruder
heater_temp: 50.0
[probe]
pin: toolboard:PA9
z_offset: 20
[samd_sercom sercom_i2c]
sercom: sercom1
tx_pin: toolboard:PA16
clk_pin: toolboard:PA17
[lis3dh]
i2c_mcu: toolboard
i2c_bus: sercom1
[mcu toolboard]
canbus_uuid: 4b194673554e

View file

@ -19,15 +19,15 @@ canbus_uuid: ac20f0bbda05
# ~/klippy-env/bin/python ~/klipper/scripts/canbus_query.py can0
[extruder]
step_pin: huvud: PB3
dir_pin: huvud: PB4
enable_pin: !huvud: PB5
step_pin: huvud:PB3
dir_pin: huvud:PB4
enable_pin: !huvud:PB5
rotation_distance: 22.52453125
nozzle_diameter: 0.400
filament_diameter: 1.75
heater_pin: huvud: PA6
heater_pin: huvud:PA6
sensor_type: NTC 100K MGB18-104F39050L32
sensor_pin: huvud: PA0
sensor_pin: huvud:PA0
pullup_resistor: 2200
min_temp: 0
max_temp: 300
@ -37,22 +37,22 @@ pid_ki: 1.304
pid_kd: 131.721
[tmc2209 extruder]
uart_pin: huvud: PA10
tx_pin: huvud: PA9
uart_pin: huvud:PA10
tx_pin: huvud:PA9
run_current: 0.35
[probe]
pin: huvud: PB12
pin: huvud:PB12
z_offset: 0
[fan]
pin: huvud: PA8
pin: huvud:PA8
[heater_fan extruder_fan]
pin: huvud: PA7
pin: huvud:PA7
[adxl345]
cs_pin: PB1
[led huvud_led]
blue_pin: huvud: PC13
blue_pin: huvud:PC13

View file

@ -62,6 +62,8 @@ endstop_pin: ^ar2
position_endstop: 200
position_max: 200
homing_speed: 50
# A minimum distance between the carriages to enforce
safe_distance: 40
[extruder1]
step_pin: ar36
@ -94,3 +96,37 @@ gcode:
ACTIVATE_EXTRUDER EXTRUDER=extruder1
SET_DUAL_CARRIAGE CARRIAGE=1
SET_GCODE_OFFSET Y=15
# A helper script to activate copy mode
[gcode_macro ACTIVATE_COPY_MODE]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=0 MODE=PRIMARY
G1 X0
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
G1 X100
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=COPY
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
# A helper script to activate mirror mode
[gcode_macro ACTIVATE_MIRROR_MODE]
gcode:
SET_DUAL_CARRIAGE CARRIAGE=0 MODE=PRIMARY
G1 X0
ACTIVATE_EXTRUDER EXTRUDER=extruder
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=PRIMARY
G1 X200
SET_DUAL_CARRIAGE CARRIAGE=1 MODE=MIRROR
SYNC_EXTRUDER_MOTION EXTRUDER=extruder1 MOTION_QUEUE=extruder
## An optional input shaper support
#[input_shaper]
## The section is intentionally empty
#
#[delayed_gcode init_shaper]
#initial_duration: 0.1
#gcode:
# SET_DUAL_CARRIAGE CARRIAGE=1
# SET_INPUT_SHAPER SHAPER_TYPE_X=<dual_carriage_shaper> SHAPER_FREQ_X=<dual_carriage_freq> SHAPER_TYPE_Y=<y_shaper> SHAPER_FREQ_Y=<y_freq>
# SET_DUAL_CARRIAGE CARRIAGE=0
# SET_INPUT_SHAPER SHAPER_TYPE_X=<primary_carriage_shaper> SHAPER_FREQ_X=<primary_carriage_freq> SHAPER_TYPE_Y=<y_shaper> SHAPER_FREQ_Y=<y_freq>

View file

@ -10,7 +10,7 @@
######################################################################
# Replace the slicer's custom start and end g-code scripts with
# START_PRINT and END_PRINT.
# START_PRINT and END_PRINT. See docs/Slicers.md for more information on using these macros.
[gcode_macro START_PRINT]
gcode:
@ -61,12 +61,10 @@ gcode:
# P is the tone duration, S the tone frequency.
# The frequency won't be pitch perfect.
[output_pin BEEPER_pin]
[pwm_cycle_time BEEPER_pin]
pin: ar37
# Beeper pin. This parameter must be provided.
# ar37 is the default RAMPS/MKS pin.
pwm: True
# A piezo beeper needs a PWM signal, a DC buzzer doesn't.
value: 0
# Silent at power on, set to 1 if active low.
shutdown_value: 0

View file

@ -2,9 +2,8 @@
# such as a laser or spindle.
# See docs/Using_PWM_Tools.md for a more detailed description.
[output_pin TOOL]
[pwm_tool TOOL]
pin: !ar9 # use your fan's pin number
pwm: True
hardware_pwm: True
cycle_time: 0.001
shutdown_value: 0
@ -36,9 +35,9 @@ gcode:
[menu __main __control __toolonoff]
type: input
enable: {'output_pin TOOL' in printer}
enable: {'pwm_tool TOOL' in printer}
name: Fan: {'ON ' if menu.input else 'OFF'}
input: {printer['output_pin TOOL'].value}
input: {printer['pwm_tool TOOL'].value}
input_min: 0
input_max: 1
input_step: 1
@ -47,9 +46,9 @@ gcode:
[menu __main __control __toolspeed]
type: input
enable: {'output_pin TOOL' in printer}
enable: {'pwm_tool TOOL' in printer}
name: Tool speed: {'%3d' % (menu.input*100)}%
input: {printer['output_pin TOOL'].value}
input: {printer['pwm_tool TOOL'].value}
input_min: 0
input_max: 1
input_step: 0.01

View file

@ -364,6 +364,43 @@ and might later produce asynchronous messages such as:
The "header" field in the initial query response is used to describe
the fields found in later "data" responses.
### load_cell/dump_force
This endpoint is used to subscribe to force data produced by a load_cell.
Using this endpoint may increase Klipper's system load.
A request may look like:
`{"id": 123, "method":"load_cell/dump_force",
"params": {"sensor": "load_cell", "response_template": {}}}`
and might return:
`{"id": 123,"result":{"header":["time", "force (g)", "counts", "tare_counts"]}}`
and might later produce asynchronous messages such as:
`{"params":{"data":[[3292.432935, 40.65, 562534, -234467]]}}`
The "header" field in the initial query response is used to describe
the fields found in later "data" responses.
### load_cell_probe/dump_taps
This endpoint is used to subscribe to details of probing "tap" events.
Using this endpoint may increase Klipper's system load.
A request may look like:
`{"id": 123, "method":"load_cell/dump_force",
"params": {"sensor": "load_cell", "response_template": {}}}`
and might return:
`{"id": 123,"result":{"header":["probe_tap_event"]}}`
and might later produce asynchronous messages such as:
```
{"params":{"tap":'{
"time": [118032.28039, 118032.2834, ...],
"force": [-459.4213119680034, -458.1640702543264, ...],
}}}
```
This data can be used to render:
* The time/force graph
### pause_resume/cancel
This endpoint is similar to running the "PRINT_CANCEL" G-Code command.
@ -401,3 +438,130 @@ might return:
As with the "gcode/script" endpoint, this endpoint only completes
after any pending G-Code commands complete.
### bed_mesh/dump_mesh
Dumps the configuration and state for the current mesh and all
saved profiles.
For example:
`{"id": 123, "method": "bed_mesh/dump_mesh"}`
might return:
```
{
"current_mesh": {
"name": "eddy-scan-test",
"probed_matrix": [...],
"mesh_matrix": [...],
"mesh_params": {
"x_count": 9,
"y_count": 9,
"mesh_x_pps": 2,
"mesh_y_pps": 2,
"algo": "bicubic",
"tension": 0.5,
"min_x": 20,
"max_x": 330,
"min_y": 30,
"max_y": 320
}
},
"profiles": {
"default": {
"points": [...],
"mesh_params": {
"min_x": 20,
"max_x": 330,
"min_y": 30,
"max_y": 320,
"x_count": 9,
"y_count": 9,
"mesh_x_pps": 2,
"mesh_y_pps": 2,
"algo": "bicubic",
"tension": 0.5
}
},
"eddy-scan-test": {
"points": [...],
"mesh_params": {
"x_count": 9,
"y_count": 9,
"mesh_x_pps": 2,
"mesh_y_pps": 2,
"algo": "bicubic",
"tension": 0.5,
"min_x": 20,
"max_x": 330,
"min_y": 30,
"max_y": 320
}
},
"eddy-rapid-test": {
"points": [...],
"mesh_params": {
"x_count": 9,
"y_count": 9,
"mesh_x_pps": 2,
"mesh_y_pps": 2,
"algo": "bicubic",
"tension": 0.5,
"min_x": 20,
"max_x": 330,
"min_y": 30,
"max_y": 320
}
}
},
"calibration": {
"points": [...],
"config": {
"x_count": 9,
"y_count": 9,
"mesh_x_pps": 2,
"mesh_y_pps": 2,
"algo": "bicubic",
"tension": 0.5,
"mesh_min": [
20,
30
],
"mesh_max": [
330,
320
],
"origin": null,
"radius": null
},
"probe_path": [...],
"rapid_path": [...]
},
"probe_offsets": [
0,
25,
0.5
],
"axis_minimum": [
0,
0,
-5,
0
],
"axis_maximum": [
351,
358,
330,
0
]
}
```
The `dump_mesh` endpoint takes one optional parameter, `mesh_args`.
This parameter must be an object, where the keys and values are
parameters available to [BED_MESH_CALIBRATE](#bed_mesh_calibrate).
This will update the mesh configuration and probe points using the
supplied parameters prior to returning the result. It is recommended
to omit mesh parameters unless it is desired to visualize the probe points
and/or travel path before performing `BED_MESH_CALIBRATE`.

View file

@ -0,0 +1,73 @@
# Axis Twist Compensation
This document describes the `[axis_twist_compensation]` module.
Some printers may have a small twist in their X rail which can skew the results
of a probe attached to the X carriage.
This is common in printers with designs like the Prusa MK3, Sovol SV06 etc and is
further described under [probe location
bias](Probe_Calibrate.md#location-bias-check). It may result in
probe operations such as [Bed Mesh](Bed_Mesh.md),
[Screws Tilt Adjust](G-Codes.md#screws_tilt_adjust),
[Z Tilt Adjust](G-Codes.md#z_tilt_adjust) etc returning inaccurate
representations of the bed.
This module uses manual measurements by the user to correct the probe's results.
Note that if your axis is significantly twisted it is strongly recommended to
first use mechanical means to fix it prior to applying software corrections.
**Warning**: This module is not compatible with dockable probes yet and will
try to probe the bed without attaching the probe if you use it.
## Overview of compensation usage
> **Tip:** Make sure the [probe X and Y offsets](Config_Reference.md#probe) are
> correctly set as they greatly influence calibration.
### Basic Usage: X-Axis Calibration
1. After setting up the `[axis_twist_compensation]` module, run:
```
AXIS_TWIST_COMPENSATION_CALIBRATE
```
This command will calibrate the X-axis by default.
- The calibration wizard will prompt you to measure the probe Z offset at
several points along the bed.
- By default, the calibration uses 3 points, but you can specify a different
number with the option:
``
SAMPLE_COUNT=<value>
``
2. **Adjust Your Z Offset:**
After completing the calibration, be sure to
[adjust your Z offset](Probe_Calibrate.md#calibrating-probe-z-offset).
3. **Perform Bed Leveling Operations:**
Use probe-based operations as needed, such as:
- [Screws Tilt Adjust](G-Codes.md#screws_tilt_adjust)
- [Z Tilt Adjust](G-Codes.md#z_tilt_adjust)
4. **Finalize the Setup:**
- Home all axes, and perform a [Bed Mesh](Bed_Mesh.md) if necessary.
- Run a test print, followed by any
[fine-tuning](Axis_Twist_Compensation.md#fine-tuning)
if needed.
### For Y-Axis Calibration
The calibration process for the Y-axis is similar to the X-axis. To calibrate
the Y-axis, use:
```
AXIS_TWIST_COMPENSATION_CALIBRATE AXIS=Y
```
This will guide you through the same measuring process as for the X-axis.
> **Tip:** Bed temperature and nozzle temperature and size do not seem to have
> an influence to the calibration process.
## [axis_twist_compensation] setup and commands
Configuration options for `[axis_twist_compensation]` can be found in the
[Configuration Reference](Config_Reference.md#axis_twist_compensation).
Commands for `[axis_twist_compensation]` can be found in the
[G-Codes Reference](G-Codes.md#axis_twist_compensation)

View file

@ -6,23 +6,64 @@ PRU.
## Building an OS image
Start by installing the
[Debian 9.9 2019-08-03 4GB SD IoT](https://beagleboard.org/latest-images)
[Debian 11.7 2023-09-02 4GB microSD IoT](https://beagleboard.org/latest-images)
image. One may run the image from either a micro-SD card or from
builtin eMMC. If using the eMMC, install it to eMMC now by following
the instructions from the above link.
Then ssh into the Beaglebone machine (`ssh debian@beaglebone` --
password is `temppwd`) and install Klipper by running the following
password is `temppwd`).
Before start installing Klipper you need to free-up additional space.
there are 3 options to do that:
1. remove some BeagleBone "Demo" resources
2. if you did boot from SD-Card, and it's bigger than 4Gb - you can expand
current filesystem to take whole card space
3. do option #1 and #2 together.
To remove some BeagleBone "Demo" resources execute these commands
```
sudo apt remove bb-node-red-installer
sudo apt remove bb-code-server
```
To expand filesystem to full size of your SD-Card execute this command, reboot is not required.
```
sudo growpart /dev/mmcblk0 1
sudo resize2fs /dev/mmcblk0p1
```
Install Klipper by running the following
commands:
```
git clone https://github.com/Klipper3d/klipper
git clone https://github.com/Klipper3d/klipper.git
./klipper/scripts/install-beaglebone.sh
```
## Install Octoprint
After installing Klipper you need to decide what kind of deployment do you need,
but take a note that BeagleBone is 3.3v based hardware and in most cases you can't
directly connect pins to 5v or 12v based hardware without conversion boards.
One may then install Octoprint:
As Klipper have multimodule architecture on BeagleBone you can achieve many different use cases,
but general ones are following:
Use case 1: Use BeagleBone only as a host system to run Klipper and additional software
like OctoPrint/Fluidd + Moonraker/... and this configuration will be driving
external micro-controllers via serial/usb/canbus connections.
Use case 2: Use BeagleBone with extension board (cape) like CRAMPS board.
in this configuration BeagleBone will host Klipper + additional software, and
it will drive extension board with BeagleBone PRU cores (2 additional cores 200Mh, 32Bit).
Use case 3: It's same as "Use case 1" but additionally you want to drive
BeagleBone GPIOs with high speed by utilizing PRU cores to offload main CPU.
## Installing Octoprint
One may then install Octoprint or fully skip this section if desired other software:
```
git clone https://github.com/foosel/OctoPrint.git
cd OctoPrint/
@ -51,25 +92,89 @@ Then start the Octoprint service:
```
sudo systemctl start octoprint
```
Make sure the OctoPrint web server is accessible - it should be at:
Wait 1-2 minutes and make sure the OctoPrint web server is accessible - it should be at:
[http://beaglebone:5000/](http://beaglebone:5000/)
## Building the micro-controller code
To compile the Klipper micro-controller code, start by configuring it
for the "Beaglebone PRU":
## Building the BeagleBone PRU micro-controller code (PRU firmware)
This section is required for "Use case 2" and "Use case 3" mentioned above,
you should skip it for "Use case 1".
Check that required devices are present
```
sudo beagle-version
```
You should check that output contains successful "remoteproc" drivers loading and presence of PRU cores,
in Kernel 5.10 they should be "remoteproc1" and "remoteproc2" (4a334000.pru, 4a338000.pru)
Also check that many GPIOs are loaded they will look like "Allocated GPIO id=0 name='P8_03'"
Usually everything is fine and no hardware configuration is required.
If something is missing - try to play with "uboot overlays" options or with cape-overlays
Just for reference some output of working BeagleBone Black configuration with CRAMPS board:
```
model:[TI_AM335x_BeagleBone_Black]
UBOOT: Booted Device-Tree:[am335x-boneblack-uboot-univ.dts]
UBOOT: Loaded Overlay:[BB-ADC-00A0.bb.org-overlays]
UBOOT: Loaded Overlay:[BB-BONE-eMMC1-01-00A0.bb.org-overlays]
kernel:[5.10.168-ti-r71]
/boot/uEnv.txt Settings:
uboot_overlay_options:[enable_uboot_overlays=1]
uboot_overlay_options:[disable_uboot_overlay_video=0]
uboot_overlay_options:[disable_uboot_overlay_audio=1]
uboot_overlay_options:[disable_uboot_overlay_wireless=1]
uboot_overlay_options:[enable_uboot_cape_universal=1]
pkg:[bb-cape-overlays]:[4.14.20210821.0-0~bullseye+20210821]
pkg:[bb-customizations]:[1.20230720.1-0~bullseye+20230720]
pkg:[bb-usb-gadgets]:[1.20230414.0-0~bullseye+20230414]
pkg:[bb-wl18xx-firmware]:[1.20230414.0-0~bullseye+20230414]
.............
.............
```
To compile the Klipper micro-controller code, start by configuring it for the "Beaglebone PRU",
for "BeagleBone Black" additionally disable options "Support GPIO Bit-banging devices" and disable "Support LCD devices"
inside the "Optional features" because they will not fit in 8Kb PRU firmware memory,
then exit and save config:
```
cd ~/klipper/
make menuconfig
```
To build and install the new micro-controller code, run:
To build and install the new PRU micro-controller code, run:
```
sudo service klipper stop
make flash
sudo service klipper start
```
After previous commands was executed your PRU firmware should be ready and started
to check if everything was fine you can execute following command
```
dmesg
```
and compare last messages with sample one which indicate that everything started properly:
```
[ 71.105499] remoteproc remoteproc1: 4a334000.pru is available
[ 71.157155] remoteproc remoteproc2: 4a338000.pru is available
[ 73.256287] remoteproc remoteproc1: powering up 4a334000.pru
[ 73.279246] remoteproc remoteproc1: Booting fw image am335x-pru0-fw, size 97112
[ 73.285807] remoteproc1#vdev0buffer: registered virtio0 (type 7)
[ 73.285836] remoteproc remoteproc1: remote processor 4a334000.pru is now up
[ 73.286322] remoteproc remoteproc2: powering up 4a338000.pru
[ 73.313717] remoteproc remoteproc2: Booting fw image am335x-pru1-fw, size 188560
[ 73.313753] remoteproc remoteproc2: header-less resource table
[ 73.329964] remoteproc remoteproc2: header-less resource table
[ 73.348321] remoteproc remoteproc2: remote processor 4a338000.pru is now up
[ 73.443355] virtio_rpmsg_bus virtio0: creating channel rpmsg-pru addr 0x1e
[ 73.443727] virtio_rpmsg_bus virtio0: msg received with no recipient
[ 73.444352] virtio_rpmsg_bus virtio0: rpmsg host is online
[ 73.540993] rpmsg_pru virtio0.rpmsg-pru.-1.30: new rpmsg_pru device: /dev/rpmsg_pru30
```
take a note about "/dev/rpmsg_pru30" - it's your future serial device for main mcu configuration
this device is required to be present, if it's absent - your PRU cores did not start properly.
## Building and installing Linux host micro-controller code
This section is required for "Use case 2" and optional for "Use case 3" mentioned above
It is also necessary to compile and install the micro-controller code
for a Linux host process. Configure it a second time for a "Linux process":
@ -83,12 +188,24 @@ sudo service klipper stop
make flash
sudo service klipper start
```
take a note about "/tmp/klipper_host_mcu" - it will be your future serial device for "mcu host"
if that file don't exist - refer to "scripts/klipper-mcu.service" file, it was installed by
previous commands, and it's responsible for it.
Take a note for "Use case 2" about following: when you will define printer configuration you should always
use temperature sensors from "mcu host" because ADCs not present in default "mcu" (PRU cores).
Sample configuration of "sensor_pin" for extruder and heated bed are available in "generic-cramps.cfg"
You can use any other GPIO directly from "mcu host" by referencing them this way "host:gpiochip1/gpio17"
but that should be avoided because it will be creating additional load on main CPU and most probably
you can't use them for stepper control.
## Remaining configuration
Complete the installation by configuring Klipper and Octoprint
Complete the installation by configuring Klipper
following the instructions in
the main [Installation](Installation.md#configuring-klipper) document.
the main [Installation](Installation.md#configuring-octoprint-to-use-klipper) document.
## Printing on the Beaglebone
@ -97,4 +214,111 @@ OctoPrint well. Print stalls have been known to occur on complex
prints (the printer may move faster than OctoPrint can send movement
commands). If this occurs, consider using the "virtual_sdcard" feature
(see [Config Reference](Config_Reference.md#virtual_sdcard) for
details) to print directly from Klipper.
details) to print directly from Klipper
and disable any DEBUG or VERBOSE logging options if you did enable them.
## AVR micro-controller code build
This environment have everything to build necessary micro-controller code except AVR,
AVR packages was removed because of conflict with PRU packages.
if you still want to build AVR micro-controller code in this environment you need to remove
PRU packages and install AVR packages by executing following commands
```
sudo apt-get remove gcc-pru
sudo apt-get install avrdude gcc-avr binutils-avr avr-libc
```
if you need to restore PRU packages - then remove ARV packages before that
```
sudo apt-get remove avrdude gcc-avr binutils-avr avr-libc
sudo apt-get install gcc-pru
```
## Hardware Pin designation
BeagleBone is very flexible in terms of pin designation, same pin can be configured for different function
but always single function for single pin, same function can be present on different pins.
So you can't have multiple functions on single pin or have same function on multiple pins.
Example:
P9_20 - i2c2_sda/can0_tx/spi1_cs0/gpio0_12/uart1_ctsn
P9_19 - i2c2_scl/can0_rx/spi1_cs1/gpio0_13/uart1_rtsn
P9_24 - i2c1_scl/can1_rx/gpio0_15/uart1_tx
P9_26 - i2c1_sda/can1_tx/gpio0_14/uart1_rx
Pin designation is defined by using special "overlays" which will be loaded during linux boot
they are configured by editing file /boot/uEnv.txt with elevated permissions
```
sudo editor /boot/uEnv.txt
```
and defining which functionality to load, for example to enable CAN1 you need to define overlay for it
```
uboot_overlay_addr4=/lib/firmware/BB-CAN1-00A0.dtbo
```
This overlay BB-CAN1-00A0.dtbo will reconfigure all required pins for CAN1 and create CAN device in Linux.
Any change in overlays will require system reboot to be applied.
If you need to understand which pins are involved in some overlay - you can analyze source files in
this location: /opt/sources/bb.org-overlays/src/arm/
or search info in BeagleBone forums.
## Enabling hardware SPI
BeagleBone usually have multiple hardware SPI buses, for example BeagleBone Black can have 2 of them,
they can work up to 48Mhz, but usually they are limited to 16Mhz by Kernel Device-tree.
By default, in BeagleBone Black some of SPI1 pins are configured for HDMI-Audio output,
to fully enable 4-wire SPI1 you need to disable HDMI Audio and enable SPI1
To do that edit file /boot/uEnv.txt with elevated permissions
```
sudo editor /boot/uEnv.txt
```
uncomment variable
```
disable_uboot_overlay_audio=1
```
next uncomment variable and define it this way
```
uboot_overlay_addr4=/lib/firmware/BB-SPIDEV1-00A0.dtbo
```
Save changes in /boot/uEnv.txt and reboot the board.
Now you have SPI1 Enabled, to verify its presence execute command
```
ls /dev/spidev1.*
```
Take a note that BeagleBone usually is 3.3v based hardware and to use 5V SPI devices
you need to add Level-Shifting chip, for example SN74CBTD3861, SN74LVC1G34 or similar.
If you are using CRAMPS board - it already contains Level-Shifting chip and SPI1 pins
will become available on P503 port, and they can accept 5v hardware,
check CRAMPS board Schematics for pin references.
## Enabling hardware I2C
BeagleBone usually have multiple hardware I2C buses, for example BeagleBone Black can have 3 of them,
they support speed up-to 400Kbit Fast mode.
By default, in BeagleBone Black there are two of them (i2c-1 and i2c-2) usually both are already configured and
present on P9, third ic2-0 usually reserved for internal use.
If you are using CRAMPS board then i2c-2 is present on P303 port with 3.3v level,
If you want to obtain I2c-1 in CRAMPS board - you can get them on Extruder1.Step, Extruder1.Dir pins,
they also are 3.3v based, check CRAMPS board Schematics for pin references.
Related overlays, for [Hardware Pin designation](#hardware-pin-designation):
I2C1(100Kbit): BB-I2C1-00A0.dtbo
I2C1(400Kbit): BB-I2C1-FAST-00A0.dtbo
I2C2(100Kbit): BB-I2C2-00A0.dtbo
I2C2(400Kbit): BB-I2C2-FAST-00A0.dtbo
## Enabling hardware UART(Serial)/CAN
BeagleBone have up to 6 hardware UART(Serial) buses (up to 3Mbit)
and up to 2 hardware CAN(1Mbit) buses.
UART1(RX,TX) and CAN1(TX,RX) and I2C2(SDA,SCL) are using same pins - so you need to chose what to use
UART1(CTSN,RTSN) and CAN0(TX,RX) and I2C1(SDA,SCL) are using same pins - so you need to chose what to use
All UART/CAN related pins are 3.3v based, so you will need to use Transceiver chips/boards like SN74LVC2G241DCUR (for UART),
SN65HVD230 (for CAN), TTL-RS485 (for RS-485) or something similar which can convert 3.3v signals to appropriate levels.
Related overlays, for [Hardware Pin designation](#hardware-pin-designation)
CAN0: BB-CAN0-00A0.dtbo
CAN1: BB-CAN1-00A0.dtbo
UART0: - used for Console
UART1(RX,TX): BB-UART1-00A0.dtbo
UART1(RTS,CTS): BB-UART1-RTSCTS-00A0.dtbo
UART2(RX,TX): BB-UART2-00A0.dtbo
UART3(RX,TX): BB-UART3-00A0.dtbo
UART4(RS-485): BB-UART4-RS485-00A0.dtbo
UART5(RX,TX): BB-UART5-00A0.dtbo

View file

@ -1,8 +1,8 @@
# Bed Mesh
The Bed Mesh module may be used to compensate for bed surface irregularties to
achieve a better first layer across the entire bed. It should be noted that
software based correction will not achieve perfect results, it can only
The Bed Mesh module may be used to compensate for bed surface irregularities
to achieve a better first layer across the entire bed. It should be noted
that software based correction will not achieve perfect results, it can only
approximate the shape of the bed. Bed Mesh also cannot compensate for
mechanical and electrical issues. If an axis is skewed or a probe is not
accurate then the bed_mesh module will not receive accurate results from
@ -44,10 +44,9 @@ probe_count: 5, 3
- `mesh_max: 240, 198`\
_Required_\
The probed coordinate farthest farthest from the origin. This is not
necessarily the last point probed, as the probing process occurs in a
zig-zag fashion. As with `mesh_min`, this coordiante is relative to
the probe's location.
The probed coordinate farthest from the origin. This is not necessarily
the last point probed, as the probing process occurs in a zig-zag fashion.
As with `mesh_min`, this coordinate is relative to the probe's location.
- `probe_count: 5, 3`\
_Default Value: 3, 3_\
@ -101,7 +100,7 @@ round_probe_count: 5
that the center of the mesh is probed.
The illustration below shows how the probed points are generated. As you can see,
setting the `mesh_origin` to (-10, 0) allows us to specifiy a larger mesh radius
setting the `mesh_origin` to (-10, 0) allows us to specify a larger mesh radius
of 85.
![bedmesh_round_basic](img/bedmesh_round_basic.svg)
@ -114,7 +113,7 @@ Each of the advanced options apply to round beds in the same manner.
### Mesh Interpolation
While its possible to sample the probed matrix directly using simple bilinear
While its possible to sample the probed matrix directly using simple bi-linear
interpolation to determine the Z-Values between probed points, it is often
useful to interpolate extra points using more advanced interpolation algorithms
to increase mesh density. These algorithms add curvature to the mesh,
@ -142,7 +141,7 @@ bicubic_tension: 0.2
integer pair, and also may be specified a single integer that is applied
to both axes. In this example there are 4 segments along the X axis
and 2 segments along the Y axis. This evaluates to 8 interpolated
points along X, 6 interpolated points along Y, which results in a 13x8
points along X, 6 interpolated points along Y, which results in a 13x9
mesh. Note that if mesh_pps is set to 0 then mesh interpolation is
disabled and the probed matrix will be sampled directly.
@ -207,7 +206,7 @@ split_delta_z: .025
Generally the default values for these options are sufficient, in fact the
default value of 5mm for the `move_check_distance` may be overkill. However an
advanced user may wish to experiment with these options in an effort to squeeze
out the optimial first layer.
out the optimal first layer.
### Mesh Fade
@ -255,19 +254,24 @@ fade_target: 0
example, lets assume your homing position on the bed is an outlier, its
.2 mm lower than the average probed height of the bed. If the `fade_target`
is 0, fade will shrink the print by an average of .2 mm across the bed. By
setting the `fade_target` to .2, the homed area will expand by .2 mm, however
the rest of the bed will have an accurately sized. Generally its a good idea
setting the `fade_target` to .2, the homed area will expand by .2 mm, however,
the rest of the bed will be accurately sized. Generally its a good idea
to leave `fade_target` out of the configuration so the average height of the
mesh is used, however it may be desirable to manually adjust the fade target
if one wants to print on a specific portion of the bed.
### The Relative Reference Index
### Configuring the zero reference position
Most probes are suceptible to drift, ie: inaccuracies in probing introduced by
heat or interference. This can make calculating the probe's z-offset
challenging, particuarly at different bed temperatures. As such, some printers
use an endstop for homing the Z axis, and a probe for calibrating the mesh.
These printers can benefit from configuring the relative reference index.
Many probes are susceptible to "drift", ie: inaccuracies in probing introduced
by heat or interference. This can make calculating the probe's z-offset
challenging, particularly at different bed temperatures. As such, some
printers use an endstop for homing the Z axis and a probe for calibrating the
mesh. In this configuration it is possible offset the mesh so that the (X, Y)
`reference position` applies zero adjustment. The `reference postion` should
be the location on the bed where a
[Z_ENDSTOP_CALIBRATE](./Manual_Level.md#calibrating-a-z-endstop)
paper test is performed. The bed_mesh module provides the
`zero_reference_position` option for specifying this coordinate:
```
[bed_mesh]
@ -275,23 +279,45 @@ speed: 120
horizontal_move_z: 5
mesh_min: 35, 6
mesh_max: 240, 198
zero_reference_position: 125, 110
probe_count: 5, 3
relative_reference_index: 7
```
- `zero_reference_position: `\
_Default Value: None (disabled)_\
The `zero_reference_position` expects an (X, Y) coordinate matching that
of the `reference position` described above. If the coordinate lies within
the mesh then the mesh will be offset so the reference position applies zero
adjustment. If the coordinate lies outside of the mesh then the coordinate
will be probed after calibration, with the resulting z-value used as the
z-offset. Note that this coordinate must NOT be in a location specified as
a `faulty_region` if a probe is necessary.
#### The deprecated relative_reference_index
Existing configurations using the `relative_reference_index` option must be
updated to use the `zero_reference_position`. The response to the
[BED_MESH_OUTPUT PGP=1](#output) gcode command will include the (X, Y)
coordinate associated with the index; this position may be used as the value for
the `zero_reference_position`. The output will look similar to the following:
```
// bed_mesh: generated points
// Index | Tool Adjusted | Probe
// 0 | (1.0, 1.0) | (24.0, 6.0)
// 1 | (36.7, 1.0) | (59.7, 6.0)
// 2 | (72.3, 1.0) | (95.3, 6.0)
// 3 | (108.0, 1.0) | (131.0, 6.0)
... (additional generated points)
// bed_mesh: relative_reference_index 24 is (131.5, 108.0)
```
- `relative_reference_index: 7`\
_Default Value: None (disabled)_\
When the probed points are generated they are each assigned an index. You
can look up this index in klippy.log or by using BED_MESH_OUTPUT (see the
section on Bed Mesh GCodes below for more information). If you assign an
index to the `relative_reference_index` option, the value probed at this
coordinate will replace the probe's z_offset. This effectively makes
this coordinate the "zero" reference for the mesh.
_Note: The above output is also printed in `klippy.log` during initialization._
Using the example above we see that the `relative_reference_index` is
printed along with its coordinate. Thus the `zero_reference_position`
is `131.5, 108`.
When using the relative reference index, you should choose the index nearest
to the spot on the bed where Z endstop calibration was done. Note that
when looking up the index using the log or BED_MESH_OUTPUT, you should use
the coordinates listed under the "Probe" header to find the correct index.
### Faulty Regions
@ -343,21 +369,147 @@ are identified in green.
![bedmesh_interpolated](img/bedmesh_faulty_regions.svg)
### Adaptive Meshes
Adaptive bed meshing is a way to speed up the bed mesh generation by only probing
the area of the bed used by the objects being printed. When used, the method will
automatically adjust the mesh parameters based on the area occupied by the defined
print objects.
The adapted mesh area will be computed from the area defined by the boundaries of all
the defined print objects so it covers every object, including any margins defined in
the configuration. After the area is computed, the number of probe points will be
scaled down based on the ratio of the default mesh area and the adapted mesh area. To
illustrate this consider the following example:
For a 150mmx150mm bed with `mesh_min` set to `25,25` and `mesh_max` set to `125,125`,
the default mesh area is a 100mmx100mm square. An adapted mesh area of `50,50`
means a ratio of `0.5x0.5` between the adapted area and default mesh area.
If the `bed_mesh` configuration specified `probe_count` as `7x7`, the adapted bed
mesh will use 4x4 probe points (7 * 0.5 rounded up).
![adaptive_bedmesh](img/adaptive_bed_mesh.svg)
```
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 35, 6
mesh_max: 240, 198
probe_count: 5, 3
adaptive_margin: 5
```
- `adaptive_margin` \
_Default Value: 0_ \
Margin (in mm) to add around the area of the bed used by the defined objects. The diagram
below shows the adapted bed mesh area with an `adaptive_margin` of 5mm. The adapted mesh
area (area in green) is computed as the used bed area (area in blue) plus the defined margin.
![adaptive_bedmesh_margin](img/adaptive_bed_mesh_margin.svg)
By nature, adaptive bed meshes use the objects defined by the Gcode file being printed.
Therefore, it is expected that each Gcode file will generate a mesh that probes a different
area of the print bed. Therefore, adapted bed meshes should not be re-used. The expectation
is that a new mesh will be generated for each print if adaptive meshing is used.
It is also important to consider that adaptive bed meshing is best used on machines that can
normally probe the entire bed and achieve a maximum variance less than or equal to 1 layer
height. Machines with mechanical issues that a full bed mesh normally compensates for may
have undesirable results when attempting print moves **outside** of the probed area. If a
full bed mesh has a variance greater than 1 layer height, caution must be taken when using
adaptive bed meshes and attempting print moves outside of the meshed area.
## Surface Scans
Some probes, such as the [Eddy Current Probe](./Eddy_Probe.md), are capable of
"scanning" the surface of the bed. That is, these probes can sample a mesh
without lifting the tool between samples. To activate scanning mode, the
`METHOD=scan` or `METHOD=rapid_scan` probe parameter should be passed in the
`BED_MESH_CALIBRATE` gcode command.
### Scan Height
The scan height is set by the `horizontal_move_z` option in `[bed_mesh]`. In
addition it can be supplied with the `BED_MESH_CALIBRATE` gcode command via the
`HORIZONTAL_MOVE_Z` parameter.
The scan height must be sufficiently low to avoid scanning errors. Typically
a height of 2mm (ie: `HORIZONTAL_MOVE_Z=2`) should work well, presuming that the
probe is mounted correctly.
It should be noted that if the probe is more than 4mm above the surface then the
results will be invalid. Thus, scanning is not possible on beds with severe
surface deviation or beds with extreme tilt that hasn't been corrected.
### Rapid (Continuous) Scanning
When performing a `rapid_scan` one should keep in mind that the results will
have some amount of error. This error should be low enough to be useful on
large print areas with reasonably thick layer heights. Some probes may be
more prone to error than others.
It is not recommended that rapid mode be used to scan a "dense" mesh. Some of
the error introduced during a rapid scan may be gaussian noise from the sensor,
and a dense mesh will reflect this noise (ie: there will be peaks and valleys).
Bed Mesh will attempt to optimize the travel path to provide the best possible
result based on the configuration. This includes avoiding faulty regions
when collecting samples and "overshooting" the mesh when changing direction.
This overshoot improves sampling at the edges of a mesh, however it requires
that the mesh be configured in a way that allows the tool to travel outside
of the mesh.
```
[bed_mesh]
speed: 120
horizontal_move_z: 5
mesh_min: 35, 6
mesh_max: 240, 198
probe_count: 5
scan_overshoot: 8
```
- `scan_overshoot`
_Default Value: 0 (disabled)_\
The maximum amount of travel (in mm) available outside of the mesh.
For rectangular beds this applies to travel on the X axis, and for round beds
it applies to the entire radius. The tool must be able to travel the amount
specified outside of the mesh. This value is used to optimize the travel
path when performing a "rapid scan". The minimum value that may be specified
is 1. The default is no overshoot.
If no scan overshoot is configured then travel path optimization will not
be applied to changes in direction.
## Bed Mesh Gcodes
### Calibration
`BED_MESH_CALIBRATE PROFILE=<name> METHOD=[manual | automatic] [<probe_parameter>=<value>]
[<mesh_parameter>=<value>]`\
`BED_MESH_CALIBRATE PROFILE=<name> METHOD=[manual | automatic | scan | rapid_scan] \
[<probe_parameter>=<value>] [<mesh_parameter>=<value>] [ADAPTIVE=[0|1] \
[ADAPTIVE_MARGIN=<value>]`\
_Default Profile: default_\
_Default Method: automatic if a probe is detected, otherwise manual_
_Default Method: automatic if a probe is detected, otherwise manual_ \
_Default Adaptive: 0_ \
_Default Adaptive Margin: 0_
Initiates the probing procedure for Bed Mesh Calibration.
The mesh will be saved into a profile specified by the `PROFILE` parameter,
or `default` if unspecified. If `METHOD=manual` is selected then manual probing
will occur. When switching between automatic and manual probing the generated
mesh points will automatically be adjusted.
The mesh will be immediately ready to use when the command completes and saved
into a profile specified by the `PROFILE` parameter,
or `default` if unspecified. The `METHOD` parameter takes one of the following
values:
- `METHOD=manual`: enables manual probing using the nozzle and the paper test
- `METHOD=automatic`: Automatic (standard) probing. This is the default.
- `METHOD=scan`: Enables surface scanning. The tool will pause over each position
to collect a sample.
- `METHOD=rapid_scan`: Enables continuous surface scanning.
XY positions are automatically adjusted to include the X and/or Y offsets
when a probing method other than `manual` is selected.
It is possible to specify mesh parameters to modify the probed area. The
following parameters are available:
@ -371,12 +523,15 @@ following parameters are available:
- `MESH_ORIGIN`
- `ROUND_PROBE_COUNT`
- All beds:
- `RELATIVE_REFERNCE_INDEX`
- `MESH_PPS`
- `ALGORITHM`
- `ADAPTIVE`
- `ADAPTIVE_MARGIN`
See the configuration documentation above for details on how each parameter
applies to the mesh.
### Profiles
`BED_MESH_PROFILE SAVE=<name> LOAD=<name> REMOVE=<name>`
@ -390,15 +545,37 @@ to write the profile to printer.cfg.
Profiles can be loaded by executing `BED_MESH_PROFILE LOAD=<name>`.
It should be noted that each time a BED_MESH_CALIBRATE occurs, the current
state is automatically saved to the _default_ profile. If this profile
exists it is automatically loaded when Klipper starts. If this behavior
is not desirable the _default_ profile can be removed as follows:
state is automatically saved to the _default_ profile. The _default_ profile can be removed as follows:
`BED_MESH_PROFILE REMOVE=default`
Any other saved profile can be removed in the same fashion, replacing
_default_ with the named profile you wish to remove.
#### Loading the default profile
Previous versions of `bed_mesh` always loaded the profile named _default_
on startup if it was present. This behavior has been removed in favor of
allowing the user to determine when a profile is loaded. If a user wishes to
load the `default` profile it is recommended to add
`BED_MESH_PROFILE LOAD=default` to either their `START_PRINT` macro or their
slicer's "Start G-Code" configuration, whichever is applicable.
Note that this is not required if a new mesh is generated with
`BED_MESH_CALIBRATE` in the `START_PRINT` macro or the slicer's "Start G-Code"
and may produce unexpected results, especially with adaptive meshing.
Alternatively the old behavior of loading a profile at startup can be
restored with a `[delayed_gcode]`:
```ini
[delayed_gcode bed_mesh_init]
initial_duration: .01
gcode:
BED_MESH_PROFILE LOAD=default
```
### Output
`BED_MESH_OUTPUT PGP=[0 | 1]`
@ -441,11 +618,207 @@ This gcode may be used to clear the internal mesh state.
### Apply X/Y offsets
`BED_MESH_OFFSET [X=<value>] [Y=<value>]`
`BED_MESH_OFFSET [X=<value>] [Y=<value>] [ZFADE=<value>]`
This is useful for printers with multiple independent extruders, as an offset
is necessary to produce correct Z adjustment after a tool change. Offsets
should be specified relative to the primary extruder. That is, a positive
X offset should be specified if the secondary extruder is mounted to the
right of the primary extruder, and a positive Y offset should be specified
if the secondary extruder is mounted "behind" the primary extruder.
right of the primary extruder, a positive Y offset should be specified
if the secondary extruder is mounted "behind" the primary extruder, and
a positive ZFADE offset should be specified if the secondary extruder's
nozzle is above the primary extruder's.
Note that a ZFADE offset does *NOT* directly apply additional adjustment. It
is intended to compensate for a `gcode offset` when [mesh fade](#mesh-fade)
is enabled. For example, if a secondary extruder is higher than the primary
and needs a negative gcode offset, ie: `SET_GCODE_OFFSET Z=-.2`, it can be
accounted for in `bed_mesh` with `BED_MESH_OFFSET ZFADE=.2`.
## Bed Mesh Webhooks APIs
### Dumping mesh data
`{"id": 123, "method": "bed_mesh/dump_mesh"}`
Dumps the configuration and state for the current mesh and all
saved profiles.
The `dump_mesh` endpoint takes one optional parameter, `mesh_args`.
This parameter must be an object, where the keys and values are
parameters available to [BED_MESH_CALIBRATE](#bed_mesh_calibrate).
This will update the mesh configuration and probe points using the
supplied parameters prior to returning the result. It is recommended
to omit mesh parameters unless it is desired to visualize the probe points
and/or travel path before performing `BED_MESH_CALIBRATE`.
## Visualization and analysis
Most users will likely find that the visualizers included with
applications such as Mainsail, Fluidd, and Octoprint are sufficient
for basic analysis. However, Klipper's `scripts` folder contains the
`graph_mesh.py` script that may be used to perform additional
visualizations and more detailed analysis, particularly useful
for debugging hardware or the results produced by `bed_mesh`:
```
usage: graph_mesh.py [-h] {list,plot,analyze,dump} ...
Graph Bed Mesh Data
positional arguments:
{list,plot,analyze,dump}
list List available plot types
plot Plot a specified type
analyze Perform analysis on mesh data
dump Dump API response to json file
options:
-h, --help show this help message and exit
```
### Pre-requisites
Like most graphing tools provided by Klipper, `graph_mesh.py` requires
the `matplotlib` and `numpy` python dependencies. In addition, connecting
to Klipper via Moonraker's websocket requires the `websockets` python
dependency. While all visualizations can be output to an `svg` file, most of
the visualizations offered by `graph_mesh.py` are better viewed in live
preview mode on a desktop class PC. For example, the 3D visualizations may be
rotated and zoomed in preview mode, and the path visualizations can optionally
be animated in preview mode.
### Plotting Mesh data
The `graph_mesh.py` tool can plot several types of visualizations.
Available types can be shown by running `graph_mesh.py list`:
```
graph_mesh.py list
points Plot original generated points
path Plot probe travel path
rapid Plot rapid scan travel path
probedz Plot probed Z values
meshz Plot mesh Z values
overlay Plots the current probed mesh overlaid with a profile
delta Plots the delta between current probed mesh and a profile
```
Several options are available when plotting visualizations:
```
usage: graph_mesh.py plot [-h] [-a] [-s] [-p PROFILE_NAME] [-o OUTPUT] <plot type> <input>
positional arguments:
<plot type> Type of data to graph
<input> Path/url to Klipper Socket or path to json file
options:
-h, --help show this help message and exit
-a, --animate Animate paths in live preview
-s, --scale-plot Use axis limits reported by Klipper to scale plot X/Y
-p PROFILE_NAME, --profile-name PROFILE_NAME
Optional name of a profile to plot for 'probedz'
-o OUTPUT, --output OUTPUT
Output file path
```
Below is a description of each argument:
- `plot type`: A required positional argument designating the type of
visualization to generate. Must be one of the types output by the
`graph_mesh.py list` command.
- `input`: A required positional argument containing a path or url
to the input source. This must be one of the following:
- A path to Klipper's Unix Domain Socket
- A url to an instance of Moonraker
- A path to a json file produced by `graph_mesh.py dump <input>`
- `-a`: Optional animation for the `path` and `rapid` visualization types.
Animations only apply to a live preview.
- `-s`: Optionally scales a plot using the `axis_minimum` and `axis_maximum`
values reported by Klipper's `toolhead` object when the dump file was
generated.
- `-p`: A profile name that may be specified when generating the
`probedz` 3D mesh visualization. When generating an `overlay` or
`delta` visualization this argument must be provided.
- `-o`: An optional file path indicating that the script should save the
visualization to this location rather than run in preview mode. Images
are saved in `svg` format.
For example, to plot an animated rapid path, connecting via Klipper's unix
socket:
```
graph_mesh.py plot -a rapid ~/printer_data/comms/klippy.sock
```
Or to plot a 3d visualization of the mesh, connecting via Moonraker:
```
graph_mesh.py plot meshz http://my-printer.local
```
### Bed Mesh Analysis
The `graph_mesh.py` tool may also be used to perform an analysis on the
data provided by the [bed_mesh/dump_mesh](#dumping-mesh-data) API:
```
graph_mesh.py analyze <input>
```
As with the `plot` command, the `<input>` must be a path to Klipper's
unix socket, a URL to an instance of Moonraker, or a path to a json file
generated by the dump command.
To begin, the analysis will perform various checks on the points and
probe paths generated by `bed_mesh` at the time of the dump. This
includes the following:
- The number of probe points generated, without any additions
- The number of probe points generated including any points generated
as the result faulty regions and/or a configured zero reference position.
- The number of probe points generated when performing a rapid scan.
- The total number of moves generated for a rapid scan.
- A validation that the probe points generated for a rapid scan are
identical to the probe points generated for a standard probing procedure.
- A "backtracking" check for both the standard probe path and a rapid scan
path. Backtracking can be defined as moving to the same position more than
once during the probing procedure. Backtracking should never occur during a
standard probe. Faulty regions *can* result in backtracking during a rapid
scan in an attempt to avoid entering a faulty region when approaching or
leaving a probe location, however should never occur otherwise.
Next each probed mesh present in the dump will by analyzed, beginning with
the mesh loaded at the time of the dump (if present) and followed by any
saved profiles. The following data is extracted:
- Mesh shape (Min X,Y, Max X,Y Probe Count)
- Mesh Z range, (Minimum Z, Maximum Z)
- Mean Z value in the mesh
- Standard Deviation of the Z values in the Mesh
In addition to the above, a delta analysis is performed between meshes
with the same shape, reporting the following:
- The range of the delta between to meshes (Minimum and Maximum)
- The mean delta
- Standard Deviation of the delta
- The absolute maximum difference
- The absolute mean
### Save mesh data to a file
The `dump` command may be used to save the response to a file which
can be shared for analysis when troubleshooting:
```
graph_mesh.py dump -o <output file name> <input>
```
The `<input>` should be a path to Klipper's unix socket or
a URL to an instance of Moonraker. The `-o` option may be used to
specify the path to the output file. If omitted, the file will be
saved in the working directory, with a file name in the following
format:
`klipper-bedmesh-{year}{month}{day}{hour}{minute}{second}.json`

View file

@ -250,23 +250,22 @@ results were obtained by running an STM32F407 binary on an STM32F446
### STM32H7 step rate benchmark
The following configuration sequence is used on a STM32H743VIT6:
The following configuration sequence is used on STM32H723:
```
allocate_oids count=3
config_stepper oid=0 step_pin=PD4 dir_pin=PD3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PA15 dir_pin=PA8 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PE2 dir_pin=PE3 invert_step=-1 step_pulse_ticks=0
config_stepper oid=0 step_pin=PA13 dir_pin=PB5 invert_step=-1 step_pulse_ticks=52
config_stepper oid=1 step_pin=PB2 dir_pin=PB6 invert_step=-1 step_pulse_ticks=52
config_stepper oid=2 step_pin=PB3 dir_pin=PB7 invert_step=-1 step_pulse_ticks=52
finalize_config crc=0
```
The test was last run on commit `00191b5c` with gcc version
`arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release)
[gcc-8-branch revision 273027]`.
The test was last run on commit `554ae78d` with gcc version
`arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0`.
| stm32h7 | ticks |
| stm32h723 | ticks |
| -------------------- | ----- |
| 1 stepper | 44 |
| 3 stepper | 198 |
| 1 stepper | 70 |
| 3 stepper | 181 |
### STM32G0B1 step rate benchmark
@ -287,6 +286,25 @@ The test was last run on commit `247cd753` with gcc version
| 1 stepper | 58 |
| 3 stepper | 243 |
### STM32G4 step rate benchmark
The following configuration sequence is used on the STM32G431:
```
allocate_oids count=3
config_stepper oid=0 step_pin=PA0 dir_pin=PB5 invert_step=-1 step_pulse_ticks=17
config_stepper oid=1 step_pin=PB2 dir_pin=PB6 invert_step=-1 step_pulse_ticks=17
config_stepper oid=2 step_pin=PB3 dir_pin=PB7 invert_step=-1 step_pulse_ticks=17
finalize_config crc=0
```
The test was last run on commit `cfa48fe3` with gcc version
`arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0`.
| stm32g431 | ticks |
| ---------------- | ----- |
| 1 stepper | 47 |
| 3 stepper | 208 |
### LPC176x step rate benchmark
The following configuration sequence is used on the LPC176x:
@ -354,9 +372,50 @@ micro-controller.
| 1 stepper (200Mhz) | 39 |
| 3 stepper (200Mhz) | 181 |
### RP2040 step rate benchmark
### SAME70 step rate benchmark
The following configuration sequence is used on the RP2040:
The following configuration sequence is used on the SAME70:
```
allocate_oids count=3
config_stepper oid=0 step_pin=PC18 dir_pin=PB5 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PC16 dir_pin=PD10 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PC28 dir_pin=PA4 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0
```
The test was last run on commit `34e9ea55` with gcc version
`arm-none-eabi-gcc (NixOS 10.3-2021.10) 10.3.1` on a SAME70Q20B
micro-controller.
| same70 | ticks |
| -------------------- | ----- |
| 1 stepper | 45 |
| 3 stepper | 190 |
### AR100 step rate benchmark ###
The following configuration sequence is used on AR100 CPU (Allwinner A64):
```
allocate_oids count=3
config_stepper oid=0 step_pin=PL10 dir_pin=PE14 invert_step=-1 step_pulse_ticks=0
config_stepper oid=1 step_pin=PL11 dir_pin=PE15 invert_step=-1 step_pulse_ticks=0
config_stepper oid=2 step_pin=PL12 dir_pin=PE16 invert_step=-1 step_pulse_ticks=0
finalize_config crc=0
```
The test was last run on commit `b7978d37` with gcc version
`or1k-linux-musl-gcc (GCC) 9.2.0` on an Allwinner A64-H
micro-controller.
| AR100 R_PIO | ticks |
| -------------------- | ----- |
| 1 stepper | 85 |
| 3 stepper | 359 |
### RPxxxx step rate benchmark
The following configuration sequence is used on the RP2040 and RP2350:
```
allocate_oids count=3
@ -366,14 +425,25 @@ config_stepper oid=2 step_pin=gpio27 dir_pin=gpio5 invert_step=-1 step_pulse_tic
finalize_config crc=0
```
The test was last run on commit `59314d99` with gcc version
`arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0` on a Raspberry Pi
Pico board.
The test was last run on commit `14c105b8` with gcc version
`arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0` on Raspberry Pi
Pico and Pico 2 boards.
| rp2040 | ticks |
| rp2040 (*) | ticks |
| -------------------- | ----- |
| 1 stepper | 5 |
| 3 stepper | 22 |
| 1 stepper | 3 |
| 3 stepper | 14 |
| rp2350 | ticks |
| -------------------- | ----- |
| 1 stepper | 36 |
| 3 stepper | 169 |
(*) Note that the reported rp2040 ticks are relative to a 12Mhz
scheduling timer and do not correspond to its 200Mhz internal ARM
processing rate. It is expected that 3 scheduling ticks corresponds to
~42 ARM core cycles and 14 scheduling ticks corresponds to ~225 ARM
core cycles.
### Linux MCU step rate benchmark
@ -412,19 +482,25 @@ When the test completes, determine the difference between the clocks
reported in the two "uptime" response messages. The total number of
commands per second is then `100000 * mcu_frequency / clock_diff`.
Note that this test may saturate the USB/CPU capacity of a Raspberry
Pi. If running on a Raspberry Pi, Beaglebone, or similar host computer
then increase the delay (eg, `DELAY {clock + 20*freq} get_uptime`).
Where applicable, the benchmarks below are with console.py running on
a desktop class machine with the device connected via a high-speed
hub.
The USB tests may exceed the CPU capacity of a Raspberry Pi. If
running on a Raspberry Pi, Beaglebone, or similar host computer then
increase the delay (eg, `DELAY {clock + 20*freq} get_uptime`). Where
applicable, the benchmarks below are with console.py running on a
desktop class machine with the device connected via a super-speed hub.
The CAN bus tests may saturate the USB host controller of a Raspberry
Pi (when testing via a standard gs_usb USB to CAN bus adapter). Where
applicable, the CAN bus benchmarks below are with console.py running
on a desktop class machine with a USB to CAN bus adapter connected via
a super-speed USB hub.
| MCU | Rate | Build | Build compiler |
| ------------------- | ---- | -------- | ------------------- |
| stm32f042 (CAN) | 18K | c105adc8 | arm-none-eabi-gcc (GNU Tools 7-2018-q3-update) 7.3.1 |
| atmega2560 (serial) | 23K | b161a69e | avr-gcc (GCC) 4.8.1 |
| sam3x8e (serial) | 23K | b161a69e | arm-none-eabi-gcc (Fedora 7.1.0-5.fc27) 7.1.0 |
| rp2350 (CAN) | 59K | 17b8ce4c | arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0 |
| at90usb1286 (USB) | 75K | 01d2183f | avr-gcc (GCC) 5.4.0 |
| ar100 (serial) | 138K | 08d037c6 | or1k-linux-musl-gcc 9.3.0 |
| samd21 (USB) | 223K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
| pru (shared memory) | 260K | c5968a08 | pru-gcc (GCC) 8.0.0 20170530 (experimental) |
| stm32f103 (USB) | 355K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
@ -434,7 +510,8 @@ hub.
| sam4s8c (USB) | 650K | 8d4a5c16 | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
| samd51 (USB) | 864K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
| stm32f446 (USB) | 870K | 01d2183f | arm-none-eabi-gcc (Fedora 7.4.0-1.fc30) 7.4.0 |
| rp2040 (USB) | 873K | c5667193 | arm-none-eabi-gcc (Fedora 10.2.0-4.fc34) 10.2.0 |
| rp2040 (USB) | 885K | f6718291 | arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0 |
| rp2350 (USB) | 885K | f6718291 | arm-none-eabi-gcc (Fedora 14.1.0-1.fc40) 14.1.0 |
## Host Benchmarks

125
docs/Bootloader_Entry.md Normal file
View file

@ -0,0 +1,125 @@
# Bootloader Entry
Klipper can be instructed to reboot into a [Bootloader](Bootloaders.md) in one
of the following ways:
## Requesting the bootloader
### Virtual Serial
If a virtual (USB-ACM) serial port is in use, pulsing DTR while at 1200 baud
will request the bootloader.
#### Python (with `flash_usb`)
To enter the bootloader using python (using `flash_usb`):
```shell
> cd klipper/scripts
> python3 -c 'import flash_usb as u; u.enter_bootloader("<DEVICE>")'
Entering bootloader on <DEVICE>
```
Where `<DEVICE>` is your serial device, such as
`/dev/serial.by-id/usb-Klipper[...]` or `/dev/ttyACM0`
Note that if this fails, no output will be printed, success is indicated by
printing `Entering bootloader on <DEVICE>`.
#### Picocom
```shell
picocom -b 1200 <DEVICE>
<Ctrl-A><Ctrl-P>
```
Where `<DEVICE>` is your serial device, such as
`/dev/serial.by-id/usb-Klipper[...]` or `/dev/ttyACM0`
`<Ctrl-A><Ctrl-P>` means
holding `Ctrl`, pressing and releasing `a`, pressing and releasing `p`, then
releasing `Ctrl`
### Physical serial
If a physical serial port is being used on the MCU (even if a USB serial adapter
is being used to connect to it), sending the string
`<SPACE><FS><SPACE>Request Serial Bootloader!!<SPACE>~` requests the bootloader.
`<SPACE>` is an ASCII literal space, 0x20.
`<FS>` is the ASCII File Separator,
0x1c.
Note that this is not a valid message as per the
[MCU Protocol](Protocol.md#micro-controller-interface), but sync characters(`~`)
are still respected.
Because this message must be the only thing in the "block"
it is received in, prefixing an extra sync character can increase reliability if
other tools were previously accessing the serial port.
#### Shell
```shell
stty <BAUD> < /dev/<DEVICE>
echo $'~ \x1c Request Serial Bootloader!! ~' >> /dev/<DEVICE>
```
Where `<DEVICE>` is your serial port, such as `/dev/ttyS0`, or
`/dev/serial/by-id/gpio-serial2`, and
`<BAUD>` is the baud rate of the serial
port, such as `115200`.
### CANBUS
If CANBUS is in use, a special
[admin message](CANBUS_protocol.md#admin-messages) will request the bootloader.
This message will be respected even if the device already has a nodeid, and will
also be processed if the mcu is shutdown.
This method also applies to devices operating in
[CANBridge](CANBUS.md#usb-to-can-bus-bridge-mode) mode.
#### Katapult's flashtool.py
```shell
python3 ./katapult/scripts/flashtool.py -i <CAN_IFACE> -u <UUID> -r
```
Where `<CAN_IFACE>` is the can interface to use. If using `can0`, both the `-i`
and `<CAN_IFACE>` may be omitted.
`<UUID>` is the UUID of your CAN device.
See the
[CANBUS Documentation](CANBUS.md#finding-the-canbus_uuid-for-new-micro-controllers)
for information on finding the CAN UUID of your devices.
## Entering the bootloader
When klipper receives one of the above bootloader requests:
If Katapult (formerly known as CANBoot) is available, klipper will request that
Katapult stay active on the next boot, then reset the MCU (therefore entering
Katapult).
If Katapult is not available, klipper will then try to enter a
platform-specific bootloader, such as STM32's DFU
mode([see note](#stm32-dfu-warning)).
In short, Klipper will reboot to Katapult if installed, then a hardware specific
bootloader if available.
For details about the specific bootloaders on various platforms see
[Bootloaders](Bootloaders.md)
## Notes
### STM32 DFU Warning
Note that on some boards, like the Octopus Pro v1, entering DFU mode can cause
undesired actions (such as powering the heater while in DFU mode). It is
recommended to disconnect heaters, and otherwise prevent undesired operations
when using DFU mode. Consult the documentation for your board for more details.

View file

@ -185,6 +185,50 @@ To flash an application use something like:
bossac --port=/dev/ttyACM0 -b -U -e -w -v -R out/klipper.bin
```
## SAMDC21 micro-controllers (Duet3D Toolboard 1LC)
The SAMC21 is flashed via the ARM Serial Wire Debug (SWD) interface.
This is commonly done with a dedicated SWD hardware dongle.
Alternatively, one can use a
[Raspberry Pi with OpenOCD](#running-openocd-on-the-raspberry-pi).
When using OpenOCD with the SAMC21, extra steps must be taken to first
put the chip into Cold Plugging mode if the board makes use of the
SWD pins for other purposes. If using OpenOCD on a Rasberry Pi, this
can be done by running the following commands before invoking OpenOCD.
```
SWCLK=25
SWDIO=24
SRST=18
echo "Exporting SWCLK and SRST pins."
echo $SWCLK > /sys/class/gpio/export
echo $SRST > /sys/class/gpio/export
echo "out" > /sys/class/gpio/gpio$SWCLK/direction
echo "out" > /sys/class/gpio/gpio$SRST/direction
echo "Setting SWCLK low and pulsing SRST."
echo "0" > /sys/class/gpio/gpio$SWCLK/value
echo "0" > /sys/class/gpio/gpio$SRST/value
echo "1" > /sys/class/gpio/gpio$SRST/value
echo "Unexporting SWCLK and SRST pins."
echo $SWCLK > /sys/class/gpio/unexport
echo $SRST > /sys/class/gpio/unexport
```
To flash a program with OpenOCD use the following chip config:
```
source [find target/at91samdXX.cfg]
```
Obtain a program; for instance, klipper can be built for this chip.
Flash with OpenOCD commands similar to:
```
at91samd chip-erase
at91samd bootloader 0
program out/klipper.elf verify
```
## SAMD21 micro-controllers (Arduino Zero)
The SAMD21 bootloader is flashed via the ARM Serial Wire Debug (SWD)
@ -305,7 +349,7 @@ is a [fork with builds specific to the SKR Mini E3 1.2](
https://github.com/Arksine/STM32_HID_Bootloader/releases/latest).
For generic STM32F103 boards such as the blue pill it is possible to flash
the bootloader via 3.3v serial using stm32flash as noted in the stm32duino
the bootloader via 3.3V serial using stm32flash as noted in the stm32duino
section above, substituting the file name for the desired hid bootloader binary
(ie: hid_generic_pc13.bin for the blue pill).
@ -382,7 +426,7 @@ make flash FLASH_DEVICE=/dev/ttyACM0
It may be necessary to manually enter the bootloader, this can be done by
setting "boot 0" low and "boot 1" high. On the SKR Mini E3 "Boot 1" is
not available, so it may be done by setting pin PA2 low if you flashed
"hid_btt_skr_mini_e3.bin". This pin is labeld "TX0" on the TFT header in
"hid_btt_skr_mini_e3.bin". This pin is labeled "TX0" on the TFT header in
the SKR Mini E3's "PIN" document. There is a ground pin next to PA2
which you can use to pull PA2 low.
@ -390,7 +434,7 @@ which you can use to pull PA2 low.
The [MSC bootloader](https://github.com/Telekatz/MSC-stm32f103-bootloader) is a driverless bootloader capable of flashing over USB.
It is possible to flash the bootloader via 3.3v serial using stm32flash as noted
It is possible to flash the bootloader via 3.3V serial using stm32flash as noted
in the stm32duino section above, substituting the file name for the desired
MSC bootloader binary (ie: MSCboot-Bluepill.bin for the blue pill).
@ -419,7 +463,7 @@ It is recommended to use a ST-Link Programmer to flash CanBoot, however it
should be possible to flash using `stm32flash` on STM32F103 devices, and
`dfu-util` on STM32F042/STM32F072 devices. See the previous sections in this
document for instructions on these flashing methods, substituting `canboot.bin`
for the file name where appropriate. The CanBoot repo linked above provides
for the file name where appropriate. The CanBoot repository linked above provides
instructions for building the bootloader.
The first time CanBoot has been flashed it should detect that no application
@ -448,8 +492,8 @@ When building Klipper for use with CanBoot, select the 8 KiB Bootloader option.
## STM32F4 micro-controllers (SKR Pro 1.1)
STM32F4 microcontrollers come equipped with a built-in system bootloader
capable of flashing over USB (via DFU), 3.3v Serial, and various other
STM32F4 micro-controllers come equipped with a built-in system bootloader
capable of flashing over USB (via DFU), 3.3V Serial, and various other
methods (see STM Document AN2606 for more information). Some
STM32F4 boards, such as the SKR Pro 1.1, are not able to enter the DFU
bootloader. The HID bootloader is available for STM32F405/407
@ -458,8 +502,8 @@ Note that you may need to configure and build a version specific to your
board, a [build for the SKR Pro 1.1 is available here](
https://github.com/Arksine/STM32_HID_Bootloader/releases/latest).
Unless your board is DFU capable the most accessable flashing method
is likely via 3.3v serial, which follows the same procedure as
Unless your board is DFU capable the most accessible flashing method
is likely via 3.3V serial, which follows the same procedure as
[flashing the STM32F103 using stm32flash](#stm32f103-micro-controllers-blue-pill-devices).
For example:
```

View file

@ -4,7 +4,7 @@ This document describes Klipper's CAN bus support.
## Device Hardware
Klipper currently supports CAN on stm32, same5x, and rp2040 chips. In
Klipper currently supports CAN on stm32, SAME5x, and rp2040 chips. In
addition, the micro-controller chip must be on a board that has a CAN
transceiver.
@ -14,44 +14,35 @@ and flash it to the target board.
## Host Hardware
In order to use a CAN bus, it is necessary to have a host adapter.
There are currently two common options:
1. Use a
[Waveshare Raspberry Pi CAN hat](https://www.waveshare.com/rs485-can-hat.htm)
or one of its many clones.
2. Use a USB CAN adapter (for example
[https://hacker-gadgets.com/product/cantact-usb-can-adapter/](https://hacker-gadgets.com/product/cantact-usb-can-adapter/)). There
are many different USB to CAN adapters available - when choosing
one, we recommend verifying it can run the
[candlelight firmware](https://github.com/candle-usb/candleLight_fw).
(Unfortunately, we've found some USB adapters run defective
firmware and are locked down, so verify before purchasing.)
In order to use a CAN bus, it is necessary to have a host adapter. It
is recommended to use a "USB to CAN adapter". There are many different
USB to CAN adapters available from different manufacturers. When
choosing one, we recommend verifying that the firmware can be updated
on it. (Unfortunately, we've found some USB adapters run defective
firmware and are locked down, so verify before purchasing.) Look for
adapters that can run Klipper directly (in its "USB to CAN bridge
mode") or that run the
[candlelight firmware](https://github.com/candle-usb/candleLight_fw).
It is also necessary to configure the host operating system to use the
adapter. This is typically done by creating a new file named
`/etc/network/interfaces.d/can0` with the following contents:
```
auto can0
allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 128
bitrate 1000000
up ip link set $IFACE txqueuelen 128
```
Note that the "Raspberry Pi CAN hat" also requires
[changes to config.txt](https://www.waveshare.com/wiki/RS485_CAN_HAT).
## Terminating Resistors
A CAN bus should have two 120 ohm resistors between the CANH and CANL
wires. Ideally, one resistor located at each the end of the bus.
Note that some devices have a builtin 120 ohm resistor (for example,
the "Waveshare Raspberry Pi CAN hat" has a soldered on resistor that
can not be easily removed). Some devices do not include a resistor at
all. Other devices have a mechanism to select the resistor (typically
by connecting a "pin jumper"). Be sure to check the schematics of all
Note that some devices have a builtin 120 ohm resistor that can not be
easily removed. Some devices do not include a resistor at all. Other
devices have a mechanism to select the resistor (typically by
connecting a "pin jumper"). Be sure to check the schematics of all
devices on the CAN bus to verify that there are two and only two 120
Ohm resistors on the bus.
@ -95,22 +86,18 @@ canbus_uuid: 11aa22bb33cc
## USB to CAN bus bridge mode
Some micro-controllers support selecting "USB to CAN bus bridge" mode
during "make menuconfig". This mode may allow one to use a
during Klipper's "make menuconfig". This mode may allow one to use a
micro-controller as both a "USB to CAN bus adapter" and as a Klipper
node.
When Klipper uses this mode the micro-controller appears as a "USB CAN
bus adapter" under Linux. The "Klipper bridge mcu" itself will appear
as if was on this CAN bus - it can be identified via `canbus_query.py`
and configured like other CAN bus Klipper nodes. It will appear
alongside other devices that are actually on the CAN bus.
as if it was on this CAN bus - it can be identified via
`canbus_query.py` and it must be configured like other CAN bus Klipper
nodes.
Some important notes when using this mode:
* The "bridge mcu" is not actually on the CAN bus. Messages to and
from it do not consume bandwidth on the CAN bus. The mcu can not be
seen by other adapters that may be on the CAN bus.
* It is necessary to configure the `can0` (or similar) interface in
Linux in order to communicate with the bus. However, Linux CAN bus
speed and CAN bus bit-timing options are ignored by Klipper.
@ -119,12 +106,40 @@ Some important notes when using this mode:
* Whenever the "bridge mcu" is reset, Linux will disable the
corresponding `can0` interface. To ensure proper handling of
FIRMWARE_RESTART and RESTART commands, it is recommended to replace
`auto` with `allow-hotplug` in the `/etc/network/interfaces.d/can0`
file. For example:
FIRMWARE_RESTART and RESTART commands, it is recommended to use
`allow-hotplug` in the `/etc/network/interfaces.d/can0` file. For
example:
```
allow-hotplug can0
iface can0 can static
bitrate 500000
up ifconfig $IFACE txqueuelen 128
bitrate 1000000
up ip link set $IFACE txqueuelen 128
```
* The "bridge mcu" is not actually on the CAN bus. Messages to and
from the bridge mcu will not be seen by other adapters that may be
on the CAN bus.
* The available bandwidth to both the "bridge mcu" itself and all
devices on the CAN bus is effectively limited by the CAN bus
frequency. As a result, it is recommended to use a CAN bus frequency
of 1000000 when using "USB to CAN bus bridge mode".
* It is only valid to use USB to CAN bridge mode if there is a
functioning CAN bus with at least one other node available (in
addition to the bridge node itself). Use a standard USB
configuration if the goal is to communicate only with the single USB
device. Using USB to CAN bridge mode without a fully functioning CAN
bus (including terminating resistors and an additional node) may
result in sporadic errors even when communicating with the bridge
node.
* A USB to CAN bridge board will not appear as a USB serial device, it
will not show up when running `ls /dev/serial/by-id`, and it can not
be configured in Klipper's printer.cfg file with a `serial:`
parameter. The bridge board appears as a "USB CAN adapter" and it is
configured in the printer.cfg as a [CAN node](#configuring-klipper).
## Tips for troubleshooting
See the [CAN bus troubleshooting](CANBUS_Troubleshooting.md) document.

View file

@ -0,0 +1,223 @@
# CANBUS Troubleshooting
This document provides information on troubleshooting communication
issues when using [Klipper with CAN bus](CANBUS.md).
## Verify CAN bus wiring
The first step in troubleshooting communication issues is to verify
the CAN bus wiring.
Be sure there are exactly two 120 Ohm [terminating
resistors](CANBUS.md#terminating-resistors) on the CAN bus. If the
resistors are not properly installed then messages may not be able to
be sent at all or the connection may have sporadic instability.
The CANH and CANL bus wiring should be twisted around each other. At a
minimum, the wiring should have a twist every few centimeters. Avoid
twisting the CANH and CANL wiring around power wires and ensure that
power wires that travel parallel to the CANH and CANL wires do not
have the same amount of twists.
Verify that all plugs and wire crimps on the CAN bus wiring are fully
secured. Movement of the printer toolhead may jostle the CAN bus
wiring causing a bad wire crimp or unsecured plug to result in
intermittent communication errors.
## Check for incrementing bytes_invalid counter
The Klipper log file will report a `Stats` line once a second when the
printer is active. These "Stats" lines will have a `bytes_invalid`
counter for each micro-controller. This counter should not increment
during normal printer operation (it is normal for the counter to be
non-zero after a RESTART and it is not a concern if the counter
increments once a month or so). If this counter increments on a CAN
bus micro-controller during normal printing (it increments every few
hours or more frequently) then it is an indication of a severe
problem.
Incrementing `bytes_invalid` on a CAN bus connection is a symptom of
reordered messages on the CAN bus. If seen, make sure to:
* Use a Linux kernel version 6.6.0 or later.
* If using a USB-to-CANBUS adapter running candlelight firmware, use
v2.0 or later of candleLight_fw.
* If using Klipper's USB-to-CANBUS bridge mode, make sure the bridge
node is flashed with Klipper v0.12.0 or later.
Reordered messages is a severe problem that must be fixed. It will
result in unstable behavior and can lead to confusing errors at any
part of a print. An incrementing `bytes_invalid` is not caused by
wiring or similar hardware issues and can only be fixed by identifying
and updating the faulty software.
Older versions of the Linux kernel had a bug in the gs_usb canbus
driver code that could cause reordered canbus packets. The issue is
thought to be fixed in
[Linux commit 24bc41b4](https://github.com/torvalds/linux/commit/24bc41b4558347672a3db61009c339b1f5692169)
which was released in v6.6.0. In some cases, older Linux versions may
not show the problem (due to how hardware interrupts are configured),
however if problems are seen the recommended solution is to upgrade to
a newer kernel.
Older versions of candlelight firmware could reorder canbus packets,
and the issue is thought to be fixed in
[candlelight_fw commit 8b3a7b45](https://github.com/candle-usb/candleLight_fw/commit/8b3a7b4565a3c9521b762b154c94c72c5acb2bcf).
Older versions of Klipper's USB-to-CANBUS bridge code could
incorrectly drop canbus messages. This is not as severe as reordering
messages, but it should still be fixed. It is thought to be fixed with
[Klipper PR #6175](https://github.com/Klipper3d/klipper/pull/6175).
## Use an appropriate txqueuelen setting
The Klipper code uses the Linux kernel to manage CAN bus traffic. By
default, the kernel will only queue 10 CAN transmit packets. It is
recommended to [configure the can0 device](CANBUS.md#host-hardware)
with a `txqueuelen 128` to increase that size.
If Klipper transmits a packet and Linux has filled all of its transmit
queue space then Linux will drop that packet and messages like the
following will appear in the Klipper log:
```
Got error -1 in can write: (105)No buffer space available
```
Klipper will automatically retransmit the lost messages as part of its
normal application level message retransmit system. Thus, this log
message is a warning and it does not indicate an unrecoverable error.
If a complete CAN bus failure occurs (such as a CAN wire break) then
Linux will not be able to transmit any messages on the CAN bus and it
is common to find the above message in the Klipper log. In this case,
the log message is a symptom of a larger problem (the inability to
transmit any messages) and is not directly related to Linux
`txqueuelen`.
One may check the current queue size by running the Linux command `ip
link show can0`. It should report a bunch of text including the
snippet `qlen 128`. If one sees something like `qlen 10` then it
indicates the CAN device has not been properly configured.
It is not recommended to use a `txqueuelen` significantly larger
than 128. A CAN bus running at a frequency of 1000000 will typically
take around 120us to transmit a CAN packet. Thus a queue of 128
packets is likely to take around 15-20ms to drain. A substantially
larger queue could cause excessive spikes in message round-trip-time
which could lead to unrecoverable errors. Said another way, Klipper's
application retransmit system is more robust if it does not have to
wait for Linux to drain an excessively large queue of possibly stale
data. This is analogous to the problem of
[bufferbloat](https://en.wikipedia.org/wiki/Bufferbloat) on internet
routers.
Under normal circumstances Klipper may utilize ~25 queue slots per
MCU - typically only utilizing more slots during retransmits.
(Specifically, the Klipper host may transmit up to 192 bytes to each
Klipper MCU before receiving an acknowledgment from that MCU.) If a
single CAN bus has 5 or more Klipper MCUs on it, then it might be
necessary to increase the `txqueuelen` above the recommended value
of 128. However, as above, care should be taken when selecting a new
value to avoid excessive round-trip-time latency.
## Use `canbus_query.py` only to identify nodes never previously seen
It is only valid to use the
[`canbus_query.py` tool](CANBUS.md#finding-the-canbus_uuid-for-new-micro-controllers)
to identify micro-controllers that have never been previously
identified. Once all nodes on a bus are identified, record the
resulting uuids in the printer.cfg, and avoid running the tool
unnecessarily.
The tool is implemented using a low-level mechanism that can cause
nodes to internally observe bus errors. These internal errors may
result in communication interruptions and may result is some nodes
disconnecting from the bus.
It is not valid to use the tool to "ping" if a node is connected. Do
not run the tool during an active print.
## Obtaining candump logs
The CAN bus messages sent to and from the micro-controller are handled
by the Linux kernel. It is possible to capture these messages from the
kernel for debugging purposes. A log of these messages may be of use
in diagnostics.
The Linux [can-utils](https://github.com/linux-can/can-utils) tool
provides the capture software. It is typically installed on a machine
by running:
```
sudo apt-get update && sudo apt-get install can-utils
```
Once installed, one may obtain a capture of all CAN bus messages on an
interface with the following command:
```
candump -tz -Ddex can0,#FFFFFFFF > mycanlog
```
One can view the resulting log file (`mycanlog` in the example above)
to see each raw CAN bus message that was sent and received by Klipper.
Understanding the content of these messages will likely require
low-level knowledge of Klipper's [CANBUS protocol](CANBUS_protocol.md)
and Klipper's [MCU commands](MCU_Commands.md).
### Parsing Klipper messages in a candump log
One may use the `parsecandump.py` tool to parse the low-level Klipper
micro-controller messages contained in a candump log. Using this tool
is an advanced topic that requires knowledge of Klipper
[MCU commands](MCU_Commands.md). For example:
```
./scripts/parsecandump.py mycanlog 108 ./out/klipper.dict
```
This tool produces output similar to the [parsedump
tool](Debugging.md#translating-gcode-files-to-micro-controller-commands). See
the documentation for that tool for information on generating the
Klipper micro-controller data dictionary.
In the above example, `108` is the [CAN bus
id](CANBUS_protocol.md#micro-controller-id-assignment). It is a
hexadecimal number. The id `108` is assigned by Klipper to the first
micro-controller. If the CAN bus has multiple micro-controllers on it,
then the second micro-controller would be `10a`, the third would be
`10c`, and so on.
The candump log must be produced using the `-tz -Ddex` command-line
arguments (for example: `candump -tz -Ddex can0,#FFFFFFFF`) in order
to use the `parsecandump.py` tool.
## Using a logic analyzer on the canbus wiring
The [Sigrok Pulseview](https://sigrok.org/wiki/PulseView) software
along with a low-cost
[logic analyzer](https://en.wikipedia.org/wiki/Logic_analyzer) can be
useful for diagnosing CAN bus signaling. This is an advanced topic
likely only of interest to experts.
One can often find "USB logic analyzers" for under $15 (US pricing as
of 2023). These devices are often listed as "Saleae logic clones" or
as "24MHz 8 channel USB logic analyzers".
![pulseview-canbus](img/pulseview-canbus.png)
The above picture was taken while using Pulseview with a "Saleae
clone" logic analyzer. The Sigrok and Pulseview software was installed
on a desktop machine (also install the "fx2lafw" firmware if that is
packaged separately). The CH0 pin on the logic analyzer was routed to
the CAN Rx line, the CH1 pin was wired to the CAN Tx pin, and GND was
wired to GND. Pulseview was configured to only display the D0 and D1
lines (red "probe" icon center top toolbar). The number of samples was
set to 5 million (top toolbar) and the sample rate was set to 24Mhz
(top toolbar). The CAN decoder was added (yellow and green "bubble
icon" right top toolbar). The D0 channel was labeled as RX and set to
trigger on a falling edge (click on black D0 label at left). The D1
channel was labeled as TX (click on brown D1 label at left). The CAN
decoder was configured for 1Mbit rate (click on green CAN label at
left). The CAN decoder was moved to the top of the display (click and
drag green CAN label). Finally, the capture was started (click "Run"
at top left) and a packet was transmitted on the CAN bus (`cansend
can0 123#121212121212`).
The logic analyzer provides an independent tool for capturing packets
and verifying bit timing.

View file

@ -253,8 +253,8 @@ The Klipper "reviewers" are:
| ---------------------- | ----------------- | ----------------- |
| Dmitry Butyugin | @dmbutyugin | Input shaping, resonance testing, kinematics |
| Eric Callahan | @Arksine | Bed leveling, MCU flashing |
| James Hartley | @JamesH1978 | Configuration files |
| Kevin O'Connor | @KevinOConnor | Core motion system, Micro-controller code |
| Paul McGowan | @mental405 | Configuration files, documentation |
Please do not "ping" any of the reviewers and please do not direct
submissions at them. All of the reviewers monitor the forums and PRs,

View file

@ -136,8 +136,9 @@ provides further information on the mechanics of moves.
* The ToolHead class (in toolhead.py) handles "look-ahead" and tracks
the timing of printing actions. The main codepath for a move is:
`ToolHead.move() -> MoveQueue.add_move() -> MoveQueue.flush() ->
Move.set_junction() -> ToolHead._process_moves()`.
`ToolHead.move() -> LookAheadQueue.add_move() ->
LookAheadQueue.flush() -> Move.set_junction() ->
ToolHead._process_moves()`.
* ToolHead.move() creates a Move() object with the parameters of the
move (in cartesian space and in units of seconds and millimeters).
* The kinematics class is given the opportunity to audit each move
@ -146,10 +147,10 @@ provides further information on the mechanics of moves.
may raise an error if the move is not valid. If check_move()
completes successfully then the underlying kinematics must be able
to handle the move.
* MoveQueue.add_move() places the move object on the "look-ahead"
queue.
* MoveQueue.flush() determines the start and end velocities of each
move.
* LookAheadQueue.add_move() places the move object on the
"look-ahead" queue.
* LookAheadQueue.flush() determines the start and end velocities of
each move.
* Move.set_junction() implements the "trapezoid generator" on a
move. The "trapezoid generator" breaks every move into three parts:
a constant acceleration phase, followed by a constant velocity
@ -170,17 +171,18 @@ provides further information on the mechanics of moves.
placed on a "trapezoid motion queue": `ToolHead._process_moves() ->
trapq_append()` (in klippy/chelper/trapq.c). The step times are then
generated: `ToolHead._process_moves() ->
ToolHead._update_move_time() -> MCU_Stepper.generate_steps() ->
itersolve_generate_steps() -> itersolve_gen_steps_range()` (in
klippy/chelper/itersolve.c). The goal of the iterative solver is to
find step times given a function that calculates a stepper position
from a time. This is done by repeatedly "guessing" various times
until the stepper position formula returns the desired position of
the next step on the stepper. The feedback produced from each guess
is used to improve future guesses so that the process rapidly
converges to the desired time. The kinematic stepper position
formulas are located in the klippy/chelper/ directory (eg,
kin_cart.c, kin_corexy.c, kin_delta.c, kin_extruder.c).
ToolHead._advance_move_time() -> ToolHead._advance_flush_time() ->
MCU_Stepper.generate_steps() -> itersolve_generate_steps() ->
itersolve_gen_steps_range()` (in klippy/chelper/itersolve.c). The
goal of the iterative solver is to find step times given a function
that calculates a stepper position from a time. This is done by
repeatedly "guessing" various times until the stepper position
formula returns the desired position of the next step on the
stepper. The feedback produced from each guess is used to improve
future guesses so that the process rapidly converges to the desired
time. The kinematic stepper position formulas are located in the
klippy/chelper/ directory (eg, kin_cart.c, kin_corexy.c,
kin_delta.c, kin_extruder.c).
* Note that the extruder is handled in its own kinematic class:
`ToolHead._process_moves() -> PrinterExtruder.move()`. Since
@ -284,6 +286,11 @@ The following may also be useful:
during the `load_config()` or "connect event" phases. Use either
`raise config.error("my error")` or `raise printer.config_error("my
error")` to report the error.
* Do not store a reference to the `config` object in a class member
variable (nor in any similar location that may persist past initial
module loading). The `config` object is a reference to a "config
loading phase" class and it is not valid to invoke its methods after
the "config loading phase" has completed.
* Use the "pins" module to configure a pin on a micro-controller. This
is typically done with something similar to
`printer.lookup_object("pins").setup_pin("pwm",
@ -357,10 +364,10 @@ Useful steps:
be efficient as it is typically only called during homing and
probing operations.
5. Other methods. Implement the `check_move()`, `get_status()`,
`get_steppers()`, `home()`, and `set_position()` methods. These
functions are typically used to provide kinematic specific checks.
However, at the start of development one can use boiler-plate code
here.
`get_steppers()`, `home()`, `clear_homing_state()`, and `set_position()`
methods. These functions are typically used to provide kinematic
specific checks. However, at the start of development one can use
boiler-plate code here.
6. Implement test cases. Create a g-code file with a series of moves
that can test important cases for the given kinematics. Follow the
[debugging documentation](Debugging.md) to convert this g-code file

View file

@ -8,6 +8,179 @@ All dates in this document are approximate.
## Changes
20250721: The `[pca9632]` and `[mcp4018]` modules no longer accept the
`scl_pin` and `sda_pin` options. Use `i2c_software_scl_pin` and
`i2c_software_sda_pin` instead.
20250428: The maximum `cycle_time` for pwm `[output_pin]`,
`[pwm_cycle_time]`, `[pwm_tool]`, and similar config sections is now 3
seconds (reduced from 5 seconds). The `maximum_mcu_duration` in
`[pwm_tool]` is now also 3 seconds.
20250418: The manual_stepper `STOP_ON_ENDSTOP` feature may now take
less time to complete. Previously, the command would wait the entire
time the move could possibly take even if the endstop triggered
earlier. Now, the command finishes shortly after the endstop trigger.
20250417: SPI devices using "software SPI" are now rate limited.
Previously, the `spi_speed` in the config was ignored and the
transmission speed was only limited by the processing speed of the
micro-controller. Now, speeds are limited by the `spi_speed` config
parameter (actual hardware speeds are likely to be lower than the
configured value due to software overhead).
20250411: Klipper v0.13.0 released.
20250308: The `AUTO` parameter of the
`AXIS_TWIST_COMPENSATION_CALIBRATE` command has been removed.
20250131: Option `VARIABLE=<name>` in `SAVE_VARIABLE` requires lowercase
value. For example, `extruder` instead of mixedcase `Extruder` or
uppercase `EXTRUDER`. Using any uppercase letter will raise an error.
20241203: The resonance test has been changed to include slow sweeping
moves. This change requires that testing point(s) have some clearance
in X/Y plane (+/- 30 mm from the test point should suffice when using
the default settings). The new test should generally produce more
accurate and reliable test results. However, if required, the previous
test behavior can be restored by adding options `sweeping_period: 0` and
`accel_per_hz: 75` to the `[resonance_tester]` config section.
20241201: In some cases Klipper may have ignored leading characters or
spaces in a traditional G-Code command. For example, "99M123" may have
been interpreted as "M123" and "M 321" may have been interpreted as
"M321". Klipper will now report these cases with an "Unknown command"
warning.
20241112: Option `CHIPS=<chip_name>` in `TEST_RESONANCES` and
`SHAPER_CALIBRATE` requires specifying the full name(s) of the accel
chip(s). For example, `adxl345 rpi` instead of short name - `rpi`.
20240912: `SET_PIN`, `SET_SERVO`, `SET_FAN_SPEED`, `M106`, and `M107`
commands are now collated. Previously, if many updates to the same
object were issued faster than the minimum scheduling time (typically
100ms) then actual updates could be queued far into the future. Now if
many updates are issued in rapid succession then it is possible that
only the latest request will be applied. If the previous behavior is
requried then consider adding explicit `G4` delay commands between
updates.
20240912: Support for `maximum_mcu_duration` and `static_value`
parameters in `[output_pin]` config sections have been removed. These
options have been deprecated since 20240123.
20240415: The `on_error_gcode` parameter in the `[virtual_sdcard]`
config section now has a default. If this parameter is not specified
it now defaults to `TURN_OFF_HEATERS`. If the previous behavior is
desired (take no default action on an error during a virtual_sdcard
print) then define `on_error_gcode` with an empty value.
20240313: The `max_accel_to_decel` parameter in the `[printer]` config
section has been deprecated. The `ACCEL_TO_DECEL` parameter of the
`SET_VELOCITY_LIMIT` command has been deprecated. The
`printer.toolhead.max_accel_to_decel` status has been removed. Use the
[minimum_cruise_ratio parameter](./Config_Reference.md#printer)
instead. The deprecated features will be removed in the near future,
and using them in the interim may result in subtly different behavior.
20240215: Several deprecated features have been removed. Using "NTC
100K beta 3950" as a thermistor name has been removed (deprecated on
20211110). The `SYNC_STEPPER_TO_EXTRUDER` and
`SET_EXTRUDER_STEP_DISTANCE` commands have been removed, and the
extruder `shared_heater` config option has been removed (deprecated on
20220210). The bed_mesh `relative_reference_index` option has been
removed (deprecated on 20230619).
20240123: The output_pin SET_PIN CYCLE_TIME parameter has been
removed. Use the new
[pwm_cycle_time](Config_Reference.md#pwm_cycle_time) module if it is
necessary to dynamically change a pwm pin's cycle time.
20240123: The output_pin `maximum_mcu_duration` parameter is
deprecated. Use a [pwm_tool config section](Config_Reference.md#pwm_tool)
instead. The option will be removed in the near future.
20240123: The output_pin `static_value` parameter is deprecated.
Replace with `value` and `shutdown_value` parameters. The option will
be removed in the near future.
20231216: The `[hall_filament_width_sensor]` is changed to trigger filament runout
when the thickness of the filament exceeds `max_diameter`. The maximum diameter
defaults to `default_nominal_filament_diameter + max_difference`. See
[[hall_filament_width_sensor] configuration
reference](./Config_Reference.md#hall_filament_width_sensor) for more details.
20231207: Several undocumented config parameters in the `[printer]`
config section have been removed (the buffer_time_low,
buffer_time_high, buffer_time_start, and move_flush_time parameters).
20231110: Klipper v0.12.0 released.
20230826: If `safe_distance` is set or calculated to be 0 in `[dual_carriage]`,
the carriages proximity checks will be disabled as per documentation. A user
may wish to configure `safe_distance` explicitly to prevent accidental crashes
of the carriages with each other. Additionally, the homing order of the primary
and the dual carriage is changed in some configurations (certain configurations
when both carriages home in the same direction, see
[[dual_carriage] configuration reference](./Config_Reference.md#dual_carriage)
for more details).
20230810: The flash-sdcard.sh script now supports both variants of the
Bigtreetech SKR-3, STM32H743 and STM32H723. For this, the original tag
of btt-skr-3 now has changed to be either btt-skr-3-h743 or btt-skr-3-h723.
20230729: The exported status for `dual_carriage` is changed. Instead of
exporting `mode` and `active_carriage`, the individual modes for each
carriage are exported as `printer.dual_carriage.carriage_0` and
`printer.dual_carriage.carriage_1`.
20230619: The `relative_reference_index` option has been deprecated
and superceded by the `zero_reference_position` option. Refer to the
[Bed Mesh Documentation](./Bed_Mesh.md#the-deprecated-relative_reference_index)
for details on how to update the configuration. With this deprecation
the `RELATIVE_REFERENCE_INDEX` is no longer available as a parameter
for the `BED_MESH_CALIBRATE` gcode command.
20230530: The default canbus frequency in "make menuconfig" is
now 1000000. If using canbus and using canbus with some other
frequency is required, then be sure to select "Enable extra low-level
configuration options" and specify the desired "CAN bus speed" in
"make menuconfig" when compiling and flashing the micro-controller.
20230525: `SHAPER_CALIBRATE` command immediately applies input shaper
parameters if `[input_shaper]` was enabled already.
20230407: The `stalled_bytes` counter in the log and in the
`printer.mcu.last_stats` field has been renamed to `upcoming_bytes`.
20230323: On tmc5160 drivers `multistep_filt` is now enabled by default. Set
`driver_MULTISTEP_FILT: False` in the tmc5160 config for the previous behavior.
20230304: The `SET_TMC_CURRENT` command now properly adjusts the globalscaler
register for drivers that have it. This removes a limitation where on tmc5160,
the currents could not be raised higher with `SET_TMC_CURRENT` than the
`run_current` value set in the config file.
However, this has a side effect: After running `SET_TMC_CURRENT`, the stepper
must be held at standstill for >130ms in case StealthChop2 is used so that the
AT#1 calibration gets executed by the driver.
20230202: The format of the `printer.screws_tilt_adjust` status
information has changed. The information is now stored as a dictionary of
screws with the resulting measurements. See the
[status reference](Status_Reference.md#screws_tilt_adjust) for details.
20230201: The `[bed_mesh]` module no longer loads the `default` profile
on startup. It is recommended that users who use the `default` profile
add `BED_MESH_PROFILE LOAD=default` to their `START_PRINT` macro (or
to their slicer's "Start G-Code" configuration when applicable).
20230103: It is now possible with the flash-sdcard.sh script to flash
both variants of the Bigtreetech SKR-2, STM32F407 and STM32F429.
This means that the original tag of btt-skr2 now has changed to either
btt-skr-2-f407 or btt-skr-2-f429.
20221128: Klipper v0.11.0 released.
20221122: Previously, with safe_z_home, it was possible that the
z_hop after the g28 homing would go in the negative z direction.
Now, a z_hop is performed after g28 only if it results in a positive

Some files were not shown because too many files have changed in this diff Show more