Syllabus for ME/EE 477 and MME 577
Embedded Computing in Electromechanical Systems

Spring 2020

Course description

This course is an introduction to microprocessor-based measurement and control of electrical, mechanical, and electromechanical systems. Topics include microprocessor architecture, computer memory, C programming, hardware and software interfaces, and communications. Emphasis is placed on hardware and software interface design for real-time measurement, control, and user interface.

The course is designed for the Embedded Computing Laboratory, which is described in Resource 1 of Embedded Computing. Note that this course was developed in collaboration with Professor Joseph L. Garbini, who teaches a similar course at the University of Washington.

General information

Office Hours (CH 103C)
Tu 12–2 and Th 1–2
Office Hours (CSS)
W 3–4
Office Hours (Pan 107)
W 4–5
Harned 213
W 2:00–4:50


(KR) Any introduction to the C programming language. For example, Kernighan, B. W. and Ritchie, D. M., The C Programming Language. Prentice Hall, 2nd Ed. 1988.

(PH) Patterson, David A. and Hennessy, John L. Computer Organization and Design: The Hardware Software Interface ARM Edition. Morgan Kaufmann Publishers, 2016.

(RW) Derek Rowell and David N. Wormley. System Dynamics: An Introduction. Prentice Hall, 1997.

(Ni) Norman S. Nise. Control Systems Engineering. Seventh Edition. Wiley, 2015.

Homebrew text and notes

A partial texts (with fill-ins) I’m writing will be posted on the Embedded Computing (EC) page.

They are being constantly updated, but I will let everyone know via Slack when each lecture is ready to be printed. Please print each lecture before class and bring it. There are fill-ins and such.

Throughout the semester, you should be ready to show these (current) in any class, with threat of a 5% lab report grade deduction for that week.


The following schedule is tentative.

day lectures week reading due
Course introduction
Lecture 00.01 Introduction to embedded computing
Lecture 00.02 Embedded control
Lecture 00.03 Computer architectures
Lecture 00.04 Numeral systems
Lecture 00.05 Binary and hexadecimal arithmetic
Resource 1: High-level embedded system
Resource 2: Embedded system intro
Resource 7: Setting up the dev environment
Lab Exercise 00 Getting started
1 C text
Lecture 01.01 Memory
Lecture 01.02 Processing
Lecture 01.03 A CPU programming model
Lab Exercise 01 Introduction to myRIO C programming and high-level io drivers
2 C text Lab 00
Lecture 02.01 A paper computer
Lecture 02.02 C—operator precedence and associativity
Lecture 02.03 Exploring C—compile-time integral constants
Lecture 02.04 Exploring C—pointers
Lab Exercise 02 Keypad mid-level primitives
3 C text Lab 01
Lecture 03.01 Data transmission
Lecture 03.02 UARTs
Lecture 03.03 Exploring C—structures
Lecture 03.04 Exploring C—multi-dimensional arrays
Lecture 03.05 Exploring C—custom data types
Lab Exercise 03 Low-level character io
4 C text Lab 02
Lecture 04.01 Digital signals
Lecture 04.02 Pulse-width modulation
Lecture 04.03 Motor driving
Lecture 04.04 Measuring motor position and velocity
Lecture 04.05 Finite state machines
Lab Exercise 04: Parallel io and control
5 Lab 03
Lab day 6 Ass. 2
Lecture 05.01 Threads
Lecture 05.02 Interrupts
Lecture 05.03 Boolean algebra on digital signals
Lecture 05.04 Debouncing switches
Lab Exercise 05 Introduction to interrupts
7 Lab 04
Lab day 8
Lecture 06.01 ADC and DAC
Lecture 06.02 Discrete dynamic systems
Lecture 06.03 Discrete transfer functions
Lecture 06.04 Biquad cascade transfer functions
Lecture 06.05 Timer interrupts
Lab Exercise 06 Transfer function generator
9 Lab 05
Lab day 10
Lecture 07.01 DC motor velocity control
Lecture 07.02 Designing a PI controller
Lab Exercise 07 DC motor PI velocity control
11 Lab 06
Lab day 12
Lecture 08.01 Path planning
Lecture 08.02 Designing a PID controller
Lab Exercise 08 DC motor PID position control
13 Lab 07
Lab day 14
Presentations 15 Lab 08

