simulator: suppress position display unless something changed
Also coalesce multiple pin-steps occurring at the same clock-time into a single step. This allows us to treat X+Y movements at the same moment into a single step on corexy.
This commit is contained in:
parent
aebaa3bf40
commit
d9cf035687
|
|
@ -316,9 +316,18 @@ static int pos[AXIS_MAX]; ///< Current position in 2 * steps
|
||||||
static bool direction[PIN_NB];
|
static bool direction[PIN_NB];
|
||||||
static bool state[PIN_NB];
|
static bool state[PIN_NB];
|
||||||
|
|
||||||
|
static int prev_pos[AXIS_MAX]; ///< last reported position
|
||||||
static void print_pos(void) {
|
static void print_pos(void) {
|
||||||
char * axis = "xyze";
|
char * axis = "xyze";
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
// Only print axes if different from last report
|
||||||
|
for ( i = X_AXIS ; i < AXIS_MAX ; i++ )
|
||||||
|
if (pos[i]/2 != prev_pos[i]/2) break;
|
||||||
|
if (i == AXIS_MAX) return;
|
||||||
|
for ( i = X_AXIS ; i < AXIS_MAX ; i++ )
|
||||||
|
prev_pos[i] = pos[i];
|
||||||
|
|
||||||
if (trace_pos) {
|
if (trace_pos) {
|
||||||
for ( i = X_AXIS ; i < AXIS_MAX ; i++ ) {
|
for ( i = X_AXIS ; i < AXIS_MAX ; i++ ) {
|
||||||
sim_info_cont("%c:%5d ", axis[i], pos[i] / 2);
|
sim_info_cont("%c:%5d ", axis[i], pos[i] / 2);
|
||||||
|
|
@ -425,7 +434,10 @@ void _WRITE(pin_t pin, bool s) {
|
||||||
for (int a = X_AXIS; a <= E_AXIS; a++)
|
for (int a = X_AXIS; a <= E_AXIS; a++)
|
||||||
record_pin(TRACE_POS + axis, pos[axis] / 2, nseconds);
|
record_pin(TRACE_POS + axis, pos[axis] / 2, nseconds);
|
||||||
|
|
||||||
print_pos();
|
static uint64_t prev_ns = -1;
|
||||||
|
if (prev_ns != nseconds)
|
||||||
|
print_pos();
|
||||||
|
prev_ns = nseconds;
|
||||||
|
|
||||||
for (int a = X_AXIS; a < E_AXIS; a++)
|
for (int a = X_AXIS; a < E_AXIS; a++)
|
||||||
sim_endstop(a);
|
sim_endstop(a);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue