Embedded Systems Design
![]() |
Subscribe to Dr. LaMeres' YouTube channel to get access to the most recent textbook videos plus other online instructional content he has created. Dr. LaMeres’ YouTube channel focuses on introductory-level instruction of digital logic circuits, embedded systems, basic programming, and robotics. This channel is for: (1) engineering instructors looking for material to augment their live teaching; (2) K-12 teachers wishing to implement engineering modules in their classrooms; (3) makers that need an introduction to basic electrical engineering; or (4) anyone just curious about how computers work. (1st Edition Evaluation Copy) |
Textbook Videos
Chapter 1: Introduction to Embedded Systems
Chapter 2: Digital Logic Basics
- Converting to Decimal (12 min)
- Converting between powers-of-2 Bases (3 min)
- Volatile Memory Overview (DRAM) (17 min)
Chapter 3 - Computer Systems
3.1: Computer Overview (11 min)
3.2: Computer Hardware (17 min)
3.3: Computer Software (22 min)
Chapter 4: The MSP430
4.1: MSP430 Hardware Overview (23 min)
4.2: MSP430 Software Overview (13 min)
4.3: MSP430FR2355 LaunchPad Development Kit
- LaunchPad Hardware Overview (7 min)
- Getting the Right Documentation (10 min)
Chapter 5: Getting Started Programming the MSP430 in Assembly
5.1: The Anatomy of an Assembly Program File (22 min)
5.2: Your First Program – Blinking LED
- Installing Code Composer Studio (9 min)
- Writing, Assembling, and Testing your Program (18 min)
5.3: Using the CCS Debugger (13 min)
Chapter 6: Data Movement Instructions
6.1: The MOV Instruction with Register Mode (RN) Addressing (13 min)
6.2: The MOV Instruction with Immediate Mode (#) Addressing (10 min)
6.3: The MOV Instruction with Absolute Mode (&) Addressing (14 min)
6.4: The MOV Instruction with Symbolic Mode Addressing (10 min)
6.5: The MOV Instruction with Indirect REGISTER Mode (@RN) Addressing (16 min)
6.6: The MOV Instruction with Indirect Autoincrement Mode (@RN+) Addressing (16 min)
6.7: The MOV Instruction with Indexed Mode (X(RN)) Addressing (10 min)
Chapter 7: Data Manipulation Instructions
7.1: Arithmetic Instructions
- Addition (ADD) (21 min)
- Addition w/ Carry (ADDC) (18 min)
- Subtraction (SUB) (16 min)
- Subtraction w/ Carry (SUBC) (21 min)
- Increment (INC, INCD) and Decrement (DEC, DECD) (12 min)
7.2: Logic Instructions (INV, AND, OR, XOR) + Bit Masking (26 min)
7.3: Bit Set (BIS) and Bit Clear (BIC) Instructions (9 min)
7.4: Test Instructions (BIT, CMP, TST) (15 min)
7.5: Rotate Operations (RLA, RRA, RLC, RRC) (19 min)
Chapter 8: Program Flow Instructions
8.1: Unconditional Jumps & Branches
- Jump (JMP) & Branch (BR) Overview (13 min)
- Jump (JMP) & Branch (BR) Example Program (1 min)
8.2: Conditional Jumps
- Carry-Based Jumps (JC, JNC) (14 min)
-Zero-Based Jump (JZ, JNZ) (10 min)
-Negative-Based Jumps (JN) (9 min)
-Overflow-Based Jump (JGE, JL) (8 min)
8.3: Implementing Common Programming Constructs in Assembly
-Implementing While() Loop Functionality (11 min)
-Implementing For() Loop Functionality (13 min)
-Implementing If/Else Functionality (10 min)
-Implementing Switch/Case Functionality in Assembly (12 min)
8.4: Flow Charts
- Flow Chart Overview (9 min)
- Creating an Assembly Program from a Flow Chart (10 min)
Chapter 9: Digital I/O
9.1 The MSP430 Digital I/O System
- MSP430FR2355 Digital I/O Peripheral Overview (20 min)
- Understanding the msp430.h Header File (9 min)
9.2 Digital Output Programming (11 min)
9.3 Digital Input Programming (19 min)
Chapter 10: The Stack and Subroutines
10.1 The STACK (18 min)
10.2 Subroutines (15 min)
Chapter 11: Introduction to Interrupts
11.1 The Concept of an Interrupt
- IRQ Concept, Flags, and Enable (19 min)
- Interrupt Vector Table (11 min)
- Interrupt Service Routines, the usage of the STACK, and Nested ISRs (11 min)
- The Developer's Responsibility when using IRQs (7 min)
- MSP430 Interrupts (13 min)
11.2 MSP430FR2355 Port Interrupts
- Port Interrupt Overview (16 min)
- Using a Port IRQ to Reading from a Switch (21 min)
- Impact of Changing Edge Sensitiviey when Reading from Switch (7 min)
Chapter 12: Introduction to Timers
12.1 Timer Overview
- Timer Concept & Calculating Time Between Events (13 min)
12.2 Timer Overflows on the MSP430FR2355
- Timer Overflow Concept (21 min)
- Timer Overflow Ex: Using ACLK (13 min)
- Timer Overflow Ex: Using ACLK w/ 12-bit Length (11 min)
- Timer Overflow Ex: Using SMCLK (12 min)
- Timer Overflow Ex: Using SMCLK wi Div-by-4 (13 min)
12.3 Timer Compares on the MSP430FR2355
- Timer Compare Overview (12 min)
- Timer Compare Example: Using CCR0 to Trigger Event (15 min)
12.4 Creating Pulse Width Modulated Signals Using Timer Compares
- PWM Overview and Example of Creating a 5% PWM using two Compares (22 min)
12.5 Timer Captures on the MSP430FR2355
- Timer Capture Overview and Example of SW Triggered Capture (19 min)
Chapter 13: Switching to the C Language
13.1 C Programming on the C MSP430
- C Programming Overview in CCS (15 min)
- While() Loops in C on the MSP430 (12 min)
- For() Loops in C on the MSP430 (9 min)
- If/Else Statements in C on the MSP430 (9 min)
- Switch/Case Statements in C on the MSP430 (12 min)
- Arithmetic Operations in C on the MSP430 (8 min)
- Bitwise Logic Operations in C on the MSP430 (16 min)
13.2 Digital I/O in C
- Digital Output Programming (LED1) (10 min)
- Digital Input Programming & Polling (SW1) (14 min)
13.3 Interrupts in C
- IRQ Overview & Port IRQ Example (SW1) (16 min)
13.4 Timers in C
- Timer Overflow using ACLK (17 min)
- Timer Overflow using ACLK + 12-bit Counter Length (13 min)
- Timer Overflow using SMCLK (13 min)
- Timer Overflow using SMCLK + Div-by-4 Prescalar (14 min)
- Timer Compares using CCR0 (18 min)
- Generating PWM Signals using Multiple Timer Compares (21 min)
- Timer Captures (SW triggered) (24 min)
Chapter 14: Serial Communications in C
14.1 Universal Asynchronous Receiver/ Transmitter (UART)
- Overview of Serial Communication Links (12 min)
- The UART Standard (20 min)
- Setting up the MSP430FR2355 UART Tx (16 min)
- Setting the MSP430FR2355 Baud Rate (17 min)
- Setting up Analog Discovery 2 (11 min)
- Example: Transmitting a Byte at 115200 Baud (23 min)
- Example: Transmitting a Byte at 9600 Baud (14 min)
- Example: Transmitting a Character to a Terminal (20 min)
- Example: Transmitting a String to the Terminal using Delay (17 min)
- Example: Transmitting a String to the Terminal using IRQs (29 min)
- Setting up the MSP430FR2355 UART Rx (8 min)
- Example: Receiving Characters from a Terminal (24 min)
14.2 Serial Peripheral Interface (SPI)
-The SPI Protocol (17 min)
-Example: Sending a Byte as a SPI Master (24 min)
-Example: Sending a Packet as a SPI Master) (26 min)
-Example: Sending a Packet w/ STE as a SPI Master (16 min)
-Example: Receiving a Byte as a SPI Master (28 min)
-SPI Slave Operation (4 min)
14.3 Inter-Integrated Circuit (I2C) Bus
- I2C Overview & Why the Resistors? (11 min)
- I2C Basic Message Structure (14 min)
- I2C Addressing Individual Slave Registers (19 min)
- Configuring the MSP430FR2355 as an I2C Master (15 min)
- Overview of the Adafruit Real-Time-Clock (13 min)
- Making a Simple Probe to Measure I2C with the AD2 (9 min)
- Example: Writing a Byte to an I2C Slave (19 min)
- Example: Writing a Register Address and Three Bytes to an I2C Slave (19 min)
- Example: Reading a Byte from an I2C Slave (15 min)
- Example: Reading a Byte from a Specific I2C Slave Register Address (29 min)
- Configuring the MSP430FR2355 as an I2C Slave (7 min)
Chapter 15: Analog to Digital Converter
15.1 Analog to Digital Converter Overview (15 min)
15.2 ADC Operation on the MSP430FR2355
- MSP430FR2355 ADC Overview and Configuration (17 min)
- Example: Reading an Analog Voltage and Polling ADCIFG0 (17 min)
- Example: Reading an Analog Voltage using ADCIFG0 IRQ (22 min)
- Example: Reading an Analog Voltage using ADCIFG0 IRQ and LPM (13 min)
Textbook PowerPoint Slides
Chapter 1: Introduction to Embedded Systems
Chapter 2: Digital Logic Basics
Chapter 3: Computer Systems
Chapter 4: The MSP430
Chapter 5: Getting Started Programming the MSP430 in Assembly
Chapter 6: Data Movement Instructions
Chapter 7: Data Manipulation Instructions
Chapter 8: Program Flow Instructions
Chapter 9: Digital I/O
Chapter 10: The Stack and Subroutines
Chapter 11: Interrupts
Chapter 12: Timers
Chapter 13: Switching to the C Programming Language
Chapter 14.1: The UART Peripheral
Chapter 14.2: The SPI Peripheral
Chapter 14.3: The I2C Peripheral
Chapter 15: Analog to Digital Converter