Tasks

Using 7 tasks

  • 1 task to run the menu screen
  • 1 task to read song information (metadata) from mp3 file
  • 1 task to send mp3 to decoder (play song)
  • 1 task to control volume (read from ADC)
  • 1 task to send data to LCD screen (through Uart)
  • 1 task to handle button interface (GPIO)
  • 1 task to monitor CPU usage
  • Drivers

  • SPI for interfacing audio decoder
  • Uart for interfacing LCD screen
  • ADC for volume from POT
  • GPIO for button interface
  • library for interfacing audio codec
  • Synchronization

    Binary Semaphores

  • 1 to signal song metadata read
  • 1 to display song info
  • 1 to initiate song playback
  • 1 to begin volume control (read from ADC)
  • 1 to initiate user input
  • Mutex

  • 1 lock for screen data
  • 1 lock for volume