COMP22712: Microcontrollers (2010-2011)
This course aims to familiarise students with the use of microprocessors/microcontrollers for simple control and interfacing applications. The course aims to develop the understanding of the programming and operation of the ARM processor introduced in COMP15111 to include modular program construction, separation of user and operating system tasks and interfacing techniques at the hardware and software levels.
This course builds upon the understanding of processor operation and assembler programming introduced in COMP15111 and upon the logic design in introduced in COMP12111 to show how hardware and software interact in the solution of interfacing problems.
This module currently runs as a first year CSE course or a second year CS course. There is some variation towards the end of the module to accommodate different backgrounds.
|Programme outcome||Unit learning outcomes||Assessment|
|A3||Appreciate the function and need for an operating system.|
|B2 C5 C6 D5||Be competent in assembler programming.|
|A2 A3||Know when and how to use interrupts.|
|B2 B3 C5 D4||Have experienced a wide variety of interfaces and interface techniques.|
|A3 B3||Understand the hardware-software interface and the implementation trade-offs around this boundary.|
Basic Interfacing 
Parallel I/O 
Procedure calls, Nesting & Stacking 
System calls, Privilege levels, Initialisation 
Real-time operation, User interaction 
Introduction to Verilog /System design 
System design /Project 
Core TextTitle: ARM Assembly Language: fundamentals and techniques (2nd edition)
Author: Hohl, William and Christopher Hinds
Publisher: CRC Press
Supplementary TextTitle: ARM system developer's guide: designing and optimizing system software
Author: Sloss, Andrew and Dominic Symes and Chris Wright
Not for the faint-hearted! A 'professional' level book for those who wish to squeeze the best out of an ARM core.
Supplementary TextTitle: ARM Assembly Language: an introduction
Author: Gibson, J. R.
A reasonably priced introduction to ARM assembly code.