Programming and Customizing the AVR Microcontroller