We used a processor timer because of the built-in interrupt capabilities. We also already had the framework in place for initializing the timer and dealing with its interrupt.
The software loops through scaling the nunchuk data and writing the result to the digital-to-analog converters. The data is only changed on the 10 Hz interrupt that is generated by the timer. The loop is implemented in C along with the scaling function. Everything else is in assembly including the initialization code, interrupt handling and device input and output.
Software Flow Diagram

University of Michigan
College of Engineering
EECS 373, Fall 2009
Trevor Mudge
Matthew Smith