Básicamente, los periféricos (internos) se apagan cuando el AVR se pone en suspensión. Los módulos que se apagan dependen del modo de suspensión en el que ingreses. El tinyx5 tiene tres modos de suspensión: inactivo, reducción de ruido ADC y apagado. A menos que necesite algo para continuar trabajando mientras duerme, sugeriría el "Modo de apagado", que aún permite que el perro guardián funcione si eso es lo que usará para despertarlo.
Todos los módulos internos están controlados por relojes reducidos del reloj de la CPU. Si los relojes de cualquier módulo están apagados, ese módulo dejará de funcionar hasta que el reloj vuelva a encenderse. Teóricamente, estos módulos consumirán una corriente cero cuando se cierren, aunque siempre hay algún nivel de fuga.
Además de los modos de suspensión, hay muchos pasos que puede tomar para asegurarse de que su circuito no consuma mucha energía durante la operación, al menos en lo que respecta al AVR. Aqui hay algunas ideas. Todos estos pasos se describen en la hoja de datos :
- Deshabilite los relojes de módulo no utilizados utilizando el registro PRR
- Apague el comparador analógico: ACSR | = _BV (ACD);
- Nunca deje los pasadores flotantes: use siempre una resistencia desplegable o desplegable.
- Utilice una fuente de alimentación de menor voltaje (Vcc > = 2.7V para tinyx5, 1.8V para tinyx5V)
- Baje el reloj de la CPU cambiando los valores de preescala del reloj en CLKPR
- Desactive el ADC cuando no lo esté usando: ADCSRA & = ~ _BV (ADEN);
- Deshabilite los buffers de entrada digital que no está utilizando con DIDR0
En cuanto a apagar los periféricos externos, puede hacer eso fácilmente con un transistor como usted sugirió. Los pines de E / S son pestillos estáticos que retienen su estado cuando el AVR se pone en suspensión, por lo que podría (en el software) apagarlos antes de irse a dormir y encenderlos cuando se despierte. Le sugiero que utilice un MOSFET de canal N de nivel lógico para conectar / desconectar los dispositivos de su conexión a tierra (conmutación del lado bajo), siempre que el voltaje de umbral de la puerta FET sea un poco más bajo que el voltaje de suministro del AVR para que gire completamente. ON desde un alto rendimiento. El MOSFET no está extrayendo ninguna corriente a través de la compuerta cuando está encendido (una vez que el capacitor de la compuerta se ha cargado) a diferencia de un NPN BJT que continuará consumiendo corriente mientras está encendido. De cualquier manera, debe usar una resistencia de bajada externa (10k o menos) para asegurarse de que el transistor permanezca apagado cuando se supone que está apagado. Esto consumirá un poco de corriente, por lo que se recomienda un debilitamiento débil (5V a 10k es solo 0.5mA, 50uA a 100k).
También puedes usar este truco para apagar los dispositivos externos en cualquier otro momento que no los estés usando; aunque es posible que necesiten un poco de tiempo para volver a activarlo cuando necesites usarlos o, de lo contrario, te darán resultados extraños:
- encender el dispositivo
- Retardo de unos pocos milisegundos (cualquiera que sea el tiempo de inicio recomendado)
- Lee el sensor / transmite datos
- Retardo de unos pocos milisegundos
- apagar dispositivo