You are here: Home / ECS / Teaching / Courses / Microcontroller



Microcontrollers demand very precise and resource-saving programming. Therefore it is necessary to investigate the processor core; in particular, one has to study assembler language. This understanding enables to analyze compilation of C programs, which is a precondition to write efficient C programs for microcontrollers. Of utmost importance is the investigation of the microcontroller's hardware components. Goal of this course is the development of understanding of internal processes in the microcontroller chip. This will enable the student to conduct sound high-level-programming of such chips.


Lecture contents:
- Microcontroller architecture
- Assembler toolchain
- Interrupts vs. polling
- C-Compiler
- Memory analysis
- Digital communication
- Analog-digital- and digital-analog-conversion
- Interfacing
- Applications

Lab contents:
- Assembler and C
- Digital I/O
- Interrupts
- Timer
- Communication interfaces
- Analog I/O
- Anwendungen
- Embedded Operating Systems

Didactic methods:
- Important principles are presented in class
- Advance reading
- Supervised lab
- Guidance to read and comprehend datasheets
- Weekly learning objectives


ao.Prof. Dr. Widder Josef



[News] [Course Organization] [Course Enrolment] [Applications] [Exams] [Grading]

[Manuals/Datasheets/Programs] [Lecture/Theory] [Lab Hours] [Self Assessment Test]



Jan 18, 2017

Updates of the Webpage. Not stable right now!


Course Organization

The course is organized in three parts which focus on different aspects of microcontroller programming. The first two parts are concluded by an exam and accompanied by weekly lectures. In the second and third part you have the chance to additionally hand in a microcontroller application.


DateEvent / LecturePre-ReadingSlidesLab exercises
01.03.2017 Preliminary talk - Slides -
05.03.2017 Deadline for course registration - - -
06.03.2017 A deep look into the processor core
Getting code onto the microcontroller chip
2.1, 4.2, 4.3


1.2, 2.1.1,
2.1.2, 2.2.1
13.03.2017 Assembler programming 2.2, 2.3, 2.5


2.2.2, 2.2.4,
2.2.5, 2.4.1

Recitation for first exam

- Slides,

2.2.3, 2.2.8,
2.4.2, 2.4.3

23.03.2017 Deadline for course de-registration (12:00)
- - -
Exam for (and end of) part 1 - - -

Compilation of C programs
Introduction of Application 1

Lecture script: 2.2
avr-libc-Manual: 4, 5, 7, 23.28
For reference only: GCC internals


3.1.1, 3.3.2,
3.4.3, 3.8.1
03.04.2017 Q&A Application 1

Structured C Programming
Memory analysis
Bit tricks

Lecture script: 2.2


3.1.3, 3.3.1,
3.6.1, 3.6.2
24.04.2017 Problems of digital communication 3.1, 3.2, 3.3 Slides,
3.4.4, 3.6.4,
08.05.2017 TinyOS Part 1 Slides,
3.5.2, 3.5.3,
15.05.2017 Introduction of Application 2
Recitation for second exam
- 3.4.1, 3.6.3,
14.05.2017 Deadline for Application 1 code submission
- - -
19.05.2017 Exam for (and end of) part 2 complete lecture script - -
21.05.2017 Deadline for Application 1 protocol submission
- - -
22.05.2017 TinyOS Part 2
Q&A Application 2
- Slides,
29.05.2017 Reserved
- - - - 4.2.1, 4.2.2, 4.2.3
25.06.2017 Deadline for Application 2 code submission
- - -
26.06.2017 Recitation for make-up exam; will be held in the Lab - - -
30.06.2017 Make-up exam complete lecture script + TinyOS Slides,
02.07.2017 Deadline for Application 2 protocol submission - - -

Events are marked bold in the table above. Beside the exams, and when specified otherwise, the deadlines for the given events are at midnight.


For organizational announcements, for questions and discussions. You are expected to subscribe to the forum (log in with your student account and subscribe to course and forum).
For "inter-student" communication it is also possible to use the forum of the FSINF. Please be advised that we are not responsible for (maybe wrong) posts of other students.
Teaching Assistant
For questions that the tutors could not answer to your complete satisfaction.
Teaching Staff
For personal questions, notifications on broken microcontroller hardware, problems with the registration system.
TILAB system administrator (Heinz Deinhart)
In case of account troubles (e.g., forgotten password), software problems, broken PCs, ...

Course Enrollment and Lab Account