Laboratory exercises and reports

For each laboratory exercise listed in the schedule, perform the following tasks.


Assignment #1

Assignment #2

Video lectures

Most lectures will be available online on my YouTube channel. I recommend subscribing and familiarizing yourself with the playlist for this course.


Class resources will be posted here throughout the semester.


Everyone is required to join the messaging service called “Slack.” We’ll use it to communicate with each other during the semester. The Slack team you need to join is called drrico. That’s a signup link. Be sure to join the channel #577-general-2020.

Graduate student responsibilities

Graduate students have three additional responsibilities: (1) perform a literature search to understand an aspect of each laboratory exercise in greater depth; (2) as part of the introduction to each laboratory report (should be about a page in the standard format), summarize your research, citing least three academic sources; and (3) at the end of the semester, present a detailed description of an application of embedded computing, focusing on the embedded computing aspect of the application.

For resources pertaining to (1), see my Academic Literature Searching Tutorial.

Laboratory policies

A laboratory report will be due on Friday of the week it is due. These reports will be submitted via Moodle and must be in accordance with the requirements provided here.

Laboratory procedures should be performed individually, although collaboration is encouraged. That is, discussions of how to accomplish aspects of the lab are great, but everyone should write their own code.

Laboratory reports should also be prepared individually.

Homework, quiz, & exam policies

Homework & homework quiz policies

When assigned, homework will be due on Fridays.

Working in groups on homework is strongly encouraged, but work turned-in must be one’s own.

Exam policies

A midterm and a final exam may be given, but are not planned. If you require any specific accommodations, please contact me.

If applicable, calculators will be allowed. Only ones own notes and the notes provided by the instructor will be allowed. No communication-devices will be allowed.

No exam may be taken early. Makeup exams require a doctor’s note excusing the absence during the exam.

Grading policies

Total grades in the course may be curved, but individual assignments will not be. They will be available on Moodle throughout the semester.

Assuming no exams are given, the grading breakdown is simple.

Reports, code, assignments

For graduate students, 10% of their grade will depend on their final presentation.

Academic integrity policy

Cheating or plagiarism of any kind is not tolerated and will result in a failing grade (“F”) in the course. I take this very seriously. Engineering is an academic and professional discipline that requires integrity. I expect students to consider their integrity of conduct to be their highest consideration with regard to the course material.

Correlation of course & program outcomes

In keeping with the standards of the Department of Mechanical Engineering, each course is evaluated in terms of its desired outcomes and how these support the desired program outcomes. The following sections document the evaluation of this course.

Desired course outcomes

Upon completion of the course, the following course outcomes are desired:

  1. students will have a clear and thorough understanding of concepts, principles, and methods of embedded computing in electromechanical systems;
  2. students will understand basic computer architecture;
  3. students will understand basic C programming;
  4. students will be able to program an embedded computer;
  5. students will be able to design a basic feedback control system;
  6. students will be able to write a clear and thorough report of a laboratory exercise; and
  7. students will collaborate to complete laboratory exercises.

Desired program outcomes

In accordance with ABET’s student outcomes, our desired program outcomes are that mechanical engineering graduates have:

  1. an ability to identify, formulate, and solve complex engineering problems by applying principles of engineering, science, and mathematics
  2. an ability to apply engineering design to produce solutions that meet specified needs with consideration of public health, safety, and welfare, as well as global, cultural, social, environmental, and economic factors
  3. an ability to communicate effectively with a range of audiences
  4. an ability to recognize ethical and professional responsibilities in engineering situations and make informed judgments, which must consider the impact of engineering solutions in global, economic, environmental, and societal contexts
  5. an ability to function effectively on a team whose members together provide leadership, create a collaborative and inclusive environment, establish goals, plan tasks, and meet objectives
  6. an ability to develop and conduct appropriate experimentation, analyze and interpret data, and use engineering judgment to draw conclusions
  7. an ability to acquire and apply new knowledge as needed, using appropriate learning strategies.

Correlation of outcomes

The following table correlates the desired course outcomes with the desired program outcomes they support.

desired program outcomes
1 2 3 4 5 6 7
desired course outcomes 1