Hi! I'm trying to get a basic example to show the 9160 going into the System Off mode and then waking up when a button is pressed. However I have not been able to get the button to pull the chip out of the Off state.
My example looks like this currently
#include <zephyr.h>
#include <drivers/gpio.h>
#include <device.h>
#include <hal/nrf_gpio.h>
#include <hal/nrf_power.h>
#include <hal/nrf_regulators.h>
#define BUTTON_PIN 26
#define RED_LED 12
#define GREEN_LED 13
static struct device *dev;
void setup_io(void) {
dev = device_get_binding("GPIO_0");
// Configure both LED's as outputs
gpio_pin_configure(dev, RED_LED, GPIO_OUTPUT_INACTIVE | GPIO_ACTIVE_LOW | GPIO_PULL_UP);
gpio_pin_configure(dev, GREEN_LED, GPIO_OUTPUT_INACTIVE | GPIO_ACTIVE_LOW | GPIO_PULL_UP);
}
void main(void) {
setup_io();
uint32_t rr = nrf_power_resetreas_get(NRF_POWER_NS);
if (rr & NRF_POWER_RESETREAS_OFF_MASK) {
nrf_power_resetreas_clear(NRF_POWER_NS, 0x70017);
gpio_pin_set(dev, GREEN_LED, 1);
} else {
gpio_pin_set(dev, RED_LED, 1);
}
k_sleep(K_MSEC(2000));
gpio_pin_set(dev, GREEN_LED, 0);
gpio_pin_set(dev, RED_LED, 0);
nrf_gpio_cfg_input(BUTTON_PIN, NRF_GPIO_PIN_PULLUP);
nrf_gpio_cfg_sense_set(BUTTON_PIN, NRF_GPIO_PIN_SENSE_LOW);
//
nrf_regulators_system_off(NRF_REGULATORS_NS);
}
The prj.conf looks like this:
CONFIG_HEAP_MEM_POOL_SIZE=16384 CONFIG_SERIAL=n CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n CONFIG_LOG=n CONFIG_LOG_BACKEND_UART=n
and the SPM prj.conf looks like this:
CONFIG_IS_SPM=y CONFIG_FW_INFO=y CONFIG_GPIO=n CONFIG_SPM_NRF_REGULATORS_NS=y CONFIG_SERIAL=n CONFIG_CONSOLE=n CONFIG_UART_CONSOLE=n CONFIG_LOG=n CONFIG_LOG_BACKEND_UART=n
Does anyone have any experience with getting this to work and could they point out what I'm missing?
Thank you so much!