Modo de suspensión profunda Ahorro de datos en PIC18

Estoy usando un microcontrolador PIC 18F46J50 y el compilador C18.

Quiero conservar algunos datos cuando el controlador sale del modo de suspensión profunda. Encontré dos registros DSGPR0y DSGPR1para guardar contexto, pero parece que solo hay dos bytes disponibles allí.

Si quisiera ahorrar más bytes, ¿cuáles son mis opciones?

Agradecería sugerencias que sean posibles con la familia PIC de 8 bits.

Respuestas (2)

Para guardar más datos que 2 bytes en un sueño profundo:

  1. Rediseñe la aplicación para que requiera solo dos bytes (16 bits) en el modo de suspensión profunda.

  2. Use una RAM CMOS externa respaldada por batería. Estos consumen muy poca energía cuando están en espera, pero aún conservan su contenido. Una pequeña pila tipo moneda puede mantener vivo el contenido durante años.

  3. Utilice una EEPROM externa. Se puede apagar por completo en el modo de suspensión profunda, pero esto solo se puede hacer una cantidad finita de veces. Si este dispositivo se activa cada segundo durante unos pocos ms, esto no es apropiado. Si se despierta cada hora, esto podría funcionar.

  4. No uses el sueño profundo. El sueño regular sigue siendo un consumo de energía muy bajo. Detiene los relojes, pero no apaga completamente la memoria RAM.

En el apartado 3.6.1 de la ficha técnica 18F46J50 se escribe lo siguiente:

Debido a que VDDCORE podría caer por debajo del voltaje de retención de SRAM mientras está en modo de suspensión profunda, los datos de SRAM podrían perderse en suspensión profunda. Salir del modo de suspensión profunda provoca un POR; como resultado, la mayoría de los registros de funciones especiales se restablecerán a sus valores POR predeterminados

Por lo tanto, deberá guardar los datos utilizando la capacidad de autoescritura flash del PIC o en un chip externo SRAM o EEPROM/flash. Excepto los dos registros que menciona en la pregunta, no hay una forma confiable de almacenar datos en la RAM PIC interna. Si elige un chip externo, obviamente deberá prestar atención a sus requisitos de energía.

Dependiendo de la razón por la que elija la suspensión profunda, es posible que pueda encontrar una pieza de flash SPI de baja potencia adecuada. Cualquier chip externo no volátil podría tener su poder controlado por su PIC, por ejemplo, usando un FET o LDO con control de habilitación. Puede encenderlo para guardar el estado antes de dormir y restaurar el estado al despertar, solo asegúrese de darle suficiente tiempo para completar la escritura antes de apagarlo nuevamente.