Course detail
Microcontrollers for Advanced Applications
FEKT-MMIAAcad. year: 2016/2017
Students learn the advanced features of the C language, its use in microcontrollers programming, and the details of architecture and peripherals of Atmel AVR MCUs. They learn to design and program drivers for the most common peripherals such as button inputs, multiplex displays, graphic displays, shift registers, temperature sensors, etc. The course shows the procedures necessary for the design of complex applications with AVR microcontrollers, including the topics of source code management and documentation.
Language of instruction
Number of ECTS credits
Mode of study
Guarantor
Department
Learning outcomes of the course unit
- describe different AVR microcontroller blocks including advanced functions
- create firmware in C language including AVR-GCC specialties
- discuss different types of displays for microcontroller applications
- discuss advantages and disadvantages of different busses for microcontrollers
- design connection of different microcontroller peripherals
- design and assemble own device with microcontroller including firmware
Prerequisites
- describe main microcontroller blocks and their function
- design simple C program
- design program for setup of basic peripherals, interrupt control and separate functions and function calls
- analyze simple electronics circuits with passive parts and transistors and choose corresponding way of connecting to the microprocessor.
The subject knowledge on the Bachelor's degree level is requested.
Co-requisites
Planned learning activities and teaching methods
Assesment methods and criteria linked to learning outcomes
Course curriculum
C language: constants and operators, control structures, preprocessor, functions, memory classes, pointers
C language: arrays, strings, struct, union, enum, bit operations, inline, volatile, naked, state machines
C language: introduction to the avr-libc library, GCC, C for AVR (ISR, PROGMEM etc.), printf and stdout, combination with ASM
C language: specialties in the avr-libc library, libraries for LCD, UART, I2C, encryption
Embedded systems design principles, RTOS: cooperative RTOS, preemptive FreeRTOS
AVR core: core and memories, clock sources, power saving modes, WDT, BOR, interrupts, I/O ports; JTAG, ISP, bootloader, fuses, signature, calibration
AVR peripherials: counter/timer (SysTick, beeper, PWM etc.), RTC, ADC
AVR communication: UART (RS232/485), SPI, I2C, 1-wire
peripherals: buttons, normal LED, multiplexed LED, rotary encoder, text display, beeper, shift registers
peripherals: graphic display (KS0108, vector graphics, TV screen); motors (DC motor, bridges, stepper motor, servo, BLDC)
Work placements
Aims
Specification of controlled education, way of implementation and compensation for absences
Recommended optional programme components
Prerequisites and corequisites
Basic literature
Recommended reading
Classification of course in study plans
- Programme EEKR-M Master's
branch M-EST , 1 year of study, summer semester, elective specialised
- Programme EEKR-M Master's
branch M-EST , 1 year of study, summer semester, elective specialised
- Programme AUDIO-P Master's
branch P-AUD , 1 year of study, summer semester, elective interdisciplinary
- Programme EEKR-CZV lifelong learning
branch EE-FLE , 1 year of study, summer semester, elective specialised
Type of course unit
Lecture
Teacher / Lecturer
Syllabus
C language: constants and operators, control structures, preprocessor, functions, memory classes, pointers
C language: arrays, strings, struct, union, enum, bit operations, inline, volatile, naked, state machines
C language: introduction to the avr-libc library, GCC, C for AVR (ISR, PROGMEM etc.), printf and stdout, combination with ASM
C language: specialties in the avr-libc library, libraries for LCD, UART, I2C, encryption
Embedded systems design principles, RTOS: cooperative RTOS, preemptive FreeRTOS
AVR core: core and memories, clock sources, power saving modes, WDT, BOR, interrupts, I/O ports; JTAG, ISP, bootloader, fuses, signature, calibration
AVR peripherials: counter/timer (SysTick, beeper, PWM etc.), RTC, ADC
AVR communication: UART (RS232/485), SPI, I2C, 1-wire
peripherals: buttons, normal LED, multiplexed LED, rotary encoder, text display, beeper, shift registers
peripherals: graphic display (KS0108, vector graphics, TV screen); motors (DC motor, bridges, stepper motor, servo, BLDC)
Exercise in computer lab
Teacher / Lecturer
Syllabus
ISR, button dedouncing, timers
LCD display and UART
LED multiplexed display, rotary encoder
LED shift register, snake game
cooperative RTOS, combining C with assembly
A/D converter and bargraph, buzzer
temperature sensors DS18B20 and KTY81
EEPROM and I2C bus
real time clock and sleep modes