Textbook Cover

Subscribe

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.

 


Textbook Videos

Chapter 1: Introduction to Embedded Systems

1.1: What is an Embedded System  (16 min)

Chapter 2: Digital Logic Basics

2.1: Number Systems
2.1.1: Positional Number Systems
- Formation and Terminology (24 min)
2.1.2: Base Conversions
- Converting from Decimal (14 min)
- Converting to Decimal (12 min)
- Converting between powers-of-2 Bases (3 min)
2.1.3: Binary Arithmetic
Binary Arithmetic (13 min)
2.1.4: Unsigned and Signed Numbers
- Unsigned Numbers (6 min)
- Signed Numbers (21 min)
- Two's Complement Arithmetic (11 min)
2.2: Combinational Logic
2.2.1: Basic Gates
- Functional Description of Digital Logic Behavior (13 min)
- BUF, INV, AND, NAND, OR, NOR Gates (11 min)
- XOR, XNOR Gates (8 min)
2.2.2: Boolean Algebra
- Introduction & Axioms (14 min)
- Single-Variable Theorems (20 min)
- Multiple-Variable Theorems (22 min)
- Functionally Complete Sets (6 min)
2.2.3: Combinational Logic Synthesis
- SOP & Minterms (15 min)
- Minterm Lists (5 min)
- SOP Design Example (8 min)
- POS & Maxterms (11 min)
- Maxterm Lists (3 min)
- POS Design Example (10 min)
- Algebraic Minimization (6 min)
- Karnaugh Map Formation (19 min)
- Minimized SOP's using K-maps (21 min)
- Minimized POS's using K-maps (17 min)
- Minimal Sums (8 min)
- Don't Cares (7 min)
- XOR/XNOR Patterns in K-maps (5 min)
- Hazard Overview (15 min)
2.2.4: MSI Logic
Decoders (12 min)
Encoders (10 min)
Multiplexers (13 min)
Demultiplexers (10 min)
Adders (Ripple Carry Adder)  (28 min)
Adders (RCA Timing) (8 min)
Adders (Carry Look Ahead Adders, CLA Timing) (22 min)
Subtractiors  (18 min)
Multipliers (23 min
Dividers (16 min)
2.3: Sequential Logic
2.3.1: Sequential Logic Storage Devices
Cross Coupled Inverter Pair & Metastability (20 min)
SR Latch (12 min)
S'R' Latch (9 min)
SR Latch w/ Enable (9 min)
D Latch (6 min)
D-flip-flop (14 min)
- Registers
Shift Registers (3 min)
2.3.2: Finite State Machine
FSM Introduction & Descripting FSM Behavior (20 min)
FSM Synthesis (29 min)
FSM Design Process Overview (6 min)
- Simple Control Unite
Example: 2-bit Binary Up Counter (17 min)
Example: 2-bit Binary Up/Down Counter (8 min)
2.4: Memory
Architecture & Terminology Overview (33 min)
Non-Volatile Memory Overview (33 min)
- Volatile Memory Overview (SRAM) (11 min)
Volatile Memory Overview (DRAM) (17 min)
- FRAM Overview

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.1MSP430 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.2Conditional 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.3Implementing 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.4Flow 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