C programming concepts
Describe the purpose of the compiler and linker
Describe the contents of files with extensions such as .c, .h, .a, and .hex
Define the purpose of a C function declarations and definitions, and give and example of each.
Explain the purpose of C preprocessor directives, such as #include, #ifdef, #ifndef, etc.
Explain the purpose of various C keywords, such as static, extern, and volatile
Use language extensions, such as ISR(INT0_vect), to define interrupt-handling functions.
Declare and initialize C structs
Declare and initialize C pointer variables - including pointers to primitive datatypes (int, char), structs, and functions
Declare and define a C "class" using structs and function pointers
Mixing C and assembly language programming
Describe how the GCC compiler passes subroutine parameters on the stack and in registers.
Describe how the GCC compiler uses registers for passing the return value from a subroutine.
Explain the purpose of the .global directive
Write an assembly function that is capable of being called from C, including receiving arguments (including pointer arguments) in the call via appropriate registers
Explain/demonstrate correct usage of registers in mixing C and Assembly:
R0 not saved by C compiler; R1 always assumed 0 by C compiler; R2-R31 must be saved/restored
Write an assembly function that calls a C function, passing arguments in appropriate registers (including pointer arguments)
Timer/Counter system
Given a specific CPU frequency, scale factor, and Counter register byte-size, calculate how long it takes for the Counter to overflow or reach the Output Compare value.
Configure the Timer/Counter using C instructions and the necessary data sheets for the Timer/Counter subsystem
Write a C-language ISR for handling T/C interrupts.
USART system
Given specific parameters for baud rate, number of data bits, etc, configure the USART using C instructions and the necessary data sheets for the USART subsystem
Write a C-language function for sending or receiving data using the USART