The course on "Microprocessor Applications" represents a didactic material for embedded applications amateurs and an additional study material for university lectures in this area.
As reference has been selected an AVR microcontroller produced by Atmel company and applications will be designed in most cases for ATmega16 microcontroller, which has the majority of modules required to solve problems for this course. The course itself will include descriptions of some typical problems and solutions. The reason for selecting the AVR series was simple architecture in comparison with its main competitors. Also, this series is widely available on market and has an acceptable price. The course materials will be presented in such a way as to be applicable to other architectures, different than AVR.
The course will be divided into two sections:
- Microcontroller Core Architecture. ASM Programming - in this section is analyzed in detail the microcontroller core structure, its functional principle and the way to work with its components by using the ASM (Assembly) low-level programming language.
- Microcontrollers programming in C language Peripheral modules - this section will include an introduction to microcontroller programming in C, the specifics of microcontroller programming in this language (so-called 'high' level programming language). The applications will be oriented toward working with microcontroller peripheries and applications development with their use.
In this course you will also find examples of solved problems that can serve as reference for more complex projects.
Find below the course contents that will be periodically adjusted and completed.
1. The Microcontroller Core Architecture. ASM (Assembly) Programming
1. Microcontroller architecture. Memory organization
2. Peripheral modules. GPIO Peripheral modules - Generic Input/Output Port.
3. AVR Microcontroller commands system.
4. Introduction to ASM programming. Stack. Subroutine, subroutine with parameters.
5. Creation of Basic Algorithmic Constructions: conditions, multiple selection, loops.
6. Constants. Boolean logic. Mask.
7. Direct access to SRAM memory, Variables, Operations with variables.
8. Indirect access to SRAM memory, Arrays, Processing of arrays.
9. Switches, Programs with interrupts. The RESET interruption.
10. External interrupt.
11. Watchdog Timer
2. Microcontrollers programming in C language. Peripheral modules
1. Introduction to C programming language. Data structures, functions.
2. Instructions of C programs with interrups, access to peripherals.
3. TIMER0 Peripheral module, Timer/Event counter.
4. TIMER1 Peripheral module, OC, IC, PWM modules.
5. Analog interfaces. The AC and ADC peripheral modules.
6. Serial interfaces. The SPI and UART peripheral modules.
7. Efficient programming in C for MCU, the C-ASM interaction.
A evaluation test sample on Microprocessors course
The ASM problems:
1. Problem L1 - Controlling a LED with one button.
2. Problem L2 – Rolling lights. The “Delay” subroutine.
3. Problem L3 - Assessment of conditional expressions.
4. Problem L4 - Processing of arrays in ASM
5. Problem L5 - 4x4 Keypad
6. Problem L6 - Dynamic display on LED Display 8x7seg.
7. Problem of L7 - PWM Generator controlled through ADC
As references of this course were taken: university lecture notes of courses on "Microprocessors" and "Microsystems", information from similar blogs. However, the best source of inspiration still remains the technical documentation (Datasheet) and Appnotes from Atmel company.
Looking forward for expressing your interest by adding the course comments.
Enjoy your reading...