Tengo una placa Arduino ATMega328 personalizada que generalmente funciona a 5V @ 8MHz (usando el perfil Arduino Pro 3.3V 8MHz y el gestor de arranque). La razón principal por la que estoy usando esta configuración es para poder poner la placa en reposo cuando se desconecta la alimentación principal y comienza a funcionar sin batería (3V desde una celda de moneda). Las fuentes de 5V y 3V tienen diodos OR 'juntos y la entrada de 5V está vinculada a INT0. En el código, cuando detecta que INT0 se ha reducido, inicializa el modo de suspensión y todo se apaga con la excepción del temporizador de vigilancia que mantiene un ciclo de 1Hz para mantener un recuento interno y verificar que el chip debe volver a activarse. Esto funciona de maravilla cuando primero se aplica alimentación de 5 V, luego se inserta la batería y luego5V está desconectado. Se va a dormir y cuando se recuperan los 5V, se despierta y puedo ver que no ha perdido la cuenta.
Sin embargo, el problema surge cuando primero se aplica 3V . Honestamente, no estoy seguro de si incluso está arrancando. Pero lo que se supone que debe hacer es arrancar, verificar si INT0 (Digital 2) está bajo y, de ser así, ir directamente a dormir. Al observar el consumo de corriente, veo que se alimenta a unos pocos mA durante un par de segundos, luego cae a aproximadamente 0.3 mA (aún más de lo que debería estar en modo de suspensión). Pero cuando vuelvo a aplicar 5V, nada . El consumo de energía vuelve a subir pero no responde (sobre FTDI en serie).
¿Tal vez hay algo que me falta que no se puede iniciar en 3V ... en teoría debería funcionar bien.
Actualización: dejé caer un LED en D13 y probé el boceto parpadeante. Funciona bien cuando se inicia desde 3V o 5V. Sin embargo, cuando ejecuto mi firmware y lo inicio desde 3V, el LED simplemente comienza a parpadear salvajemente. No tengo idea de qué lo está causando, ya que nunca configuré D13 como algo en mi código. Pero me hace pensar que tiene algo que ver con el gestor de arranque ...