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 DSGPR0
y DSGPR1
para 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.
Para guardar más datos que 2 bytes en un sueño profundo:
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.