June 22, 2008
June 22, 2008
June 25, 2008
Computers in Education
13.588.1 - 13.588.8
Abstract This paper reports our experience of teaching embedded system design. Embedded system design is the second microcontroller course in our microcontroller course sequence. In the first microcontroller course, we taught assembly language programming and basic microcontroller interface concepts. In the embedded system design course, the focus was on effective system design and development.
The course started with the definition and features of embedded systems and then moved on to system development methodology. C language was chosen as the language for programming embedded applications. Top-down design and hierarchical refinement were taught as the system development methodology. Students learned to think in blocks rather than in a single C language statement.
Systematic software and hardware debugging were taught. With a well-understood algorithm, students would know what the program execution result should be at certain point of their programs. This helped students to pinpoint the software bugs. For the hardware bugs, the students were taught to first make sure the circuit connection and the expected signal waveform during the program execution process. From there, students learn to locate the source of errors.
Programming style is another area that deserves a lot of attention. By following certain guidelines, many syntax errors can be avoided while at the same time programs become more readable and extensible. Students were taught to write reusable code. They were taught to convert common operations into functions and group them into files so that they could be included in other projects and be reused.
The choice of microcontroller to teach in an embedded system course is also important. There are several microcontroller families with good development tools and demo boards support. We have taught the Freescale HCS12, Microchip PIC18, and Silicon Laboratory C8051 in the embedded system class in the last few years. We felt that they are all very suitable for such an endeavor. All of these three families of microcontrollers have inexpensive software development tools and feature-rich demo boards for lab use. We have taught most of the peripheral functions available in the microcontroller including I/O ports, timers, compare/capture/PWM, UART, SPI, I2C, A/D, D/A, CAN, and on-chip flash memory programming. Interrupts have been used extensively to allow multiple operations to be overlapped.
Introduction In our first microcontroller course, we taught students assembly language programming and basic microcontroller interfacing concepts. Learning assembly language programming gave students an intimate feeling about how microcontroller hardware functions. On the other hand, they discovered that assembly language was not a productive language. In the embedded system design course, C language is chosen as the programming language. C language enables us to cover topics in a pace much faster than the assembly language. Our goal is to teach students to become an effective embedded system developer. The following topics became the focus of this course:
Huang, H. (2008, June), Experience Of Teaching Embedded System Design Paper presented at 2008 Annual Conference & Exposition, Pittsburgh, Pennsylvania. https://peer.asee.org/4485
ASEE holds the copyright on this document. It may be read by the public free of charge. Authors may archive their work on personal websites or in institutional repositories with the following citation: © 2008 American Society for Engineering Education. Other scholars may excerpt or quote from these materials with the same citation. When excerpting or quoting from Conference Proceedings, authors should, in addition to noting the ASEE copyright, list all the original authors and their institutions and name the host city of the conference. - Last updated April 1, 2015