This part is for members
Membership opens soon. Leave your email and we'll tell you the day it does. Founding members get the launch price.
Keep watching the free partsFour gates 2: interrupts on, then the encoder
Gate 1 opened at 507 ms. At 512 ms BspInit switches on the 1 ms interrupt (TIM13) and the current ADC interrupt, but not the position timer TIM5. The current interrupt fires every 50 µs; its entry, CURRENT_LOOP_IRQ_TASK, checks gates 2 and 3 and skips the current loop while they are shut. On its very first run it does one more job: it starts TIM5, so both loops count the same 240 MHz clock with a fixed phase (two runners off one starting gun). Gate 2, hardware_self_test_status: the position interrupt checks the self-test before it reads the encoder reply, so the check only sees the encoder on tick 3 (512.25 ms), like a letter posted Monday, delivered Tuesday, read Wednesday. Encoder unplugged: it gives up after 100 ms, sets an error and retries every 100 ms; plugged in at 700 ms: the gate opens, but the error stays and the motor never moves. All from real runs of the board build.