Secure Computation Laboratory

Charles H. Knapp Associate Professor Marten van Dijk


ECE3411: Microprocessor Applications Laboratory (Fall 2017)

Instructor: Marten van Dijk TA: Hamza Omar

The previous offering of ECE3411 can be found via following:

Course Introduction

The basis of sophisticated designs of modern digital systems that appear in products such as automobiles, appliances and industrial tools is the Micro Controller Unit (MCU); a microcomputer optimized for single-chip system design for controlling peripheral devices geared to real-time applications. We will use the Atmega328P microcontroller (from the Atmel MEGA series RISC microcontrollers) in a series of labs to design microcontroller based systems. In particular, we will explain how to read and use the Atmega328P datasheet and how to write self-explanatory C code for interfacing with the MCU and controlling peripheral devices. This includes initializing register values, writing Interrupt Service Routines (ISRs), constructing underlying Finite State Machines (FSMs), and using a task based programming approach based on hardware timers.

Throughout the course students will learn the basics of C (without advanced data structures that involve pointers) and learn how to use C to program a Micro Controller Unit (MCU). This class aims to educate engineering students with little coding background. I.e., as a prerequisite students are expected to have some experience with basic structures such as loops, if-else statements, arrays, etc. (e.g., as used in MATLAB).

This class offers an intermediary course which allows students to prepare themselves for MCU courses which expect students to have real experience with C, e.g., Bruce Land’s course at Cornell. Our goal is to use the new ECE 3431 class as a prerequisite to a to-be-developed advanced MCU applications lab where we will teach the topics including real time OS, networking protocols such as CAN bus and ZigBee, OLED displays, motor control applications and much more.

Optional Textbook: Elliot Williams, Make: AVR Programming, 2014.

Accessing Instructor's Material

The links below provide the student view of all the taught material. If you are a colleague faculty member, you can email at in order to get access to all the pptx, latex, and C source files together with all the solutions (which are omitted from the student view).
However, there is one catch: you need to acknowledge this course by adding (where appropriate) the following footnote to your slide decks:

Moreover, you need to suggest how the course can be improved and share with us the new quiz/final questions or lab problems as developed by you.

Preliminary Resources

Before coming to the first lecture/lab

  • Place the order of your MCU kit and other components mentioned in the Online Ordering List.
  • Make sure to have set up Eclipse/GCC & Atmel Studio; see Tools Setup which explains how to do this for your laptop, you do not have time for installing software during lab!
  • Sign up for Piazza.

Lab Material

Course Material

Block 0


Block 1


Block 2


Block 3


Block 4


Block 5


Block 6