Version 6

    It’s NOT too late to sign up! | This is a work at your own pace class.

    An Introduction to Microcontrollers and the C Programming Language

    Register for the Class Now!


    Welcome to Valparaiso University’s next online class, Introduction to Microcontrollers and the C Programming Language.  The course will use the same mixed-mode format we use in our lecture-laboratories at Valparaiso University.  An emphasis is placed on enabling students to develop their skills by continually practicing with the tools real developers use every day.  A few short videos will kick off each of the sections followed by the step-by-step instructions to get you up and running.  And, if you have any questions along the way, our embedded system’s team will be here to help.  That’s what we’re for – to make you successful.


    Benefits of Class

      The course is laboratory based.  Almost every lecture and section of the course leads directly to a hands-on laboratory assignment.  The more practice you get using the “real world” Texas Instruments hardware and software the more proficient you will be.

      The course does not waste your time.  From the very beginning, we jump right in to your first laboratory assignment – Let’s Get Started.

      The course is modular in nature.  Are you new to the world of microcontrollers?  Great!  Start at the beginning, and we’ll teach you everything you need to know.  Do you have some background in microcontrollers but want to learn more?  Fantastic!  You can pick and choose the modules that you need.

      The course is packed with information.  From the beginnings of the C programming language to advanced microcontroller peripherals, the course teaches you all of the building blocks you would need to build your own electronic systems.

      We use lots and lots of examples.  We take you step-by-step through the lessons – each time providing sample code and documentation to make sure you are supported through the course.

      We are here to help.  We are educators with a singular focus of providing a meaningful experience for our students.  And, while we cannot do the work for you, we are willing to work WITH you help you succeed.


    Course Breakdown

    Section 1 - How Do I Get Started? (Free Preview Available at Udemy)

      Lecture 1: What Is This Course All About?

      Lecture 2: Course Introduction

      Lecture 3: What Is a Microcontroller?

      Lecture 4: What Is an Embedded System?

      Lecture 5: What Is a Program?

      Lecture 6: What Is an Integrated Development Environment?

      Lecture 7: ACTION: How Do I Get Started?

      Lecture 8: Wrap Up

      Lecture 9: Quiz 1: Getting Started

    Section 2 - Binary Numbers and Digital Logic (Free Preview Available at Udemy)

      Lecture 10: ACTION: What Are Binary and Hexadecimal Numbers?

      Lecture 11: ACTION: What Is Digital Logic?

      Lecture 12: Wrap Up

      Lecture 13: Quiz:  Binary Numbers and Digital Logic

      Lecture 14: BONUS:  Additional Examples

    Section 3 - What's Inside of a Microcontroller (Free Preview Available at Udemy)

      Lecture 15: What Is Inside a Microcontroller?

      Lecture 16: What Is Program Memory?

      Lecture 17: What Is Data Memory?

      Lecture 18: What Is a Peripheral?

      Lecture 19: Wrap Up

      Lecture 20: Course Launches September 28th, 2015

    Section 4 - Loops in the C Programming Language

      Lecture 21: ACTION: What Is a FOR Loop?

      Lecture 22: What Is a Flow Chart?

      Lecture 23: ACTION: What Is a WHILE Loop?

      Lecture 24: Loops Wrap up

      Lecture 25: Quiz: Loops in the C Programming Language

      Lecture 26: BONUS: Are FOR Loops and WHILE Loops Really the Same Thing?

      Lecture 27: BONUS: What Are the Different C Variable Types?

      Lecture 28: BONUS: What Are Nested Loops?

      Lecture 29: BONUS: What Are the C Shorthand Operators?

    Section 5 - Digital Inputs, the P1.1 Button, and the IF Statement

      Lecture 30: What Is a Digital Input?

      Lecture 31: ACTION: What Is the P1.1 Push Button?

      Lecture 32: ACTION: What Is the IF Statement?

      Lecture 33: ACTION: What Are Relational Operators?

      Lecture 34: ACTION: How Do I Use More Push Buttons and LEDs?

      Lecture 35: Digital Inputs Wrap Up

      Lecture 36: Quiz: Digital Inputs, Push Buttons, and the IF Statement

      Lecture 37: BONUS: What Are BREAK and CONTINUE?

    Section 6 - Introduction to Timer Peripherals

      Lecture 38: What Is a Timer?

      Lecture 39: What Can Timers Count?

      Lecture 40: Introduction to Timers Wrap Up

      Lecture 41: Quiz: Introduction to Timers

    Section 7 - Introduction to the Watchdog Timer Peripheral

      Lecture 42: What Is a Watchdog Timer?

      Lecture 43: ACTION: How Do I Use the Watchdog Timer?

      Lecture 44: Watchdog Timer Peripheral Wrap Up

      Lecture 45: Quiz: Watchdog Timer Peripheral

    Section 8 - Introduction to the General Purpose Timer

      Lecture 46: ACTION: How Do I Use a General Purpose Timer?

      Lecture 47: Quiz: General Purpose Timers

      Lecture 48: BONUS: How Can I Pet the Watchdog with a General Purpose Timer?

    Section 9 - Advanced Features of General Purpose Timers

      Lecture 49: ACTION: How Do I Use Two General Purpose Timers to Count at the Same Time?

      Lecture 50: Quiz: Advanced Features of General Purpose Timers

      Lecture 51: BONUS: How Do I Use Semi-Automatic Pulse Width Modulation (PWM) Mode?

      Lecture 52: BONUS: How Do I Use Automatic PWM Mode?

      Lecture 53: BONUS: How Do I Use One Timer to Create Multiple Frequency Outputs?

      Lecture 54: BONUS: How Do I Count Up and Down with Dead Time?

      Lecture 55: BONUS: How Can I Count Pulses with a General Purpose Timer?

    Section 10 - Using Functions to Improve Your Microcontroller Program

      Lecture 56: ACTION: How Do Functions Improve Your Program?

      Lecture 57: Quiz: Functions

    Section 11 - Introduction to Interrupt Service Routines

      Lecture 58: ACTION: What Are Interrupt Service Routines?

      Lecture 59: Quiz: Interrupt Service Routines

    Section 12 - Introduction to Low Power Modes

      Lecture 60: What Is Low-Power Mode?

      Lecture 61: ACTION: How Do I Use Low-Power Mode?

      Lecture 62: Low Power Mode Wrap Up

      Lecture 63: Quiz: Low-Power Modes

    Section 13 - Interrupt Service Routines for Digital Inputs

      Lecture 64: ACTION: How Can I Use Interrupts with a Digital Input?

    Section 14 - Serial Communication Interfaces

      Lecture 65: What Is Serial Communication?

      Lecture 66: ACTION: How Can I Use a UART to Talk to Another Microcontroller?

      Lecture 67: Serial Communication Wrap Up

      Lecture 68: Quiz: Serial Communication

    Section 15 - Analog-to-Digital Converters

      Lecture 69: ACTION: What Is an Analog Value?

      Lecture 70: ACTION: How Do I Use an Analog-to-Digital Converter Peripheral?

      Lecture 71: Analog-to-Digital Converter Wrap Up

      Lecture 72: Quiz: Analog-to-Digital Converter

    Section 16 - Introduction to the Liquid Crystal Display (LCD)

      Lecture 73: ACTION: How Can I Use the LCD on the MSP430FR6989 Launchpad?

      Lecture 74: ACTION: How Do I Display a Short Word on the LCD?

      Lecture 75: ACTION: What Is ASCII and Why Is It Important?

      Lecture 76: ACTION: How Do I Create a Scrolling Message on the LCD?

      Lecture 77: ACTION: How Do I Display Numbers on the LCD?

      Lecture 78: ACTION: How Do I Display Symbols on the LCD?

      Lecture 79: Liquid Crystal Display Wrap Up

      Lecture 80: Quiz: Liquid Crystal Display

    Section 17 - Final Project

      Lecture 81: ACTION: Final Project

    Section 18 - Wrap Up

      Lecture 83: Final Words and Sources of Additional Help


    Instructor Bio

    Mark M. Budnik is the Electrical and Computer Engineering Department Chair and the Paul and Cleo Brandt Professor of Engineering at Valparaiso University.  He received his bachelor of science degree in electrical engineering from the University of Illinois and his master of science and doctoral degrees in electrical engineering from Purdue University.

    Prior to joining the faculty at Valparaiso University in 2006, Mark worked in the semiconductor industry, culminating as a Staff Engineer and the Director of White Goods and Motor Control at Hitachi Semiconductor.  In these roles, he had a unique opportunity to work closely with a diverse customer base to identify and establish a number of best practices in embedded systems education.

    In his career, he received multiple educational awards from academia and industry including ST Microelectronics, National Semiconductor, Hitachi Semiconductor, Valparaiso University, and the American Society for Engineering Education (ASEE).  Most recently, Mark was an ASEE Section Outstanding Teacher of the Year and a finalist for the 2015 ASEE National Outstanding Teaching Award.

    Mark is the author of more than fifty book chapters, journal articles, and conference proceedings and the recipient of five best paper/presentation awards.  He is a Senior Member of the IEEE and a Fellow of the International Symposium on Quality Electronic Design.