Embedded Programming
B. Furman09MAY2011
Learning Objectives Distinguish between procedural programming and
embedded programming Explain the Events and Services embedded programming
framework Explain what an Event is Explain what a Service is
Explain the key rule and its two corollaries Describe how an event checking routine works for
Discrete quantities Analog quantities
Develop code for: an event checking routine a service an event driven system
Mechatronics Concept Map
Controller(Hardware & Software)
System toControl
Sensor
SignalConditioning
PowerInterface
Actuator
UserInterface
PowerSource
BJ Furman 22JAN11
ME 106ME 154ME 157ME 195
ME 120ME 297A
ME 106ME 120
ME 106ME 190ME 187
ME 110ME 136ME 154ME 157
ME 182ME 189ME 195
ME 106ME 120
ME 106
INTEGRATION
Procedural vs. Embedded Programming Procedural
ME 30/CmpE 46 Computation and analysis
programs Mostly sequential
Start … End Known inputs and outputs
Program is in control Predictable operation and
timing
Embedded ME 106 Inputs and outputs can
occur at any time, in any order and are not predictable
Inputs can come from multiple sources
Sensors, user inputs, or internal (timer, ADC, etc.)
May handle simultaneous inputs and outputs
Program never ends
Event Driven Program Structure Programming task divides into:
Checking for events Servicing events when they occur
Event A detectable change or transition in something of
interest Button press (before: not pressed, after: pressed) ADC complete flag bit set
Service An action taken in response to an event
Requirements for Events and Services
The occurrence of events must be checked for continuously and often
Services must execute quickly and must be non-blocking Ex. Determine if a switch has closed
Blocking code: while(digitalRead(pin) == HIGH);
Event Checkers for Discrete Events
Ex. Check that a switch has closed Pseudocode
IF switch is closed AND switch was open last time, THEN SwitchClosed event has occurred
ELSE SwitchClosed event has not occurred
Need to keep track of the state of the switch (i.e., maintain its history) Use a state variable Will need to be declared as a static local variable in the
function that checks for the event Need to retain the value between successive calls to the event
checking function
Code to Check for Discrete Events
Events involving an analog quantity
http://www.soe.ucsc.edu/classes/cmpe118/Winter08/LectureNotes/EventDrivenProg.pdf
A single-valued threshold will likely result in “chatter” when the quantify of interest is near the threshold
Event Checkers for Events Involving Analog Quantities
Filtering the signal may help Add hysteresis in the event checker
Make the criteria for when the event occurs a variable instead of a fixed value Initially threshold is set to an upper value As soon as the signal crosses the threshold, the threshold is
dropped to a lower value Pseudocode:
Set threshold to high value IF var is greater than or equal to the threshold, THEN
Event has happened Set threshold to lower value
ELSE Event has not happened
Event Detection with Hysteresis
http://www.soe.ucsc.edu/classes/cmpe118/Winter08/LectureNotes/EventDrivenProg.pdf
Code to Check for Events With Analog Quantities
Main body of Events & Services Code