diff --git a/src/config/config.h b/src/config/config.h index 73aa8ae..0239c4d 100644 --- a/src/config/config.h +++ b/src/config/config.h @@ -44,6 +44,9 @@ static constexpr uint16_t minStepRate = 120; /// Size for the motion planner block buffer size static constexpr uint8_t blockBufferSize = 2; +/// Step timer frequency divider (F = F_CPU / divider) +static constexpr uint8_t stepTimerFrequencyDivider = 8; + /// Idler configuration static constexpr AxisConfig idler = { .dirOn = true, diff --git a/src/modules/pulse_gen.cpp b/src/modules/pulse_gen.cpp index a06400d..0c09573 100644 --- a/src/modules/pulse_gen.cpp +++ b/src/modules/pulse_gen.cpp @@ -104,7 +104,7 @@ bool PulseGen::PlanMoveTo(pos_t target, steps_t feed_rate) { // Acceleration of the segment, in steps/sec^2 block->acceleration = acceleration; - block->acceleration_rate = block->acceleration * (rate_t)((float)F_CPU / (F_CPU / speed_table::cpuFrequencyDivider)); + block->acceleration_rate = block->acceleration * (rate_t)((float)F_CPU / (F_CPU / config::stepTimerFrequencyDivider)); // Perform the trapezoid calculations CalculateTrapezoid(block, max_jerk, max_jerk); diff --git a/src/modules/speed_table.h b/src/modules/speed_table.h index 6c88cf1..028baaa 100644 --- a/src/modules/speed_table.h +++ b/src/modules/speed_table.h @@ -12,8 +12,7 @@ namespace speed_table { typedef uint16_t st_timer_t; /// CPU timer frequency divider required for the speed tables -static constexpr uint8_t cpuFrequencyDivider = 8; -static_assert(F_CPU / cpuFrequencyDivider == 2000000, +static_assert(F_CPU / config::stepTimerFrequencyDivider == 2000000, "speed tables not compatible for the requested frequency"); /// Lookup table for rates equal or higher than 8*256 diff --git a/tests/unit/modules/speed_table/test_speed_table.cpp b/tests/unit/modules/speed_table/test_speed_table.cpp index 1531849..f0223e8 100644 --- a/tests/unit/modules/speed_table/test_speed_table.cpp +++ b/tests/unit/modules/speed_table/test_speed_table.cpp @@ -6,7 +6,7 @@ using Catch::Matchers::Equals; using namespace modules::speed_table; // The following reference values are calculated for 2MHz timer -static_assert(F_CPU / cpuFrequencyDivider == 2000000, +static_assert(F_CPU / config::stepTimerFrequencyDivider == 2000000, "speed tables not compatible for the requested frequency"); static const st_timer_t reference[][3] = {