Michael Nist
System Software Design MCU (2): CY8CPLC20 8-bit 32 KB Flash, 2 KB SRAM Bus Frequency: 24 MHz Memory requirements: Main Controller: 24 KB Flash, 2 KB SRAM Outlet Controller: 24 KB Flash, 2 KB SRAM Resources Used: Main Controller: 13 GPIO, PLC Outlet Controller: 5 GPIO, PLC
Timeslice Kernel - Tasks Start Task Key Task User Interface Task Transmit/Receive Task WaitForSlice
Start Task Initializes the system on startup and sets initial registers. Execution Time: 100 mS Period: Runs only on startup
Key Task Recognizes key presses on the push buttons and changes to the state of the user switches Performs switch de-bouncing Execution Time: <5 uS Period 20 mS (Sporadic)
UI Task Handles the user inputs Maintains the current state of the system Writes to the LCD Execution Time: 5 mS Period 100 mS
Transmit/Receive Task Handles the communication between controllers Receives power measurement calculations Transmits instructions to turn the appliance on/off Execution Time: 10 mS Period 1 Sec
WaitForSlice Task Fills time between slice periods
CPU Load L = 5uS/20mS + 5mS/100mS + 10mS/1S = 6.03%
Modules ModuleTaskPublic Functions and Data Main.cStart Task WaitForSlice UI Task CurrentPower PLC.cTX/RX TaskTogglePower() Button.cKey TaskButtonUp ButtonDown ButtonLeft ButtonRight ButtonOK SwitchEn
Data Flow Buttons LCD TX/RX Task Key Task UI Task ButtonUp ButtonDown ButtonLeft ButtonRight ButtonOK SwitchEn TogglePower() CurrentPower Hardware Powerline PLC.c Main.c Button.c
Kernel – Outlet Control Unit Start Task Key Task WaitForSlice Transmit/Receive Task Power Measurement Task Switch Task
Transmit/Receive Task Handles the communication between controllers Transmits power measurement calculations Receives instructions to turn the appliance on/off Execution Time: 10 mS Period 1 Sec
Power Measurement Task Acquires data from ADC sensing current Acquires data from ADC sensing voltage Performs calculations to determine power usage then stores the value Execution Time: 150 mS Period: 1 sec
Switch Task Activates or deactivates the relay to switch the outlet on/off if register set Execution Time: 10 uS Period 1 sec
CPU Load L = 5uS/20mS + 10mS/1S + 150mS/1S + 10mS/1S = 17.03%
Modules ModuleTaskPublic Functions and Data Main.cStart Task WaitForSlice PLC.cTX/RX TaskSendPower() Button.cKey TaskSwitchEn SwitchOverride Power.cPower Measurement TaskVrms Irms Power GetPower() Switch.cSwitch TaskTogglePower() GetState() PowerState
Data Flow Current ADC Voltage ADC Hardware Powerline Power Task Switch Task TX/RX Task Relay Key TaskSwitches SendPower() Vrms Irms Power SwitchOn SwitchOverride PowerState GetPower() TogglePower()GetState() PLC.c Power.c Button.c Switch.c