CoreXY turns the X and Y motors to render a target position differently
than straight cartesian printer does. From the theory page on corexy.com,
where the motors are called A and B instead of X and Y:
dx = 1/2(dA + dB), dY = 1/2(dA - dB)
dA = dX + dY
dB = dX - dY
Accordingly, each step of a single motor results in half of a step in the
X or Y axis. To simplify this and not lose steps, make the pos[] array
hold 2*steps instead of single steps. Adjust back to single steps with
/2 where needed. Store 2*steps whenever writing to pos[] variables
which are not coreXY driven.
Since each step of X or Y (A or B) affects both X and Y position, send
updates to record_pin for all axes instead of only the "affected" axis.
The function record_pin will ignore reports for pins which did not change
from the previous call. This also helps us keep from reporting duplicate
positions for half-steps in coreXY mode, too.
|
||
|---|---|---|
| .. | ||
| analog_sim.c | ||
| data_recorder.c | ||
| data_recorder.h | ||
| delay_sim.c | ||
| heater_sim.c | ||
| intercom_sim.c | ||
| pff_diskio_sim.c | ||
| pff_sim.c | ||
| sd_sim.c | ||
| serial_sim.c | ||
| simulator.c | ||
| spi_sim.c | ||
| timer_ext.c | ||