Como você programa um modo de suspensão para o seu Arduino? Especialmente para projetos alimentados por bateria, quais são as boas técnicas para adormecer a CPU e acordar apenas quando necessário?
Como você programa um modo de suspensão para o seu Arduino? Especialmente para projetos alimentados por bateria, quais são as boas técnicas para adormecer a CPU e acordar apenas quando necessário?
Respostas:
avr / sleep.h pode ter o que você precisa - a documentação está em http://www.nongnu.org/avr-libc/user-manual/group__avr__sleep.html
Existem alguns avisos sobre como colocar a CPU no modo de suspensão :)
Espero que isto ajude.
lembre-se de que, dependendo do modo de suspensão, existem algumas fontes de interrupção em execução no seu arduino. timer0 gera uma interrupção de estouro que desperta seu arduino aproximadamente a cada milissegundo e o uart gera uma interrupção toda vez que houver um caractere de entrada. ... e, é claro, existem as interrupções externas nos pinos 2 e 3 que você pode ou não ter habilitado usando a função attachInterrupt.
quando ocorre uma interrupção, seu desenho é despertado do modo de suspensão e após a interrupção ser reparada, ela continua sendo executada a partir do ponto em que foi interrompida. a solução para isso é configurar o sketch para voltar a dormir todas as vezes através do loop, a menos que seja realmente hora de acordar.
aqui, minha biblioteca de sono do arduino