D.R.racer
2f5dff6c5b
Introduce short namespace aliases
...
especially for modules
2021-08-04 11:03:56 +02:00
D.R.racer
ef96d998a3
Link top level error reporting to TMC2130 error flags
2021-08-02 07:45:45 +02:00
D.R.racer
a8147be803
Fix unit tests + rebase onto main + extract TMC parameters into config
2021-07-29 10:01:33 +02:00
D.R.racer
3d1880c006
Make tests compile
...
Introduces a nasty hack to forcefully write into the constexpr SPI descriptor's registers
(which is the correct way in ASM, but kind of cumbersome in C++ now)
2021-07-29 10:01:33 +02:00
DRracer
dc36afb82c
Merge branch 'main' into motion_units
2021-07-26 09:35:13 +02:00
D.R.racer
6af65bc4c8
Rename ISR -> Isr to avoid clash with AVR libc ISR #define
2021-07-26 09:34:24 +02:00
Yuri D'Elia
888cdf7cd5
Introduce compile-time axis unit type checks and conversions
...
Introduces:
- config::Unit: base class for physical quantities
- motion::AxisUnit: type-checked steps type
"config/unit.h" defines basic physical quantities, which are not
normally used elsewhere besides config.h.
"modules/axisunit.h" extends the modules::motion namespace with
Axis-aware units, with one type per axis per unit.
P_pos_t defines step positions for the pulley, I_pos_t for the idler,
etc. These are defined through the literar operators which are
similarly named and automatically convert a physical quantity to an
AxisUnit at compile time:
P_pos_t pulley_pos = 10.0_P_mm;
Besides type-checking, AxisUnit are otherwise identical to raw step
counts and are intended to be used along with the updated Motion API.
PlanMove/PlanMoveTo has been extended to support moves using these units
or physical quantities. Again, conversion is performed at compile time.
2021-07-25 16:39:54 +02:00
Yuri D'Elia
5e04d4ccaf
Add getters/setters for Jerk in Motion/PulseGen
...
This allows us to make tests that expect jerk to be the same across two
axes, even if they're statically configured differently.
2021-07-25 01:24:40 +02:00
D.R.racer
f62cb99b13
Fix TMC2130 stub
...
so that motion unit tests build and run
2021-07-14 08:38:10 +02:00
Yuri D'Elia
f28567a051
Motion tests: improve comments
2021-07-13 20:21:28 +02:00
Yuri D'Elia
324fb92fd5
Motion: implement timer multiplexing
2021-07-13 19:21:13 +02:00
Yuri D'Elia
d0581bf494
Motion: Add more methods and tests
...
- Add SetPosition/CurPosition (not only) for testing
- Implement some real tests
2021-07-13 17:43:50 +02:00
Yuri D'Elia
4fd22f0656
Motion: add initial test infrastructure and stubs
2021-07-13 16:16:56 +02:00
Yuri D'Elia
18ced44341
Merge remote-tracking branch 'upstream/main' into motion_wip
2021-07-13 15:31:31 +02:00
Yuri D'Elia
16e7f62aee
PulseGen: introduce CurPosition() for testing
...
CurPosition() returns the live axis position, which in this
implementation is inherently expensive to compute.
This shouldn't be required for the MMU, but it /will/ come in handy to
check for the axis position/s in Motion tests.
2021-07-13 00:48:44 +02:00
D.R.racer
eed1c3f07a
Fix buttons unit tests after ADC update
2021-07-12 18:01:57 +02:00
Yuri D'Elia
a5a91cbaa8
tests: remove relative cmake paths in pulse_gen/speed_table
2021-07-12 11:11:49 +02:00
Yuri D'Elia
787c73ecff
Merge remote-tracking branch 'upstream/main' into motion_wip
2021-07-12 10:25:06 +02:00
Alan Dragomirecký
cf5b1c3955
Do not use hard-to-read relative paths in CMake
2021-07-12 09:09:21 +02:00
Yuri D'Elia
9b77623be1
PulseGen: ensure Abort calculates the current remainder correctly
...
Instead of stepping halfway, step ~1/3 of the way through.
This ensures we can check if the steps performed is correct due to the
internal step subtraction.
2021-07-11 22:19:44 +02:00
Yuri D'Elia
9e935f6a07
Comment Typo
2021-07-11 22:17:04 +02:00
Yuri D'Elia
066aab7adc
Move cpuFrequencyDivider to config::stepTimerFrequencyDivider
2021-07-11 21:17:08 +02:00
Yuri D'Elia
0c47d8f0d1
PulseGen: add comprehensive tests (no acceleration yet)
2021-07-11 20:52:27 +02:00
Yuri D'Elia
5250cfd4fe
Implement the SHR16::SetTMCDir stub for testing
2021-07-11 20:33:59 +02:00
Yuri D'Elia
1ff9b81630
Rename PulseGen::Move to PlanMoveTo
...
Make Motion and PulseGen intentionally very similar.
2021-07-07 16:59:40 +02:00
Yuri D'Elia
16cf02726b
test_speed_table: improve static assertion
...
Test against the resulting timer speed, not against the CPU clock
2021-07-07 16:59:40 +02:00
Yuri D'Elia
d87db1ff76
Revised WIP for the Motion API
...
- Remove the combined PlanMove(a,b,c,rate) call. If we allow the units
of the various motors to be changed at compile time, the unit of
rate can vary between axes.
- Build PlanMove on top of the absolute PlanMoveTo.
- Add required stubs for TMC2130.
- Allow each axis mode to be set independently, since we have this
feature for free anyway.
- Rework internals to use PulseGen data types and structs.
2021-07-07 16:59:39 +02:00
Yuri D'Elia
ed04bd02e2
PulseGen/speed_tables: cleanup constants
2021-07-07 16:59:04 +02:00
Yuri D'Elia
006dfd4abc
PulseGen: remove all floating point calculations
...
Work in steps, steps/s, steps/s2 directly.
2021-07-07 16:59:04 +02:00
Yuri D'Elia
cf5be5aade
PulseGen: initial version of the ramp/pulse generator
2021-07-07 16:59:04 +02:00
Yuri D'Elia
de88ed4c6b
Add initial Axis configuration static structs
2021-07-07 16:59:04 +02:00
Yuri D'Elia
531f60ed27
Add modules::speed_table for acceleration lookup tables
2021-07-07 16:59:04 +02:00
D.R.racer
b484eeacb6
Start using config.h
...
Added some constexpr vars for buttons, finda, fsensor and
applied them in the FW and unit tests accordingly.
2021-07-05 18:07:54 +02:00
Yuri D'Elia
3ccfc3adfb
GPIO: correctly stub known ports
...
- Use the correct port name in the #define
- Fully qualify all references
2021-07-05 15:20:11 +02:00
Yuri D'Elia
7c7aa95445
Mock GPIO when building tests
...
Add some conditional statements in gpio.h so that we can mock the GPIO
registers when building tests.
2021-07-05 15:20:11 +02:00
D.R.racer
ce20f0b001
Greatly improve unload filament unit test
...
+ relevant changes for other unit tests -> prepare for improving
of the other unit tests as well
2021-06-30 07:39:31 +02:00
D.R.racer
ede475c5a6
Introduce Timebase module, refactor timing code + unit tests
2021-06-21 10:22:17 +02:00
D.R.racer
85910497f7
Unify buttons' API with other modules
...
- accepts millis() instead of doing the timing internally (which has
been a temporary solution just for the tests until now)
2021-06-21 10:22:17 +02:00
D.R.racer
b8f6bc9a4e
Tune Feed to FINDA state machine and its unit test
...
so that it works as expected
Still, there is a task of resetting all of the state machines just for
the next unit test to be run.
2021-06-21 10:22:17 +02:00
D.R.racer
f0a042c1b6
Add unit tests for Feed to FINDA state machine
...
+ improve infrastructure
2021-06-21 10:22:17 +02:00
D.R.racer
925201d77a
Basic unit test structure for the logic layer
...
It compiles the Cut Filament unit test with all the necessary components.
Still, the unit test does nothing.
2021-06-21 10:22:17 +02:00
D.R.racer
019f74d6f2
Add debouncing for FINDA
2021-06-08 07:00:07 +02:00
D.R.racer
bd335ec30d
Unit test for LEDs interface + fixes
2021-05-26 11:39:24 +02:00
D.R.racer
c377674aee
Prepare unit tests for LEDs
2021-05-25 12:33:50 +02:00
D.R.racer
9226230fd5
Reformat sources to fit the new namespace formatting rules
2021-05-25 12:24:19 +02:00
D.R.racer
fce2195558
Interface module for driving LEDs
...
+ start shaping up main.cpp
+ make the usage of namespaces and class names more consistent throughout the whole project
+ refactor related unit tests accordingly
2021-05-25 11:00:30 +02:00
D.R.racer
7611b98830
Add more unit tests and optimize (saved 1 byte per button on the AVR)
2021-05-25 10:02:02 +02:00
D.R.racer
ba8eacfe33
Buttons module implementation
...
A module representing a model of the 3 buttons
Includes a unit test project (empty at this stage)
2021-05-25 10:02:02 +02:00
D.R.racer
fe0ac4f9f9
More unit tests for decoding of response messages
...
+ related changes in code
2021-05-18 08:18:11 +02:00
D.R.racer
30fbf6d870
Unit tests for decoding requests and responses
...
+errors on requests
2021-05-18 08:18:11 +02:00