time to save, fixed a typo, maybe some F-related bugs
This commit is contained in:
parent
4fc004c6c2
commit
d9bb2f4db7
|
|
@ -13,6 +13,6 @@ extern volatile uint8_t clock_flag_250ms;
|
||||||
|
|
||||||
#define CLOCK_FLAG_250MS_TEMPCHECK 1
|
#define CLOCK_FLAG_250MS_TEMPCHECK 1
|
||||||
#define CLOCK_FLAG_250MS_REPORT 2
|
#define CLOCK_FLAG_250MS_REPORT 2
|
||||||
#define CLOCL_FLAG_250MS_STEPTIMEOUT 4
|
#define CLOCK_FLAG_250MS_STEPTIMEOUT 4
|
||||||
|
|
||||||
#endif /* _CLOCK_H */
|
#endif /* _CLOCK_H */
|
||||||
|
|
|
||||||
48
mendel/dda.c
48
mendel/dda.c
|
|
@ -201,20 +201,20 @@ void dda_create(TARGET *target, DDA *dda) {
|
||||||
if (DEBUG)
|
if (DEBUG)
|
||||||
serwrite_uint32(dda->total_steps); serial_writechar(',');
|
serwrite_uint32(dda->total_steps); serial_writechar(',');
|
||||||
|
|
||||||
if (dda->f_delta > dda->total_steps) {
|
// if (dda->f_delta > dda->total_steps) {
|
||||||
dda->f_scale = dda->f_delta / dda->total_steps;
|
// dda->f_scale = dda->f_delta / dda->total_steps;
|
||||||
if (dda->f_scale > 3) {
|
// if (dda->f_scale > 3) {
|
||||||
dda->f_delta = dda->total_steps;
|
// dda->f_delta = dda->total_steps;
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
// if we boost the number of steps here, many will only be F-steps which take no time- maybe we should calculate move_distance first?
|
// // if we boost the number of steps here, many will only be F-steps which take no time- maybe we should calculate move_distance first?
|
||||||
dda->f_scale = 1;
|
// dda->f_scale = 1;
|
||||||
dda->total_steps = dda->f_delta;
|
// dda->total_steps = dda->f_delta;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
else {
|
// else {
|
||||||
dda->f_scale = 1;
|
// dda->f_scale = 1;
|
||||||
}
|
// }
|
||||||
|
|
||||||
if (DEBUG)
|
if (DEBUG)
|
||||||
serwrite_uint32(dda->total_steps); serial_writechar(',');
|
serwrite_uint32(dda->total_steps); serial_writechar(',');
|
||||||
|
|
@ -238,8 +238,8 @@ void dda_create(TARGET *target, DDA *dda) {
|
||||||
|
|
||||||
if (distance < 2)
|
if (distance < 2)
|
||||||
distance = dda->e_delta * UM_PER_STEP_E;
|
distance = dda->e_delta * UM_PER_STEP_E;
|
||||||
if (distance < 2)
|
// if (distance < 2)
|
||||||
distance = dda->f_delta;
|
// distance = dda->f_delta;
|
||||||
|
|
||||||
// pre-calculate move speed in millimeter microseconds per step minute for less math in interrupt context
|
// pre-calculate move speed in millimeter microseconds per step minute for less math in interrupt context
|
||||||
// mm (distance) * 60000000 us/min / step (total_steps) = mm.us per step.min
|
// mm (distance) * 60000000 us/min / step (total_steps) = mm.us per step.min
|
||||||
|
|
@ -409,20 +409,22 @@ void dda_step(DDA *dda) {
|
||||||
|
|
||||||
if (step_option & F_CAN_STEP) {
|
if (step_option & F_CAN_STEP) {
|
||||||
dda->f_counter -= dda->f_delta;
|
dda->f_counter -= dda->f_delta;
|
||||||
if (dda->f_counter < 0) {
|
while (dda->f_counter < 0) {
|
||||||
|
|
||||||
dda->f_counter += dda->total_steps;
|
dda->f_counter += dda->total_steps;
|
||||||
|
|
||||||
if (dda->f_scale == 0)
|
// if (dda->f_scale == 0)
|
||||||
dda->f_scale = 1;
|
// dda->f_scale = 1;
|
||||||
|
|
||||||
if (dda->f_direction) {
|
if (dda->f_direction) {
|
||||||
current_position.F += dda->f_scale;
|
// current_position.F += dda->f_scale;
|
||||||
|
current_position.F += 1;
|
||||||
if (current_position.F > dda->endpoint.F)
|
if (current_position.F > dda->endpoint.F)
|
||||||
current_position.F = dda->endpoint.F;
|
current_position.F = dda->endpoint.F;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
current_position.F -= dda->f_scale;
|
// current_position.F -= dda->f_scale;
|
||||||
|
current_position.F -= 1;
|
||||||
if (current_position.F < dda->endpoint.F)
|
if (current_position.F < dda->endpoint.F)
|
||||||
current_position.F = dda->endpoint.F;
|
current_position.F = dda->endpoint.F;
|
||||||
}
|
}
|
||||||
|
|
@ -435,8 +437,8 @@ void dda_step(DDA *dda) {
|
||||||
serial_writechar('[');
|
serial_writechar('[');
|
||||||
serwrite_hex8(step_option);
|
serwrite_hex8(step_option);
|
||||||
serial_writechar(':');
|
serial_writechar(':');
|
||||||
serwrite_uint16(dda->f_scale);
|
// serwrite_uint16(dda->f_scale);
|
||||||
serial_writechar(',');
|
// serial_writechar(',');
|
||||||
serwrite_int32(current_position.F);
|
serwrite_int32(current_position.F);
|
||||||
serial_writechar('/');
|
serial_writechar('/');
|
||||||
serwrite_int32(dda->endpoint.F);
|
serwrite_int32(dda->endpoint.F);
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ typedef struct {
|
||||||
|
|
||||||
uint32_t total_steps;
|
uint32_t total_steps;
|
||||||
|
|
||||||
uint16_t f_scale;
|
// uint16_t f_scale;
|
||||||
uint32_t move_duration;
|
uint32_t move_duration;
|
||||||
} DDA;
|
} DDA;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -117,8 +117,8 @@ int main (void)
|
||||||
serial_writestr_P(PSTR("DDA: f#"));
|
serial_writestr_P(PSTR("DDA: f#"));
|
||||||
serwrite_int32(movebuffer[mb_head].f_counter);
|
serwrite_int32(movebuffer[mb_head].f_counter);
|
||||||
serial_writechar('/');
|
serial_writechar('/');
|
||||||
serwrite_uint16(movebuffer[mb_head].f_scale);
|
// serwrite_uint16(movebuffer[mb_head].f_scale);
|
||||||
serial_writechar('/');
|
// serial_writechar('/');
|
||||||
serwrite_int16(movebuffer[mb_head].f_delta);
|
serwrite_int16(movebuffer[mb_head].f_delta);
|
||||||
serial_writechar('\n');
|
serial_writechar('\n');
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue