Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update to latest Klipper3d/klipper (600e89ae) #134

Merged
merged 64 commits into from
Jan 28, 2024
Merged

update to latest Klipper3d/klipper (600e89ae) #134

merged 64 commits into from
Jan 28, 2024

Conversation

Piezoid
Copy link
Contributor

@Piezoid Piezoid commented Jan 28, 2024

Update to latest Klipper3d/klipper (600e89a) (Jan 27)
Do not merge from Github, fast-forward locally once the PR is approved.

Bulk sensor code might not be completely stabilized. Flashing the mcu firmware is required with this update.

Config changes

20240123: The output_pin SET_PIN CYCLE_TIME parameter has been
removed. Use the new
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
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.

eamaclean and others added 30 commits December 21, 2023 20:58
STM32G4 USB controller requires 8 or 16-bit access, not 32-bit

Signed-off-by: Alex Maclean <[email protected]>
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 <[email protected]>
Signed-off-by: Alex Maclean <[email protected]>
Commit b7b1358 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 <[email protected]>
Move the ClockSyncRegression class from adxl345.py to a new
bulk_sensors.py file.

Signed-off-by: Kevin O'Connor <[email protected]>
Move the bulk sample queue collection to a new helper class in
bulk_sensor.py.

Signed-off-by: Kevin O'Connor <[email protected]>
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 <[email protected]>
The APIDumpHelper class already ensures that the start/stop callbacks
will only be called when needed.

Signed-off-by: Kevin O'Connor <[email protected]>
This makes the code a little more readable.

Signed-off-by: Kevin O'Connor <[email protected]>
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 <[email protected]>
…lkHelper

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 <[email protected]>
…439)

Expire history relative to current time rather than last move in history queue

Signed-off-by: Francois Chagnon <[email protected]>
…me()

Move calculation of clear_history_time to the callers of
_advance_flush_time() as a minor processing optimization.

Signed-off-by: Kevin O'Connor <[email protected]>
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 <[email protected]>
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 <[email protected]>
the meaning and the illustration shows 13x9 mesh however the text was 13x8.

Signed-off-by: Mitsunori YOSHIDA <[email protected]>
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 <[email protected]>
Commit 80a7744 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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
KevinOConnor and others added 24 commits January 19, 2024 11:55
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <[email protected]>
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <[email protected]>
Simplify the mcu code as any messages are ignored by the host anyway.

Signed-off-by: Kevin O'Connor <[email protected]>
…urements

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 <[email protected]>
Send an explicit clock query in ChipClockUpdater to seed the initial
clock.

Signed-off-by: Kevin O'Connor <[email protected]>
It's simpler and faster to enable the adxl345 in the python code.

Signed-off-by: Kevin O'Connor <[email protected]>
It's simpler and faster to enable the mpu9250 in the python code.

Signed-off-by: Kevin O'Connor <[email protected]>
It's simpler and faster to enable the lis2dw in the python code.

Signed-off-by: Kevin O'Connor <[email protected]>
…use klipper never uses UCPD (#6462)

Signed-off-by: Alan.Ma from BigTreeTech <[email protected]>
- This offset is used by Anycubic Kobra 2 Neo bootloader

Signed-off-by: Jakub Przystasz <[email protected]>
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 <[email protected]>
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 <[email protected]>
Advise users to configure a pwm_tool config section if checking for
maximum mcu duration is required.

Signed-off-by: Kevin O'Connor <[email protected]>
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 <[email protected]>
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 <[email protected]>
Use the rp2040 specific linker script even when using a bootloader.

Signed-off-by: Kevin O'Connor <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Signed-off-by: Kyle Hansen <[email protected]>
Signed-off-by: Kevin O'Connor <[email protected]>
@Piezoid Piezoid self-assigned this Jan 28, 2024
@Piezoid Piezoid requested review from rogerlz and bwnance January 28, 2024 11:39
@Piezoid Piezoid merged commit 261da3c into master Jan 28, 2024
2 checks passed
@Piezoid Piezoid deleted the upstream_pr branch January 28, 2024 13:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.