Software Design

Indicate what high level functions are implemented in software. Discuss how you implemented the functions. For example:

  1. 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.

  2. Real Time Issues:
    1. Our accelerometers had to wait for ADC values to update, which took a non trivial amount of time. 
    2. The LCD display takes a fairly large amount of time to update. This required many software delays. 
  3. Busy Flag:
    1. 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.
  4. Using Timers & Interrupts to Implement Tasking:
    1. 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.
  5. Distributing C and Assembly Programming:
    1. 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.
  6. Here is a high level flow chart of your software