LED CUBE Preliminary System Software Design Fernando J. Garcia May
Overview Microcontroller Kernel Tasks and priorities Tasks Descriptions Priorities Period Execution time Total CPU load Module and library Flow Diagrams
Microcontroller MC9S12DP512 Bus frequency of 24MHz Memory Requirements ROM ~13K bytes RAM ~4K bytes
Kernel MicroC/OS-II Real-time preemptive multitasking kernel Priority Based 1 ms tick period 1 ISRs Intertask communication Mutexes Semaphores
Tasks and Priorities TaskPriority Start Task4 PWM Task5 Transmit Task6 Key Task7 Computations Task8 User Interface Task9
Start Task Description: Initializes the system Creates other tasks Pulses cube lights Priority #4 Period: Once (startup) Execution time ~2s
PWM Task Description: Resets timer required by LED drivers for PWM Interrupt based Priority #5 Period: 166μs Execution time(max): 1.6μs CPU Load: 0.9%
Transmit Task Description: Transmit data over SPI (Serial Peripheral Interface) Priority #6 Period Sporadic 16ms Execution time(max): 98μs CPU Load: %
Key Task Description: Periodically Scans keypad Priority #7 Period: 10ms Execution time(max): 10μs CPU Load: 0.1%
Computations Task Description: Calculates data to be transmitted to the LED drivers Priority #8 Period: ~100ms (Sporadic) Execution time(max): ~10ms CPU load: ~10%
User Interface Task Description: Updates LCD, controls program states, and functionality of button presses Priority: 9 Period: 100ms(Sporadic) Execution Time(max): ~10ms CPU load: ~10%
Total CPU Load L_max = 21.62% Average= 15%
Module/Library Description 1/2 ModuleTasksPublic ResourcesSource KeypadKeyTaskvoid KeyInit(void) void KeyPend(void) Todd Morton Minimally modified LCDvoid LcdInit(void); void LcdClrDisp(void); void LcdClrLine(INT8U line); void LcdDispChar(INT8U c); void LcdDispByte(INT8U *b); void LcdDispStrg(INT8U *s); void LcdMoveCursor(INT8U row, INT8U col); void LcdDispDecByte(INT8U *b, INT8U lz); void LcdDispTime(INT8U hrs, INT8U mins, INT8U secs); void LcdCursor(INT8U on, INT8U blink); void LcdBSpace(void); void LcdFSpace(void); Andrew Pace, Todd Morton SPITransmit Taskvoid DS3234SpiInit(void) INT8U RTCXfr(INT8U wdata) Todd Morton Modified Based on SPI examples
Module/Library Description 2/2 ModuleTasksPublic ResourcesSource TLC5940_Lib Start Task Transmit Task void TLC5940Init(void) void TLC5940clockDC(void) void TLC5940Clear(void) void TLC5940PWMClr(void) Original MainUI TaskOriginal
Main Data Flow Diagram 1/3
KeyTask Flow Diagram 2/3
Programming Flow Diagram 3/3 TLC5940 Initialization TLC5940 LED control