Instructor: Assistant Professor Asimakis Leros
ICSD building, office B-10
Lectures: Wed 3-5, Myrtó
Lab: Thu 9-12, Artemis
Office hours: Wed 10-12, Thu 12-1
Microprocessors is part of a sequence of courses on computer hardware. The course focuses in the design of digital systems using microprocessors and microcontrollers and is organized around the AVR 8-bit microcontrollers. We will address the internal architecture, interface with memory and I/O devices, and programming in Assembly and C.
Specific course objectives include:
The course material can be found through e-class.
In the lab we will use the ATMega328P microcontroller by Atmel (currently owned by Microchip), the Arduino Uno development board and the Atmel (Microchip) Studio 7 development environment. The Αrduino IDE will be available at the lab, but will not be used currently. We will be programming the microcontroller both in Assembly and C.
Eight lab exercises are planned (for details, see course schedule below. Each exersice will be available a week in advance for you to prepare. You will need roughly four to five hours of preparation per each exercise for studying the course material and datasheets, preparing a draft of your code and debugging. You may need more effort if you have no previous exposure to Assembly language. It is important to have done this work before the lab so that we don't start from zero; during the lab session we will debug and test your code, as well as see various extensions. Contact me in case of any implementation difficulties before the lab. Your lab report will be due five days after the lab session.
There are ten workstations in the lab, each with a PC, Arduino board and other equipment. There will be two 2-hour sessions on Thursdays, so a maximum of 20 students can be accommodated. It is important to register as early as possible.
Your presence in the lab and lectures is mandatory and important. Inform me as soon as possible in case of an absense. Normally, there will be no makeup for lab sessions lost.
Apart from the weekly lab exercises, there will be a larger scale project. You should expect to put around 40 to 50 hours of work (roughly 7--8 hours per week for 5--6 weeks). The subject will be of your choice, although I can offer suggestions and advice. You may use any electronic or printed sources, as long as (a) I agree and (b) you explicitly mention the sources in your reports. Important dates are:
The project deliverables are the hardware and software implemented, the project report, and a 2-minute video on YouTube.
We will rely heavily on the datasheets, and also use various web resources.
Pay attention to deadlines! Reports received up to three days past the deadline will incur a grade penalty of 10%. After that, no reports will be accepted.
You may freely discuss exercises with each other, but each of you must produce his own personal work. Lab reports that dispaly unusually similarity will not be graded!
The same holds for the course project. In addition, you may freely use any sources, electronic or printed, as long as you acknowledge them in your report.
(Watch out for announcements; there may be some changes in future lectures)
Wed 2 Mar | Lec1 | Review of number systems. Review of basic digital components. Microprocessor architecture: control unit, registers, arithmetic and logic unit. Interface with memory. |
Thu 3 Mar | Lec2 | Input and output: program controlled I/O, service of peripheral devices using the methods of polling and interrupts. |
Tue 8 Mar | Lec3 | Architecture of AVR microcontrollers: core and basic peripheral units. |
Wed 9 Mar | Lec4 | Introduction to the AVR assembly language. Data transfer, arithmetic and logic operations. |
Thu 10 Mar | Lab1 | Introduction to the Atmel Studio development environment. Arithmetic and logic operations in Assembly. |
Fri 11 Mar | Last date for adding/dropping course. | |
Wed 16 Mar | Lec5 | More addressing modes in Assembly. Branching instructions. I/O ports. |
Thu 17 Mar | Lab2 | Control and branching instructions. Digital I/O. |
Wed 23 Mar | Lec6 | Subroutines and stack. More on I/O ports programming. |
Thu 24 Mar | Lab3 | Digital I/O. |
Wed 30 Mar | Lec7 | I/O using interrupts. |
Thu 31 Mar | Lab4 | Programming external interrupts. |
Fri 1 Apr | Selection of lab projects. | |
Wed 6 Apr | Lec8 | Counters, timers, PWM. |
Thu 7 Apr | Lab5 | Programming timers and interrupts. |
Wed 13 Apr | Lec9 | Analog to digital conversion (A/D). |
Thu 14 Apr | Lab6 | Programming analog inputs. |
Wed 4 May | Lec10 | Serial communication. |
Thu 5 May | Lab7 | PWM, various output devices. |
Wed 11 May | Lec11 | Serial communication, I2C (TWI) protocol. |
Thu 12 May | Lab8 | Serial communication. |
Wed 18 May | Lec12 | Implementation of a microprocessor's control unit. Microprogramming. |
Thu 19 May | Lab9 | Serial communication. |
Wed 25 May | Lec13 | PIC 8--bit processors. |
Thu 16 May | Lab10 | Term projects. |
Wed 1 Jun | Lec14 | ARM 32 and 64--bit processors. |
Thu 2 Jun | Lab11 | Term projects. |
~15 Jun | Presentation of term projects (final exam). | |
~25 Jun | Final reports due. |