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
Text: 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
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. Note that smart devices will not be allowed during tests. 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 (typically $25 or less) and widely available (Parts Express, Digi-Key, Mouser, Spark Fun, AdaFruit, 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.
Please note that the laboratory manual and lecture text are available as single doc and pdf files at the bottom of this page.
We start the course by diving right in to the C programming language from the desktop. We begin examing variable types and basic input/output (I/O) methods for text.
We look at basic decision making.
We examine iteration and looping methods this week.
Our discussion of pointers and addresses commences. Mastery of this material is imperitive. Around here we will have our first test.
This week we turn our attention from desktop programming to programming embedded targets. We discuss computer hardware architecture and introduce the Arduino system.
Our week begins with a discussion of ports, specifically writing to output ports.
We reverse our operation and examine how to read digital data from the ports.
We extend the concept of port reading to include analog input signals.
We continue our exploration of analog input signals via a variety of different sensors and associated applications. Around here we will have our second test (end of this week or possibly the next).
We begin our discussion of creating analog output signals.
Timers are discussed this week.
We examine interrupts.
We wrap up the course. Time permitting, we have our last in-class test.
Embedded Controllers Using C and Arduino (odt)
Laboratory Manual for Embedded Controllers Using C and Arduino (odt)
Laboratory Manual for Embedded Controllers Using C and Arduino (pdf)
Using Pelles C
How to Format Your CodeWorksheets