home.c: adaptive homing feedrates for all axes.
This commit is contained in:
parent
a7adc66ae5
commit
dc84e4dfe0
88
home.c
88
home.c
|
|
@ -44,6 +44,14 @@
|
||||||
#define SEARCH_FAST_X (uint32_t)((double)60. * \
|
#define SEARCH_FAST_X (uint32_t)((double)60. * \
|
||||||
sqrt((double)2 * ACCELERATION * ENDSTOP_CLEARANCE_X / 1000.))
|
sqrt((double)2 * ACCELERATION * ENDSTOP_CLEARANCE_X / 1000.))
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef ENDSTOP_CLEARANCE_Y
|
||||||
|
#define SEARCH_FAST_Y (uint32_t)((double)60. * \
|
||||||
|
sqrt((double)2 * ACCELERATION * ENDSTOP_CLEARANCE_Y / 1000.))
|
||||||
|
#endif
|
||||||
|
#ifdef ENDSTOP_CLEARANCE_Z
|
||||||
|
#define SEARCH_FAST_Z (uint32_t)((double)60. * \
|
||||||
|
sqrt((double)2 * ACCELERATION * ENDSTOP_CLEARANCE_Z / 1000.))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/// home all 3 axes
|
/// home all 3 axes
|
||||||
|
|
@ -106,21 +114,17 @@ void home_x_positive() {
|
||||||
TARGET t = startpoint;
|
TARGET t = startpoint;
|
||||||
|
|
||||||
t.X = +1000000;
|
t.X = +1000000;
|
||||||
#ifdef SLOW_HOMING
|
if (SEARCH_FAST_X > SEARCH_FEEDRATE_X)
|
||||||
// hit home soft
|
t.F = SEARCH_FAST_X;
|
||||||
t.F = SEARCH_FEEDRATE_X;
|
else
|
||||||
#else
|
t.F = SEARCH_FEEDRATE_X;
|
||||||
// hit home hard
|
|
||||||
t.F = MAXIMUM_FEEDRATE_X;
|
|
||||||
#endif
|
|
||||||
enqueue_home(&t, 0x1, 1);
|
enqueue_home(&t, 0x1, 1);
|
||||||
|
|
||||||
#ifndef SLOW_HOMING
|
if (SEARCH_FAST_X > SEARCH_FEEDRATE_X) {
|
||||||
// back off slowly
|
|
||||||
t.X = -1000000;
|
t.X = -1000000;
|
||||||
t.F = SEARCH_FEEDRATE_X;
|
t.F = SEARCH_FEEDRATE_X;
|
||||||
enqueue_home(&t, 0x1, 0);
|
enqueue_home(&t, 0x1, 0);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
// set X home
|
// set X home
|
||||||
queue_wait();
|
queue_wait();
|
||||||
|
|
@ -140,21 +144,17 @@ void home_y_negative() {
|
||||||
TARGET t = startpoint;
|
TARGET t = startpoint;
|
||||||
|
|
||||||
t.Y = -1000000;
|
t.Y = -1000000;
|
||||||
#ifdef SLOW_HOMING
|
if (SEARCH_FAST_Y > SEARCH_FEEDRATE_Y)
|
||||||
// hit home soft
|
t.F = SEARCH_FAST_Y;
|
||||||
t.F = SEARCH_FEEDRATE_Y;
|
else
|
||||||
#else
|
t.F = SEARCH_FEEDRATE_Y;
|
||||||
// hit home hard
|
|
||||||
t.F = MAXIMUM_FEEDRATE_Y;
|
|
||||||
#endif
|
|
||||||
enqueue_home(&t, 0x2, 1);
|
enqueue_home(&t, 0x2, 1);
|
||||||
|
|
||||||
#ifndef SLOW_HOMING
|
if (SEARCH_FAST_Y > SEARCH_FEEDRATE_Y) {
|
||||||
// back off slowly
|
|
||||||
t.Y = +1000000;
|
t.Y = +1000000;
|
||||||
t.F = SEARCH_FEEDRATE_Y;
|
t.F = SEARCH_FEEDRATE_Y;
|
||||||
enqueue_home(&t, 0x2, 0);
|
enqueue_home(&t, 0x2, 0);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
// set Y home
|
// set Y home
|
||||||
queue_wait();
|
queue_wait();
|
||||||
|
|
@ -176,21 +176,17 @@ void home_y_positive() {
|
||||||
TARGET t = startpoint;
|
TARGET t = startpoint;
|
||||||
|
|
||||||
t.Y = +1000000;
|
t.Y = +1000000;
|
||||||
#ifdef SLOW_HOMING
|
if (SEARCH_FAST_Y > SEARCH_FEEDRATE_Y)
|
||||||
// hit home soft
|
t.F = SEARCH_FAST_Y;
|
||||||
t.F = SEARCH_FEEDRATE_Y;
|
else
|
||||||
#else
|
t.F = SEARCH_FEEDRATE_Y;
|
||||||
// hit home hard
|
|
||||||
t.F = MAXIMUM_FEEDRATE_Y;
|
|
||||||
#endif
|
|
||||||
enqueue_home(&t, 0x2, 1);
|
enqueue_home(&t, 0x2, 1);
|
||||||
|
|
||||||
#ifndef SLOW_HOMING
|
if (SEARCH_FAST_Y > SEARCH_FEEDRATE_Y) {
|
||||||
// back off slowly
|
|
||||||
t.Y = -1000000;
|
t.Y = -1000000;
|
||||||
t.F = SEARCH_FEEDRATE_Y;
|
t.F = SEARCH_FEEDRATE_Y;
|
||||||
enqueue_home(&t, 0x2, 0);
|
enqueue_home(&t, 0x2, 0);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
// set Y home
|
// set Y home
|
||||||
queue_wait();
|
queue_wait();
|
||||||
|
|
@ -210,21 +206,17 @@ void home_z_negative() {
|
||||||
TARGET t = startpoint;
|
TARGET t = startpoint;
|
||||||
|
|
||||||
t.Z = -1000000;
|
t.Z = -1000000;
|
||||||
#ifdef SLOW_HOMING
|
if (SEARCH_FAST_Z > SEARCH_FEEDRATE_Z)
|
||||||
// hit home soft
|
t.F = SEARCH_FAST_Z;
|
||||||
t.F = SEARCH_FEEDRATE_Z;
|
else
|
||||||
#else
|
t.F = SEARCH_FEEDRATE_Z;
|
||||||
// hit home hard
|
|
||||||
t.F = MAXIMUM_FEEDRATE_Z;
|
|
||||||
#endif
|
|
||||||
enqueue_home(&t, 0x4, 1);
|
enqueue_home(&t, 0x4, 1);
|
||||||
|
|
||||||
#ifndef SLOW_HOMING
|
if (SEARCH_FAST_Z > SEARCH_FEEDRATE_Z) {
|
||||||
// back off slowly
|
|
||||||
t.Z = +1000000;
|
t.Z = +1000000;
|
||||||
t.F = SEARCH_FEEDRATE_Z;
|
t.F = SEARCH_FEEDRATE_Z;
|
||||||
enqueue_home(&t, 0x4, 0);
|
enqueue_home(&t, 0x4, 0);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
// set Z home
|
// set Z home
|
||||||
queue_wait();
|
queue_wait();
|
||||||
|
|
@ -247,21 +239,17 @@ void home_z_positive() {
|
||||||
TARGET t = startpoint;
|
TARGET t = startpoint;
|
||||||
|
|
||||||
t.Z = +1000000;
|
t.Z = +1000000;
|
||||||
#ifdef SLOW_HOMING
|
if (SEARCH_FAST_Z > SEARCH_FEEDRATE_Z)
|
||||||
// hit home soft
|
t.F = SEARCH_FAST_Z;
|
||||||
t.F = SEARCH_FEEDRATE_Z;
|
else
|
||||||
#else
|
t.F = SEARCH_FEEDRATE_Z;
|
||||||
// hit home hard
|
|
||||||
t.F = MAXIMUM_FEEDRATE_Z;
|
|
||||||
#endif
|
|
||||||
enqueue_home(&t, 0x4, 1);
|
enqueue_home(&t, 0x4, 1);
|
||||||
|
|
||||||
#ifndef SLOW_HOMING
|
if (SEARCH_FAST_Z > SEARCH_FEEDRATE_Z) {
|
||||||
// back off slowly
|
|
||||||
t.Z = -1000000;
|
t.Z = -1000000;
|
||||||
t.F = SEARCH_FEEDRATE_Z;
|
t.F = SEARCH_FEEDRATE_Z;
|
||||||
enqueue_home(&t, 0x4, 0);
|
enqueue_home(&t, 0x4, 0);
|
||||||
#endif
|
}
|
||||||
|
|
||||||
// set Z home
|
// set Z home
|
||||||
queue_wait();
|
queue_wait();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue