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>
This commit is contained in:
parent
3d3b87f97f
commit
7a74888b43
|
@ -6,7 +6,6 @@
|
||||||
import chelper
|
import chelper
|
||||||
|
|
||||||
MAX_SCHEDULE_TIME = 5.0
|
MAX_SCHEDULE_TIME = 5.0
|
||||||
CLOCK_SYNC_EXTRA_TIME = 0.050
|
|
||||||
|
|
||||||
class error(Exception):
|
class error(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -118,8 +117,7 @@ class MCU_queued_pwm:
|
||||||
# Continue flushing to resend time
|
# Continue flushing to resend time
|
||||||
wakeclock += self._duration_ticks
|
wakeclock += self._duration_ticks
|
||||||
wake_print_time = self._mcu.clock_to_print_time(wakeclock)
|
wake_print_time = self._mcu.clock_to_print_time(wakeclock)
|
||||||
self._toolhead.note_kinematic_activity(wake_print_time
|
self._toolhead.note_kinematic_activity(wake_print_time)
|
||||||
+ CLOCK_SYNC_EXTRA_TIME)
|
|
||||||
def set_pwm(self, print_time, value):
|
def set_pwm(self, print_time, value):
|
||||||
clock = self._mcu.print_time_to_clock(print_time)
|
clock = self._mcu.print_time_to_clock(print_time)
|
||||||
if self._invert:
|
if self._invert:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Code for coordinating events on the printer toolhead
|
# Code for coordinating events on the printer toolhead
|
||||||
#
|
#
|
||||||
# Copyright (C) 2016-2021 Kevin O'Connor <kevin@koconnor.net>
|
# Copyright (C) 2016-2024 Kevin O'Connor <kevin@koconnor.net>
|
||||||
#
|
#
|
||||||
# This file may be distributed under the terms of the GNU GPLv3 license.
|
# This file may be distributed under the terms of the GNU GPLv3 license.
|
||||||
import math, logging, importlib
|
import math, logging, importlib
|
||||||
|
@ -191,6 +191,7 @@ BUFFER_TIME_HIGH = 2.0
|
||||||
BUFFER_TIME_START = 0.250
|
BUFFER_TIME_START = 0.250
|
||||||
BGFLUSH_LOW_TIME = 0.200
|
BGFLUSH_LOW_TIME = 0.200
|
||||||
BGFLUSH_BATCH_TIME = 0.200
|
BGFLUSH_BATCH_TIME = 0.200
|
||||||
|
BGFLUSH_EXTRA_TIME = 0.250
|
||||||
MIN_KIN_TIME = 0.100
|
MIN_KIN_TIME = 0.100
|
||||||
MOVE_BATCH_TIME = 0.500
|
MOVE_BATCH_TIME = 0.500
|
||||||
STEPCOMPRESS_FLUSH_TIME = 0.050
|
STEPCOMPRESS_FLUSH_TIME = 0.050
|
||||||
|
@ -428,14 +429,15 @@ class ToolHead:
|
||||||
self.check_stall_time = self.print_time
|
self.check_stall_time = self.print_time
|
||||||
# In "NeedPrime"/"Priming" state - flush queues if needed
|
# In "NeedPrime"/"Priming" state - flush queues if needed
|
||||||
while 1:
|
while 1:
|
||||||
if self.last_flush_time >= self.need_flush_time:
|
end_flush = self.need_flush_time + BGFLUSH_EXTRA_TIME
|
||||||
|
if self.last_flush_time >= end_flush:
|
||||||
self.do_kick_flush_timer = True
|
self.do_kick_flush_timer = True
|
||||||
return self.reactor.NEVER
|
return self.reactor.NEVER
|
||||||
buffer_time = self.last_flush_time - est_print_time
|
buffer_time = self.last_flush_time - est_print_time
|
||||||
if buffer_time > BGFLUSH_LOW_TIME:
|
if buffer_time > BGFLUSH_LOW_TIME:
|
||||||
return eventtime + buffer_time - BGFLUSH_LOW_TIME
|
return eventtime + buffer_time - BGFLUSH_LOW_TIME
|
||||||
ftime = est_print_time + BGFLUSH_LOW_TIME + BGFLUSH_BATCH_TIME
|
ftime = est_print_time + BGFLUSH_LOW_TIME + BGFLUSH_BATCH_TIME
|
||||||
self._advance_flush_time(min(self.need_flush_time, ftime))
|
self._advance_flush_time(min(end_flush, ftime))
|
||||||
except:
|
except:
|
||||||
logging.exception("Exception in flush_handler")
|
logging.exception("Exception in flush_handler")
|
||||||
self.printer.invoke_shutdown("Exception in flush_handler")
|
self.printer.invoke_shutdown("Exception in flush_handler")
|
||||||
|
|
Loading…
Reference in New Issue