As part of the module Embedded Systems, our team of 4 was tasked with writing
real-time firmware for precise control of a brushless motor.
The firmware used interrupts to respond to commands given over a serial port. It also used threading and ran a bitcoin encryption task at low priority to demonstrate how much CPU time remained after executing motor control tasks.
The motor spun for a defined number of roations and stop without overshooting. It also spun at a defined angular velocity. Considerations included;