.. include:: Firmware: Not So Well Anymore ============================= .. image:: fsm-bullshit.svg :scale: 80% Problem: ISRs Not Simple ------------------------ * Three ISRs * Timer tick * Sensor burning * Operator button * Initially (:doc:`here <../bare-metal-initial/index>`), each transition involved at most three GPIO operations * Spinlock as bug fix (:doc:`here <../bare-metal-initial/index>`) * |longrightarrow| Possibly longer execution time but correct * CAN notifications (:doc:`here <../bare-metal-can/index>`) hasn't improved the situation * Controller busy sending |longrightarrow| complicated queueing mechanism * Again interrupt driven