Week 1
Lecture 1
- Explain what an embedded system is.
- Explain the relationship between real-time software and embedded software.
Lecture 2
- Compare and contrast microcontrollers and microprocessors
- Compare and contrast Harvard architectures with Princeton (Von Neumann) architectures
- Identify the key architectural components within the ATmega32 microcontroller
Lecture 3
- Identify the power, ground, and reset pins on a CPU pinout diagram*
- Identify pins which have multiple-purposes on the ATmega32 microcontroller*
- Draw a memory diagram for ATmega32 flash memory
- Explain the purpose for registers
- Explain how and why 8 bit registers may be combined to make 16 bit registers
- Explain the purpose of the status register
- Identify the size and purpose for the General purpose registers within the ATmega32 microcontroller
Week 2
Lecture 1
- Employ the microcontroller status register to solve a simple problem
- Draw the instruction fetch and execute cycle for the ATmega32 part*
- Describe the anatomy of an assembly language statement
Lecture 2
- Demonstrate the behavior of simple assembly language instructions through the use of register transfer notation
- Explain how assembly language instructions are represented in program memory
- Compare and contrast the Program and Data Addressing Modes in terms of:
- Register usage
- Execution cycle counts
Lecture 3
- Explain the workings and purposes for the ATmega assembler
- Explain the purpose of an assembly language directive
- Illustrate the usage of the .device, .def, .equ, .org, and .cseg directives
- Demonstrate four different ways of representing numeric constants in AVR assembly language instructions
- Explain the purpose of the NOP instruction
- Describe the use of each of the three I/O Port control registers
- Explain why a NOP is required prior to reading the PINx register after it has been set using an output value
- Explain why the value read using the PINx register may not match the output value in the PORTx register, even if the output has been configured properly
Week 3
Lecture 1
- Determine the time an instruction will take to execute at a given clock frequency
- Construct a delay loop for an arbitrary time period
- Recall the behavior of the stack data structure
- Explain the purpose for the stack within an assembly language program
- Construct code which will initialize the stack pointer to a given location
- Explain the concept of stack overflow (If time allows)
Lecture 2
- Explain the reasons why subroutines are valuable to an assembly language program.
- Construct a subroutine which performs a specific task
- Compare and contrast the two methods
for passing parameters and returning values from a subroutine and state
the advantages and disadvantages of each method
- Using a register
- Using the stack
- Explain why recursion may result in a stack overflow (If time permits)
Lecture 3
- Explain why recursion may result in stack overflow
- Recognize the key flowcharting symbols used for describing software execution flow
- Differentiate between in-line flowchart steps and calls to other subroutines
- Construct a flowchart representing the assembly language flow through a subroutine
- Write assembly language code from a flowchart describing the behavior of a routine
Week 4
Lecture 1
- Implement a segment of assembly language source code which will cause stack overflow.
- Implement a segment of assembly language source code which will cause stack underflow.
- Design an embedded application which will control the output LEDs through the use of a table lookup.
Lecture 2
- Continue to design an embedded application which will control the output LEDs through the use of a table lookup.
Lecture 3
- Discuss the upcoming exam and catch-up on any outstanding issues.
Week 5
Lecture 1
- Exam One
Lecture 2
- Construct an application in which data is stored in SRAM instead of variables
- Construct a routine to add two 16 bit numbers in Atmega Assembly
- Apply partitioning techniques to place source code into multiple assembly language files
Lecture 3
- Review Exam
- Explain the concept of a device driver
- Demonstrate partitioning using device drivers to control embedded hardware
- Justify the usage of a PortDef.asm file to control assignment of hardware devices to physical devices
- Apply the usage of a configuration file to allow rapid modification of port assignments.
Week 6
Lecture 1
- Explain the workings of the LCD Display
- Compare and Contrast serial and parallel modes of communication
- Explain the concept of a communications bus
- Explain the architecture of the LCD device driver and rationalize the usage for each subroutine
- Explain the concept of a ``smoke test'' for device hardware
- Explain how primitive unit tests can be implemented in a device driver
- Construct a simple program which uses the lcd device driver to display an output on the lcd panel.
Lecture 2
- Explain the concept of analog versus digital signals
- Define transducer and list transducer devices
- List applications whereby A/D conversion might be useful
- Explain the concept of a digital to analog converter
- Explain conceptually the workings of a successive approximation converter
- Define quantization error
Lecture 3
- List the configuration parameters and ports used for A/D conversion
- Demonstrate the usage of the A/D converter to control LED outputs
Week 7
Lecture 1
- Explain the concept of an interrupt
- Compare and contrast polling and interrupts
- List the advantages of polling and interrupts versus the disadvantages
- Explain the sequence of handling an interrupt
- Explain the purpose for the global interrupt enable flag
- Develop a simple ISR based program
- Identify the entries in the Vector table.
Lecture 2
- Explain how to enable and disable interrupts
- Compare and contrast the RETI and RET neumonics
- Critique ISR implementations based on provided guidelines
- Explain the concept of a race condition, and how to protect against race conditions by disabling interrupts
- Review for Exam 2
Lecture 3
- Exam #2
Week 8
Lecture 1
- List the reset sources for the ATMEGA 32
- Justify the need for a delay during power on reset.
- Justify the need for brownout detection.
- Explain the purpose for the watchdog timer.
- Explain the usage of the MCUCSR Register
- Construct source code to configure the watch dog timer.
- Construct source code which will kick the watch dog timer.
Lecture 2
- TBD
Lecture 3
- TBD
Week 9
Lecture 1
- TBD
Lecture 2
- TBD
Lecture 3
- TBD
Week 10
Lecture 1
- TBD
Lecture 2
- TBD
Lecture 3
- TBD