Software Design
Indicate what high level functions are implemented in software. Discuss how you implemented the functions. For example:
- Software Timer:
Since our board included an already highly configurable timer system, we implemented our software timer using the M3 processor, instead of developing a timer on the hardware.
- Real Time Issues:
- Our accelerometers had to wait for ADC values to update, which took a non trivial amount of time.
- The LCD display takes a fairly large amount of time to update. This required many software delays.
- Busy Flag:
- The radio had to wait on a busy flag, which indicated the system was executing a previous instruction. The Clear Screen function created a delay of about a second.
- Using Timers & Interrupts to Implement Tasking:
- We had a multi-threaded OS installed on our device; allowing us to run many devices “simultaneously” under the command of the OS task controller. Interrupts were used for time critical information or user input.
- Distributing C and Assembly Programming:
- We used C for everything. Our LCD, accelerometer, gyroscope, radio, multithreading, M3, M0/SmartFusion, drivers, everything and anything was written in C. We preferred not to use assembly.
- Here is a high level flow chart of your software
