time to save, fixed a typo, maybe some F-related bugs

This commit is contained in:
Michael Moon 2010-01-31 15:12:58 +11:00
parent 4fc004c6c2
commit d9bb2f4db7
4 changed files with 29 additions and 27 deletions

View File

@ -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 */

View File

@ -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);

View File

@ -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;

View File

@ -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');