Table of Contents

FAQ Index
My program doesn't recognize a variable updated within an interrupt routine
I get "undefined reference to..." for functions like "sin()"
How to permanently bind a variable to a register?
How to modify MCUCR or WDTCR early?
What is all this _BV() stuff about?
Can I use C++ on the AVR?
Shouldn't I initialize all my variables?
Why do some 16-bit timer registers sometimes get trashed?
How do I use a #define'd constant in an asm statement?
Why does the PC randomly jump around when single-stepping through my program in avr-gdb?
How do I trace an assembler file in avr-gdb?
How do I pass an IO port as a parameter to a function?
What registers are used by the C compiler?
How do I put an array of strings completely in ROM?
How to use external RAM?
Which -O flag to use?
How do I relocate code to a fixed address?
My UART is generating nonsense! My ATmega128 keeps crashing! Port F is completely broken!
Why do all my "foo...bar" strings eat up the SRAM?
Why does the compiler compile an 8-bit operation that uses bitwise operators into a 16-bit operation in assembly?
How to detect RAM memory and variable overlap problems?
Is it really impossible to program the ATtinyXX in C?
What is this "clock skew detected" message?
Why are (many) interrupt flags cleared by writing a logical 1?
Why have "programmed" fuses the bit value 0?
Which AVR-specific assembler operators are available?
Why are interrupts re-enabled in the middle of writing the stack pointer?
Why are there five different linker scripts?
How to add a raw binary image to linker output?
How do I perform a software reset of the AVR?
I am using floating point math. Why is the compiled code so big? Why does my code not work?
What pitfalls exist when writing reentrant code?
Why are some addresses of the EEPROM corrupted (usually address zero)?
Why is my baud rate wrong?
On a device with more than 128 KiB of flash, how to make function pointers work?
Why is assigning ports in a "chain" a bad idea?