@@ -422,33 +422,36 @@ void FxdTiCtrl::reset() {
422
422
stepperCmdBuff_produceIdx = stepperCmdBuff_consumeIdx = 0 ;
423
423
424
424
for (uint32_t i = 0U ; i < (FTM_BATCH_SIZE); i++) { // Reset trajectory history
425
- TERN_ (HAS_X_AXIS, xd[i] = 0 .0f );
426
- TERN_ (HAS_Y_AXIS, yd[i] = 0 .0f );
427
- TERN_ (HAS_Z_AXIS, zd[i] = 0 .0f );
425
+ TERN_ (HAS_X_AXIS, xd[i] = 0 .0f );
426
+ TERN_ (HAS_Y_AXIS, yd[i] = 0 .0f );
427
+ TERN_ (HAS_Z_AXIS, zd[i] = 0 .0f );
428
428
TERN_ (HAS_EXTRUDERS, ed[i] = 0 .0f );
429
429
}
430
430
431
431
blockProcRdy = blockProcRdy_z1 = blockProcDn = false ;
432
432
batchRdy = batchRdyForInterp = false ;
433
433
runoutEna = false ;
434
434
435
- TERN_ (HAS_X_AXIS, x_endPosn_prevBlock = 0 .0f );
436
- TERN_ (HAS_Y_AXIS, y_endPosn_prevBlock = 0 .0f );
437
- TERN_ (HAS_Z_AXIS, z_endPosn_prevBlock = 0 .0f );
435
+ TERN_ (HAS_X_AXIS, x_endPosn_prevBlock = 0 .0f );
436
+ TERN_ (HAS_Y_AXIS, y_endPosn_prevBlock = 0 .0f );
437
+ TERN_ (HAS_Z_AXIS, z_endPosn_prevBlock = 0 .0f );
438
438
TERN_ (HAS_EXTRUDERS, e_endPosn_prevBlock = 0 .0f );
439
439
440
440
makeVector_idx = makeVector_idx_z1 = 0 ;
441
441
makeVector_batchIdx = FTM_BATCH_SIZE;
442
442
443
- TERN_ (HAS_X_AXIS, x_steps = 0 );
444
- TERN_ (HAS_Y_AXIS, y_steps = 0 );
445
- TERN_ (HAS_Z_AXIS, z_steps = 0 );
443
+ TERN_ (HAS_X_AXIS, x_steps = 0 );
444
+ TERN_ (HAS_Y_AXIS, y_steps = 0 );
445
+ TERN_ (HAS_Z_AXIS, z_steps = 0 );
446
446
TERN_ (HAS_EXTRUDERS, e_steps = 0 );
447
+
447
448
interpIdx = interpIdx_z1 = 0 ;
448
- TERN_ (HAS_X_AXIS, x_dirState = stepDirState_NOT_SET);
449
- TERN_ (HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET);
450
- TERN_ (HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET);
449
+
450
+ TERN_ (HAS_X_AXIS, x_dirState = stepDirState_NOT_SET);
451
+ TERN_ (HAS_Y_AXIS, y_dirState = stepDirState_NOT_SET);
452
+ TERN_ (HAS_Z_AXIS, z_dirState = stepDirState_NOT_SET);
451
453
TERN_ (HAS_EXTRUDERS, e_dirState = stepDirState_NOT_SET);
454
+
452
455
nextStepTicks = FTM_MIN_TICKS;
453
456
454
457
#if HAS_X_AXIS
@@ -486,28 +489,28 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) {
486
489
#if HAS_X_AXIS
487
490
x_startPosn = x_endPosn_prevBlock;
488
491
float x_moveDist = current_block->steps .a / planner.settings .axis_steps_per_mm [X_AXIS];
489
- if (direction.x ) x_moveDist *= -1 .0f ;
492
+ if (! direction.x ) x_moveDist *= -1 .0f ;
490
493
x_Ratio = x_moveDist * oneOverLength;
491
494
#endif
492
495
493
496
#if HAS_Y_AXIS
494
497
y_startPosn = y_endPosn_prevBlock;
495
498
float y_moveDist = current_block->steps .b / planner.settings .axis_steps_per_mm [Y_AXIS];
496
- if (direction.y ) y_moveDist *= -1 .0f ;
499
+ if (! direction.y ) y_moveDist *= -1 .0f ;
497
500
y_Ratio = y_moveDist * oneOverLength;
498
501
#endif
499
502
500
503
#if HAS_Z_AXIS
501
504
z_startPosn = z_endPosn_prevBlock;
502
505
float z_moveDist = current_block->steps .c / planner.settings .axis_steps_per_mm [Z_AXIS];
503
- if (direction.z ) z_moveDist *= -1 .0f ;
506
+ if (! direction.z ) z_moveDist *= -1 .0f ;
504
507
z_Ratio = z_moveDist * oneOverLength;
505
508
#endif
506
509
507
510
#if HAS_EXTRUDERS
508
511
e_startPosn = e_endPosn_prevBlock;
509
512
float extrusion = current_block->steps .e / planner.settings .axis_steps_per_mm [E_AXIS_N (current_block->extruder )];
510
- if (direction.e ) extrusion *= -1 .0f ;
513
+ if (! direction.e ) extrusion *= -1 .0f ;
511
514
e_Ratio = extrusion * oneOverLength;
512
515
#endif
513
516
@@ -568,31 +571,31 @@ void FxdTiCtrl::loadBlockData(block_t * const current_block) {
568
571
// One less than (Accel + Coasting + Decel) datapoints
569
572
max_intervals = N1 + N2 + N3 - 1U ;
570
573
571
- TERN_ (HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist);
572
- TERN_ (HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist);
573
- TERN_ (HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist);
574
+ TERN_ (HAS_X_AXIS, x_endPosn_prevBlock += x_moveDist);
575
+ TERN_ (HAS_Y_AXIS, y_endPosn_prevBlock += y_moveDist);
576
+ TERN_ (HAS_Z_AXIS, z_endPosn_prevBlock += z_moveDist);
574
577
TERN_ (HAS_EXTRUDERS, e_endPosn_prevBlock += extrusion);
575
578
}
576
579
577
580
// Generate data points of the trajectory.
578
581
void FxdTiCtrl::makeVector () {
579
- float accel_k = 0 .0f ; // (mm/s^2) Acceleration K factor
580
- float tau = (makeVector_idx + 1 ) * (FTM_TS); // (s) Time since start of block
581
- float dist = 0 .0f ; // (mm) Distance traveled
582
+ float accel_k = 0 .0f ; // (mm/s^2) Acceleration K factor
583
+ float tau = (makeVector_idx + 1 ) * (FTM_TS); // (s) Time since start of block
584
+ float dist = 0 .0f ; // (mm) Distance traveled
582
585
583
586
if (makeVector_idx < N1) {
584
587
// Acceleration phase
585
- dist = (f_s * tau) + (0 .5f * accel_P * sq (tau)); // (mm) Distance traveled for acceleration phase
586
- accel_k = accel_P; // (mm/s^2) Acceleration K factor from Accel phase
588
+ dist = (f_s * tau) + (0 .5f * accel_P * sq (tau)); // (mm) Distance traveled for acceleration phase
589
+ accel_k = accel_P; // (mm/s^2) Acceleration K factor from Accel phase
587
590
}
588
591
else if (makeVector_idx >= N1 && makeVector_idx < (N1 + N2)) {
589
592
// Coasting phase
590
- dist = s_1e + F_P * (tau - N1 * (FTM_TS)); // (mm) Distance traveled for coasting phase
593
+ dist = s_1e + F_P * (tau - N1 * (FTM_TS)); // (mm) Distance traveled for coasting phase
591
594
// accel_k = 0.0f;
592
595
}
593
596
else {
594
597
// Deceleration phase
595
- const float tau_ = tau - (N1 + N2) * (FTM_TS); // (s) Time since start of decel phase
598
+ const float tau_ = tau - (N1 + N2) * (FTM_TS); // (s) Time since start of decel phase
596
599
dist = s_2e + F_P * tau_ + 0 .5f * decel_P * sq (tau_); // (mm) Distance traveled for deceleration phase
597
600
accel_k = decel_P; // (mm/s^2) Acceleration K factor from Decel phase
598
601
}
@@ -614,7 +617,7 @@ void FxdTiCtrl::makeVector() {
614
617
}
615
618
else {
616
619
ed[makeVector_batchIdx] = new_raw_z1;
617
- // Alternatively: coordArray_e [makeVector_batchIdx] = e_startDist + extrusion / (N1 + N2 + N3);
620
+ // Alternatively: ed [makeVector_batchIdx] = e_startPosn + (e_Ratio * dist) / (N1 + N2 + N3);
618
621
}
619
622
#endif
620
623
0 commit comments