EE342. Microcontroller Based System Design
Microprocessor architecture, the microcontroller based system design context, and peripheral interfacing. C and machine language programming and debugging, and embedded applications. Associated laboratory exercises include topics such as stand-alone system programming, interfacing to peripherals, interrupts, timers, analog data acquisition, and intercomputer communications. Two hours of lecture and one two-hour lab per week.
Prerequisites: EE-241, and either EE-247 or CS-126 as corequisites.
This has long been one of my favorite courses. Over the course of the semester we do both hardware and software for an embedded application to, ultimately, do distributed control of an HO toy train layout. This involves programming the microcontroller (in C), building interface hardware, programming the Windows PC (using C++) for the application with which a user controls part of the train layout, and the communications (using USB) between the microcontroller and the PC. All of those things need to work together, and live cooperatively with the systems of the other students. It's an interesting challenge.
The current offering of this course is Spring 2017 (since I was on sabbatical during Fall 2016). It is normally offered in the fall of even numbered years.
The DEMOJM prototyping boards and the Coldfire family of processors have been discontinued by NXP (Formerly Freescale). So, we are shifting to another microcontroller, the NXP/Freescale KL43Z. At the beginning of the course the S08SH8 processor and demo board was used. That processor is very limited, but it affords the students an opportunity to get very close to the hardware. Much of what we are doing will make use of the serial port and the "terminal" program. The KL43Z puts the programmer farther from the hardware, which is accessed through driver functions in most cases. Below are the syllabus (with projects) and some useful documents.
The course in the past made use of the Freescale/NXP "Coldfire" JM128 processor, which is now no longer available. Still, some of the materials below will continue to be useful, especially those concerned with programming on the Windows PC side of the interface.
This course is normally offered in the fall semester, and is normally taken by EE students with a particular interest in computers, or occasionally CS students. Background in digital design is necessary, and some experience with programming equivalent to an introductory programming course is needed, with either a follow up course taken or in progress (nominally EE247 or CS126). In this course we will be programming in C (for the embedded microcontroller) and C++ (on the Windows PC) although the depth we get into with C++ is pretty shallow. We are not really mastering C++ Windows programming, but doing just enough to have some perspective on it. (In the F'18 offering we won't be doing the Windows bit; we'll see in the future if that can be done with the KL43Z's.)