Paso 8:
Yo solía WinAVR compilación y el Programador del USB del bolsillo de Sparkfun para descargar el código en el chip AVR, pero podría utilizar AVR Studio y cualquier programador que está acostumbrado; Asegúrese de modificar el makefile en consecuencia. Los bits del fusible AVR son los valores por defecto.
Operación del programa
Básicamente, la uC espera en reposo hasta que es despertado por una interrupción de hardware del sensor táctil. Entonces enciende los LEDs en un estado bajo. Cuando el sensor se toca otra vez, se cambia el modo de bajo a medio y otra vez a alta después de otro toque. Un toque final de la lámpara se apague las luces y poner el uC para dormir, esperando a ser despertado por el sensor de contacto. Este ciclo se repite indefinidamente.
Dos archivos están en uso. La primera es mi archivo AVR.h personalizado que contiene muchas macros útiles, así como llamar a otros encabezados necesarios. El segundo es el archivo sleep.h que se incluye con WinAVR.
El programa comienza inicializando el chip AVR: Apagar sin usar características, configuración de la entrada-salida puertos, reduciendo la frecuencia de reloj de sistema (para más ahorro de energía), configuración de temporizador 0 122 Hz pulso, permitiendo el pin cambiar interrupción para el sensor de contacto y permite el poder hacia abajo de modo de reposo.
El programa entonces entra en un bucle de siempre que sólo hace una cosa: Compruebe si está activado el sueño. Si está habilitado el sueño, la uC se pone a dormir para esperar en la interrupción de hardware del sensor táctil.
Manejador de solo interrupción se utiliza: cambio del perno del interrupción para el sensor de contacto. Esta rutina comprueba el estado de los LEDs y decide convertirlos, aumentar el brillo (anchura de pulso) o apáguelos en consecuencia en cualquier momento se toca el aparato. También tiene el programa en un bucle hasta que el accesorio no es ser tocado.
El pulso de LED es manejado enteramente por las características de hardware de la uC. Lo único que tiene que hacer en el código es activar o desactivar la salida del temporizador 0 conectada al controlador de LED.