Zach Christensen
Mimic
Stage 1Sessions 14 to 23

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.

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  1. 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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.