The Smart Joint
The same controller, moved off Arduino and onto bare-metal STM32, then given a bus to talk on. The claim at the end is a specific one: one binary, flashed twice, two joints behaving identically. That is what makes a four-joint arm an assembly job rather than a rewrite.
What this teaches me
- Done when
- Two joints on a CAN bus running identical firmware.
- Progress
- 0 of 10 sessions0%
Gate tag: v0.1-stage1-exit
Sessions 14 to 18
The chip
Off Arduino and onto bare-metal STM32: a real debugger, a clock tree you derived, and quadrature decoded in silicon.
- Not built yetSetup, no write-up
CubeIDE, and the shape of a generated project
Point at the file that runs before main(), the file that decides where code lives in memory, and the file holding the peripheral configuration.
- Not built yet
Blink, and the breakpoint that is the actual point
Halt a running processor, read a variable out of memory, and say why that is categorically different from a print statement.
- Not built yet
The clock tree, and why 180 MHz is not automatic
Derive a PLL configuration against its documented constraints, and state what the timers are counting at as distinct from their bus.
- Not built yet
Hardware quadrature: the encoder that costs no CPU
Explain what a timer in encoder mode does in silicon that a software ISR did, and prove the two agree by measuring the same constant twice.
- Not built yet
The control loop in C, on bare metal
Explain why a control loop belongs in a timer interrupt, and demonstrate that gains transfer unchanged across a change of rate and of chip.
Session 19
Time, shared
An RTOS, and the capture that proves a slow task cannot damage a fast one.
- Not built yet
FreeRTOS: two tasks, and the demonstration that justifies it
Explain what pre-emption buys over a superloop, produce the capture that proves it, and defend one of four ways to move data between tasks.
Sessions 20 to 23
The bus
CAN from the bit timing up: a protocol designed on paper, fault handling for a silent host, and one binary flashed twice.
- Not built yet
CAN, physically: two nodes and a counter
Derive a CAN bit timing from a bus clock rather than copying it, explain the sample point, and diagnose a silent bus from a meter reading.
- Not built yet
Designing the joint protocol: paper before keyboard
Justify the width of every field in a protocol you designed, and explain why a message type is not the same number as its identifier.
- Not built yet
Implementing it, and the silent-host problem
Explain why holding position is bounded where continuing a velocity is not, and turn that into a timeout derived from a command rate.
- Not built yet
Flash it twice
Explain why one binary flashed twice is a stronger claim than two binaries that work, and prove it byte for byte.