Enrollment for the course is done via TISS but all other things are done via myTI ( ). Please note that students of computer engineering (033 535) have priority. Enrollments as "Wahlfach" can only be accepted as long as there is enough capacity. The enrollments are transferred from TISS to myTI on March, 6. (without the need for additional course enrollment from your side). Late enrollments are only possible per email and if capacity is available!

You also have to ensure you have an account in myTI ( ), and have logged in at least once in the system before the enrollments are transferred! Around March, 7., you will get a notification to your e-mailaddress that your account has been generated. After that you have to visit and accept the usage policy of the TILab. After that, your will be able to enter the TILab with your TU-Card. You have to accept the usage policy by March, 23., even if you plan on working from home, as the sysadmin has to remove all accounts where the policy has not been accepted! This will also lead to you being dropped from the course!

On March, 23. noon, all enrollments will be deleted that are not active in both, myTI and TISS!

From March, 7. to March, 19. you can also suggest up to three of the weekly supervised lab slots, in myTI, you want to attend. On March, 20. one of these slots is assigned to you.

Enrollment for exams and submissions of the applications are via myTI only!


During parts 1 and 2, there is one lecture per week on Monday from 16:00-18:00 in lecture hall HS 14A.

Lecture notes download: Lecture notes
Exercises download: Exercises
Manuals/Datasheets download: Manuals/Datasheets

Application Programming Task

The specification for the application, which you can program, will be posted on this website in due time.

All relevant manuals, datasheets, etc. can be found here.

The applications are intended to help you understand the intrinsics of hardware-based and microcontroller programming, and to develop the necessary programming and debugging skills.

Implementation Proposal

For Application 1 you can prepare an implementation proposal by April, 2. The proposal is optional, and will be awarded with up to two bonus points if it has been discussed with a tutor in the week following the deadline (3.- 7. April). The proposal should at least answer the general questions given in the template and thereby present major implementation ideas, show a continuous improvement of your skills and show that you have spend time to understand the task at hand.

We encourage you

  • to discuss with your collages, but keep in mind that the cheating policy also applies for the implementation proposal!
  • not to hold off on working on the application due to the outstanding proposal deadline!


The code of your application must adhere to the specified coding guidelines. The specification of each application also contains theory tasks which you can solve. Additionally, you have to write a protocol in LaTeX which covers the following sections:

  • A detailed description of your solution, including all design decisions.
  • Correct and detailed answers to all exercise questions, if applicable.
  • Any problems you encountered (programming difficulties, trouble with datasheets, mistakes you made, ...).
  • How much time (in person hours) you spent for the exercise, broken down into preparatory work (e.g., reading datasheets), design, programming, debugging, and protocol (including questions).
  • Your solution (attempt) to the theory tasks (if you worked them out).

You have to submit the application and the protocol before or at the day of their respective deadline!

There will be a 25 minute delivery talk (Abgabegespräch) in the week of the protocol-deadline (= Exam-Week).
The sign-up for this talk will happen via myTI, and you must take such a talk to get points for the application.
During this talk a tutor will check your submission and will ask you questions related to your implementation. Should there by discrepancies, you may be asked for an additional talk with a member of the teaching staff, which can lead to point deductions.
Please, also bring the signed first page of the Protocol to the delivery talk.

Overall an application submission consists of several tasks:

  1. Create a gzip'd tar-archive, containing the application source code, according to the template provided by us.
  2. Electronically submit the archive to myTI before the code submission deadline.
  3. Show a tutor that your program solves the task during the delivery talk. The tutor may ask you questions about the functionality of your program and thing you must know if you implemented the application on your own. If there are discrepancies, you will be invited to a delivery talk with a member of the teaching staff.
  4. Create a gzip'd tar-archive, containing the protocol, according to the template provided by us.
  5. Electronically submit the archive to myTI before the protocol submission deadline.

Should there be any problem with the electronic submission to myTI, please inform us immediately. If this happens close to the submission deadline, you should also attach your submission to this e-mail so that you have submitted on time!


The TILAB is located in the Treitlstrasse building (building DE) on the mezzanine (raised ground floor). The lab is open from 8:00 to 22:00. It is closed on official holidays, but open on all student holidays. As you can see in the TILAB timetable, the course is assigned to Room 4. You will find tutors in the lab during their lab hours.


You can borrow a lab kit, which contains the bigAVR6 board with an ATmega1280 mcu card, 2x16 Character LCD, usb2serial converter, temperature sensor, and matrix keypad. The deposit for the kit is 100 Euro. You have to return the kit at the end of the course.

