En este tutorial estoy usando un microcontrolador Attiny85 y quiero un LED a destellar en el intervalo de aproximadamente 1 segundo.
Generalmente con Arduino y otros tutoriales de blink solo usas un retardo de 1 segundo o 1000 milisegundos para encender y apagar. En este tutorial vamos a utilizar una función especial de la MCU que rara vez reciben la atención merecen.
EL PERRO GUARDIÁN
Ahora que deje que el perro le podría decir, y me río... jaja...
El watchdog se utiliza normalmente como medida de seguridad, por si el MCU está en un lugar inalcanzable y cuelga por alguna razón, no tienen forma de resetearlo y haz que vuelva a funcionar. Por lo que el vigilante es una parte casi separada de la MCU, tiene un reloj propio (normalmente un circuito RC) y un prescaler de este reloj, ahora lo que no tiene es una comparación de temporizador o una manera de establecer una sincronización precisa. Hay sólo el desbordamiento.
Ahora para un ATtiny85 hay 10 diferentes configuraciones de escala a utilizar, de 16ms a 8 segundos (véase p.46 ficha técnica para más detalles). Normalmente el watchdog se utiliza para restablecer el MCU pero también se puede definir para ejecutar una interrupción.
En primer lugar, vamos a comenzar con establecer el dispositivo de vigilancia.
Esta es la manera segura de configurarlo, la razón por qué hacer alguna "limpieza" en el principio es para asegurarse de que conseguimos lo que queremos. estática y quién sabe lo que pueden estropear un microcontrolador por lo que es bueno para hacerlo bien, si no desea estar a salvo, todo lo que necesitas es esta línea
Ahora tenemos que configurar el dispositivo de vigilancia y no hacer nada, bueno no realmente, como el perro guardián es una medida de seguridad tiene algunos movimientos intrincados. En este caso le estamos diciendo a que ejecute un ISR cada 500ms (aproximadamente) pero no hemos hecho un ISR para él sin embargo, y como dije esta función tienen algunas formas intrincadas de funcionamiento así que cuando se ejecuta el ISR, el vigilante cambia automáticamente del modo de interrupción para reiniciar modo!!!
A menos que el modo de interrupción se vuelve a activar en el ISR
Por lo tanto, vamos a hacer un ISR blinky
Ahora tenemos un ISR que voltea el LED conectado al PORTB3 enciende y apaga cada 1/2 segundo y vuelve a habilita la interrupción.
¿No era tan fácil?
Aquí está el completo archivo c MrBlinky.