¿Cómo se programa un modo de suspensión para su Arduino? Especialmente para diseños con batería, ¿cuáles son buenas técnicas para dormir la CPU pero despertarse solo cuando sea necesario?
¿Cómo se programa un modo de suspensión para su Arduino? Especialmente para diseños con batería, ¿cuáles son buenas técnicas para dormir la CPU pero despertarse solo cuando sea necesario?
Respuestas:
avr / sleep.h puede tener lo que necesita: la documentación está en http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html
Sin embargo, hay algunas advertencias sobre la suspensión de la CPU :)
Espero que esto ayude.
tenga en cuenta que, dependiendo de su modo de suspensión, hay un par de fuentes de interrupción en su arduino. timer0 genera una interrupción por desbordamiento que despertará a tu arduino aproximadamente cada milisegundo y el uart generará una interrupción cada vez que haya un personaje entrante. ... y, por supuesto, hay interrupciones externas en los pines 2 y 3 que puede haber habilitado o no con la función attachInterrupt.
Cuando se produce una interrupción, su boceto se despertará del sueño y, una vez que se haya realizado el mantenimiento de la interrupción, continuará ejecutándose desde el punto donde se fue a dormir. La solución a esto es configurar su boceto para que se vuelva a dormir cada vez a través del bucle, a menos que sea realmente el momento de despertarse.
aquí, mi biblioteca de sueño arduino