Collaboration Policy

We encourage discussions among students, but all work you submit must be written by you in your own words and must have been programmed by you. Using (parts of) programs or protocols from other courses or from previous years is not allowed.

If we detect cheating on a submission, we will not only ignore the submissions but also deduct 15 points from the finals result, of every person involved!
Please note: we deduct the points from all students involved, so if you steal from your colleagues without their knowledge and we find out, they will get punished for your misdeed. If they ask, we will disclose your name to them.


The exam consists of a theory exam (25 min), a preparatory phase for the practical exam (25 min), and the practical exam itself (about 50 min). You register for a particular 120 min exam slot. The remaining 20 minutes are for organizational things like changing rooms. You start with the theory exam in the TILab rooms on the Mezzanine, then move to the TI Seminarraum (ground floor) for the preparation, and finally go back to the TILab rooms on the Mezzanine for the practical exam. Please be in front of the TILab rooms on the Mezzanine shortly before the start time of your exam slot.


  • True/False Questions. 24 questions, grouped into 8 topics with 3 questions each.
  • The questions test whether you understand the material (pre-reading as stated in the timetable, lecture slides and lab hardware) and whether you can look things up in the ATmega1280 manual, avr-libc manual and AVR instruction set manual.
  • An ATmega1280 manual, AVR instruction set manual, board schematic, avr-libc manual and a calculator will be provided. Own notes, paper, and calculators are not allowed.
  • A correctly answered questions is awarded with 0.5 point, a wrong answer results in 0.5 point deduction.
  • If your overall score for the theory exam would be negative, it will be set to 0.
  • Thus the maximum is 12 points per theory exam.


  • 2 programming tasks. Here is an example test for the first part.
  • The task will not only involve components which have been used in the application programming tasks, but also components which were covered by the recommended exercises. Additionally, the operational modes of the components which can appear in a programming task are not limited to their usage in the application programming tasks and recommended exercises!
  • You will receive a program skeleton where you have to fill in the important stuff (mainly initializations, some computations and program logic).
  • All manuals and schematics necessary for solving the tasks are provided. Own notes, paper, and calculators are not allowed. You will get the task descriptions and program skeletons on paper so you can write down your design during the preparation phase. During the make-up exam you will be provided with a copy of 'TinyOS Programming', but only during the practical exam itself!
  • As soon as you have completed a task, call a tutor. The tutor will verify that your program is correct and, if it is correct, mark this on your exam sheet.

Viewing (Einsichtnahme)

The viewing for the programming exams is by email: Just mail us within a week after the exam which of your exam tasks you are interested in, and we will evaluate them and send you an explanation of your mistakes per email. Depending on our workload and the number of students interested in getting feedback, our response time may vary between a day and 1-2 weeks.

Viewing for a theory exam is by appointment (send email).


If we detect cheating during on part of the exam, or you submit code that has not been programmed by you, you will receive 0 points for both parts, theory and programming, of the exam. Additionally, we will deduct 15 points from your final result.


Your final score (max. 100 points) is composed of the following parts:

Programming Exams (26 points)
best two out of three exams, 13 points per exam. Each exam consists of two exercises.
Theory Exams (24 points)
best two out of three exams, 12 points per exam
Application 1 (25 points)
hands-on programming of application 1 (20 points), including the corresponding theory tasks (5 points).
Application 2 (25 points)
hands-on programming of application 2 (20 points), including the corresponding theory tasks (5 points).

Bonus points:

You can achieve bonus points for different reasons, but there is no right for a bonus point.

  • You can receive a bonus point for each of the assembler task sets listed below. To receive the point you must present the task to a tutor, no later than the listed date. The tutor will also check your answers to the listed questions and will then upload your code to myTI.
    • Tasks 2.2.1 and 2.2.2 must be presented before March, 12.
    • Tasks 2.2.3 and 2.4.1 must be presented before March, 19.
    • Task 2.2.8 must be presented before March, 23 .
  • For the Implementation Proposal of Application 1 you can achieve up to 2 bonus points.
  • For exceptional work during the applications we might also award bonus points.


Prerequisites for a positive grade:

At least 13 points achieved for the programming exams.
At least 55 points, excluding bonus points.

Grading Scheme

[0,100], prerequisites not fulfilled nicht genügend
[0, 55) nicht genügend
[55, 66) genügend
[66, 77) befriedigend
[77, 88) gut
[88, 100] sehr gut