Timer Watchdog

The Watchdog Timer sample demonstrates how to configure a PMIC TIMER peripheral in the Watchdog Timer mode with the use of npmx drivers.

Requirements

The sample supports the following development kits:

Hardware platforms

PCA

Board name

Build target

nRF5340 DK

PCA10095

nrf5340dk_nrf5340

nrf5340dk_nrf5340_cpuapp

nRF52840 DK

PCA10056

nrf52840dk_nrf52840

nrf52840dk_nrf52840

The sample also requires an nPM1300 EK.

Overview

This sample uses the Timer driver to do the following:

  • Enter and configure the TIMER peripheral in the Timer Watchdog mode.

  • Register a handler to be called when the WATCHDOG event occurs.

  • Kick the watchdog in a loop until any keyboard button is pressed.

The TIMER peripheral is configured to generate a watchdog warning interrupt ~500 ms after any keyboard button is pressed.

Wiring

  1. Connect the TWI interface between the chosen DK and the nPM1300 EK as in the following table:

    nPM1300 EK connections.

    nPM1300 EK pins

    nRF5340 DK pins

    nRF52840 DK pins

    GPIO0

    P1.10

    P1.10

    GPIO1

    P1.11

    P1.11

    SDA

    P1.02

    P0.26

    SCL

    P1.03

    P0.27

    VOUT2 & GND

    External supply (P21)

    External supply (P21)

  2. Make the following connections on the chosen DK:

    • Set the SW9 nRF power source switch to VDD.

    • Set the SW10 VEXT → nRF switch to ON.

  3. Make the following connections on the nPM1300 EK:

    • On the P18 pin header, connect VOUT2 and VDDIO pins with a jumper.

    • On the P17 pin header, connect all LEDs with jumpers.

    • On the P13 pin header, connect VSET1 and GND pins with a jumper.

    • On the P14 pin header, connect VSET2 and RSET2 pins with a jumper.

    • Connect a USB power supply to the J3 connector.

Configuration

Check and configure the following sample-specific Kconfig options to specify which testcase you want to run:

CONFIG_TESTCASE_WATCHDOG_MODE_WARNING

This sample configuration enables the warning mode for the watchdog. An interrupt is signaled on the GPIO0 pin. 16 ms after signaling, the GPIO1 pin is set to 0.0 V.

CONFIG_TESTCASE_WATCHDOG_MODE_RESET

This sample configuration enables the reset mode for the watchdog. An interrupt is signaled on the GPIO0 pin. The GPIO1 pin is set to 0.0 V immediately, and the PMIC is restarted.

Building and running

This sample can be found under samples/watchdog in the npmx-zephyr repository folder structure.

To build the sample with zephyr, follow the steps listed on the Building an Application page in Zephyr documentation.

Testing

After programming the sample to your development kit, complete the following steps to test it:

  1. Connect the kit to the computer using a USB cable. The kit is assigned a COM port (Windows) or ttyACM device (Linux), which is visible in the Device Manager.

  2. Connect to the kit with a terminal emulator (for example, PuTTY). See How to connect with PuTTY for the required settings.

  3. Connect a logic analyzer first to the GPIO0 pin and then to the GPIO1 one, and observe the lines state.

  4. Press any keyboard button to stop kicking the watchdog.

The watchdog callback should be generated after ~500 ms. For CONFIG_TESTCASE_WATCHDOG_MODE_WARNING, the GPIO1 pin should be set to 0.0 V within 16 ms after signaling the interrupt on the GPIO0 pin. For CONFIG_TESTCASE_WATCHDOG_MODE_RESET, the GPIO1 pin should be set to 0.0 V immediately after signaling the interrupt on the GPIO0 pin.

Dependencies

This sample uses drivers from npmx.