ET 283 Microprocessor Fundamentals

I. CATALOG DESCRIPTION:

ET283 Microprocessor Fundamentals C 3, P 2, CR 4

This course presents the microprocessor/microcontroller as the principal component of embedded systems, providing information on the architecture and programming model using the C language. C programming techniques for arithmetic and logic operations along with flow control are introduced. The use of functions, I/O instructions and timers are presented with laboratory experiments.

Prerequisites: ET181 Digital Electronics 1

II. MATERIALS:

Text: Introduction to Embedded Systems: Using ANSI C and the Arduino Development Environment, David Russell, Moragn & Claypool Publishers
Reference: Arduino Cookbook, Michael Margolis, O'Reilly Media
Tools: Scientific calculator, electronic breadboard

Lecture Notes for Embedded Controllers Using C and Arduino (pdf)
Laboratory Manual for Embedded Controllers Using C and Arduino (pdf)

 III. STUDENT LEARNING OUTCOMES:

The student will demonstrate an understanding of numbering systems commonly encountered in computer systems.

The student will display an understanding of microcontroller architecture and I/O structure.

The student will demonstrate a basic proficiency in the C programming language.

The student will demonstrate an understanding of the differences between programming a desktop computer and a microcontroller.

The student will demonstrate a basic knowledge of how to use a host computer to program a microcontroller or other external target.

Through the laboratory, the student will demonstrate practical insight and knowledge of interfacing and input/output devices.

Course Assessment Standards

Syllabus

Background

Success in this course requires a good working knowledge of digital circuit principles along with basic semiconductor theory. A working knowledge of a modern programming language such as Python is strongly advised. The math level is mostly algebra. For lab, you'll need the standard array of goodies as used in ET151 Circuits 1 and ET153 Intro to Electronics (breadboard, DMM, hook-up leads, etc.) You may also find the purchase of an Arduino Uno (or similar) development board to be handy. These are relatively inexpensive (under $30) and widely available (Parts Express, Digi-Key, Mouser, Spark Fun, etc.). A USB cable is required for it. Finally, you may wish to obtain a desktop C compiler for your home system such as Pelles C (freeware). Unless otherwise specified, all lab exercises require a technical report due no later than one week after the exercise. The report should include the programming code and circuit schematic (where appropriate) along with a description of both and an analysis of the results. Late penalty is one letter grade for the first half week, two letter grades for the second half week. Reports are not accepted beyond two weeks and receive a grade of 0. Remember, plagiarism is grounds for failure.


Week-by-week progress and assignments. 

Please note that the laboratory manual and lecture note text are available as single doc and pdf files at the bottom of this page.

1

We start the course by diving right in to the C programming language from the desktop.

  • Reading: Course Introduction and C Language Basics parts I and II. Russell: chapter 1 and sections 2.1 through 2.4.
  • Problems: C Basics Worksheet. Russell Chapter 1: 5, 6, 7, 8.
  • Lab:  Our first experiment will be Introduction to C Programming. Be sure to read this overview on using Pelles C.
2

This week we begin examing variable types and basic input/output (I/O) methods for text.

  • Reading: C Storage Types and Scope, C Arrays and Strings. Russell: section 2.5 (start).
  • Problems: C Math Worksheet.
  • Lab: Using Standard I/O. Here we'll look at basic methods of entering and displaying data via a shell or console window.
3

We look at basic decision making. 

  • Reading: Begin C Conditionals and Looping. Russell: section 2.5 (finish)
  • Problems: Try converting an old Python program which uses a series of if statements into C.
  • Lab: This week Using Conditionals explores structures such as the if/else and switch/case
4

We examine iteration and looping methods this week.

  • Reading: Finish C Conditionals and Looping. Russell: section 2.6.
  • Problems: Try converting an old Python program which uses a for or while loop into C.
  • Lab: Iteration is this week's subject: Using Loops
5

Our discussion of pointers and addresses commences. Mastery of this material is imperitive. Around here we will have our first test.

  • Reading: C Pointers. Russell: sections 2.7 through 2.9 and 2.13.
  • Problems: C Pointers Worksheet.
  • Lab: Intro to Addresses, Pointers and Handles is particularly important in order to make sense of future work. 
6

This week we turn our attention from desktop programming to programming embedded targets. We discuss computer hardware architecture and introduce the Arduino system.

  • Reading: Hardware Architecture, Embedded Programming and AVR ATmega 328p Overview. Russell: chapters 3, 4 and 5 (they're short).
  • Problems: Load the Arduino development system onto your computer and make sure that you can download and run the Blinky program.
  • Lab: This lab begins our work with the Arduino development system: Hello Arduino.
7

Our week begins with a discussion of ports, specifically writing to output ports. 

  • Reading: Bits & Pieces: includes and definesBits & Pieces: pinMode and Bits & Pieces: digitalWrite. Russell: section 6.1.
  • Problems: Russell Chapter 3: 1.
  • Lab:  Arduino Digital Output. This exercise examines controlling external on/off style devices.
8

We reverse our operation and examine how to read digital data from the ports. 

  • Reading: Bits & Pieces: delay and Bits & Pieces: digitalRead. Russell: sections 6.2 through 6.4.
  • Problems: Russell Chapter 6: 1.
  • Lab: This lab examines how to obtain data from external two-state devices: Arduino Digital Input.
9

We extend the concept of port reading to include analog input signals.

  • Reading: Bits & Pieces: analogRead. Russell: section 8.1.
  • Problems: Russell Chapter 6: 3, 4.
  • Lab: This week we turn our attention to reading continuously variable input devices: Arduino Analog Input.
10

We continue our exploration of analog input signals via a variety of different sensors and associated applications.

  • Reading:  Russell: section 8.2.
  • Problems: Russell Chapter 8: 1.
  • Lab: The Arduino Reaction Timer is a fun lab which integrates many elements studied previously.
11

Around here we will have our second test (end of this week or possibly the next).

  • Reading:  Russell: section 8.3.
  • Problems: Russell Chapter 8: 1.
  • Lab: The Arduino Reaction Timer Redux revisits lasts week's exercise and extends the idea.
12

We begin our discussion of creating analog output signals.

  • Reading: Bits & Pieces: analogWrite.
  • Problems: Obtain and read the datasheet for the DAC0808 digital to analog converter.
  • Lab: This week we discover one method of controlling external devices in a continuous manner via Arduino Analog Output via PWM.
13

Timers are discussed this week.

  • Reading:  Russell: sections 7.1 and 7.2.
  • Problems:  Russell Chapter 7: 1.
  • Lab: There are many applications for counting items or events. Arduino Event Counter explores this topic.
14

We examine interrupts.

  • Reading: C Look-up Tables. Russell: section 9.1.
  • Problems: Russell Chapter 9: 1.
  • Lab: Arduino Arbitrary Waveform Generator is a two week assignment involving direct waveform synthesis. 

15

We wrap up the course. Time permitting, we have our last in-class test.

  • Reading: Russell: section 9.2.
  • Problems: Study for last test/final exam!
  • Lab: We continue with Arduino Arbitrary Waveform Generator.

Resources

Lecture Notes for Embedded Controllers Using C and Arduino (doc)

Lecture Notes for Embedded Controllers Using C and Arduino (pdf)

Labs

Laboratory Manual for Embedded Controllers Using C and Arduino (doc)

Laboratory Manual for Embedded Controllers Using C and Arduino (pdf)


[
Home] [MVCC Home]

2014 Jim Fiore