Course Highlights
  • Event driven programming paradigm
  • Flat and hierarchical state machines (Simple FSMs and H-FSMs)
  • UML state machine semantics and state chart drawing
  • Converting UML statecharts into executable C/C++ code
  • Action objects design approach
  • Different state machine implementation strategies
  • Nested switch implementation of state machines
  • State table approach to implementing the state machines
  • State-Handler approach to implementing the state machines
  • Usage of function pointers in 'C'
  • Hands-on projects using simple FSM and HSMs
  • Step by step code development
  • Graphically modeling event-driven embedded application using UML statecharts modeler tools
  • Working with QP™ embedded real-time framework and QM™ tool of Quantum Leaps, LLC to draw and implement the HSMs
Curriculum

10 Topics
About the instructor
Important Note
Course Repository and Slides
Introduction to Finite State Machine
Mealy and Moore machine
Mealy and Moore State Transition Table
Exercise-0001 LED control Mealy machine example
Exercise-001 LED control Mealy machine implementation part 1
Exercise-001 LED control Mealy machine implementation part 2
Exercise-002 LED control Moore machine implementation

13 Topics
Exercise-003 Productivity Timer demo
Astah UML download
UML Simple and Composite states
UML state machine internal state activities(entry/exit/do)
UML state machine types of Transitions
Events and Signals
Exercise-003 States and Initial Psuedostates
Exercise-003 Defining states Entry and Exit actions
Exercise-003 Drawing state transitions
Exercise-003 Implementing TIME_SET state
Exercise-003 Implementing PAUSE state
Exercise-003 Implementing STAT state
Installing Microsoft VS Code and PlatformIO extension

4 Topics
Exercise-003 Create new project
Exercise-003 Data structure explanation
Exercise-003 Defining initial transition function
Different approach to implement state machine

13 Topics
Exercise-003 Nested switch implementation of an FSM part 1
Exercise-003 Nested switch implementation of an FSM part 2
Exercise-003 Hardware connections
Exercise-003 Implementing event producer code
Exercise-003 Dispatching time tick event
Button bouncing explanation
Exercise-003 Button software de-bouncing implementation
Adding arduino Library to project in platformIO
Exercise-003 Implementing LCD functions Part 1
Exercise-003 Implementing LCD functions Part 2
Exercise-003 Helper function implementation
Exercise-003 Implementing initial transition actions
Exercise-003 Testing on hardware

2 Topics
Function pointers in C
Passing function pointers as function arguments

1 Topic
Exercise-004 Implementation using state handler approach

5 Topics
Exercise-004 State table approach for implementation of an FSM part-1
Exercise-004 State table approach for implementation of an FSM part-2
2D arrays in C
Exercise-004 State table approach for implementation of an FSM part-3
Exercise-004 State table approach for implementation of an FSM part-4

4 Topics
Hierarchical State Machines(HSMs)
Run-to-completion and QP™ framework
Download QP™ Nano Arduino library
HSM transition execution sequence testing

9 Topics
Exercise-006 Test HSM transition execution sequence on Arduino
Adding files in QM tool
Adding codes to files using QM tool
Adding a class attribute
Adding class operation
Adding assertion failure callback
QHSM_INIT() and QHSM_DISPATCH() APIs
Exercise-006 Testing
Exercise-006 Testing History state

23 Topics
Exercise-007 Clock Alarm Introduction
Exercise-007 Clock Alarm demo
Exercise-007 States Signals and Data structure used
Exercise-007 Drawing an HSM
Exercise-007 Adding main application object and constructor
Atmega328p Timer peripheral explanation
Atmega328p Timer registers and setup code
Exercise-007 Adding class operations
Exercise-007 Defining initial transition actions
Exercise-007 Coding for the TICKING state
Exercise-007 Adding free operations
Exercise-007 Reading curr_time through class operation
Exercise-007 Handling TICK event in TICKING state and testing
Exercise-007 Drawing CLOCK_SETTING state
Exercise-007 Implementing CLOCK_SETTING state part-1
Exercise-007 Implementing CLOCK_SETTING state part-2
Exercise-007 Implementing CLOCK_SETTING state part-3
Exercise-007 Implementing CLOCK_SETTING state part-4
Feedback
Exercise-007 Updating real time
Exercise-007 ALARM_SETTING state
Exercise-007 Implementing ALARM_SETTING state
Exercise-007 Implementing ALARM_NOTIFY state

13 Topics
Active Objects
Orthogonal state pattern
Exercise-008:Implementation part 1
Exercise-008:Implementation part 2
Exercise-008:Implementation part 3
Exercise-008:Implementation part 4
Exercise-008:Implementation part 5
Feedback
Exercise-008:Implementation part 6
Exercise-008:Implementation part 7
Exercise-008:Implementation part 8
Exercise-008:Implementation part 9
BONUS LECTURE

  Write a Review

Embedded System Design using UML State Machines

Go to Paid Course