1. Introduction

1.1 Before You Start

Before you start you need to:

  • Install the latest SmartSnippets Studio

  • Download the latest SDK (currently version 10.2.4.42)

These can be downloaded from the Renesas support portal.

Additionally, for this tutorial a Pro Development kit is required.

The key goals of this tutorial are to:

  • Provide a basic understanding of the external interrupt mechanism.

  • Setup a working demonstration handling an external wake up interrupt and taking action.

  • Trigger an OS task execution based on the collected external interruption.

1.2 External interruption

A common requirement of an embedded system is to take an action in respond to an external stimulation either from a sensor or a button press/relase etc. In the low power connectivity devices there will be cases where the device has entered extended sleep mode for power saving while the stimulation is issued. In such cases it is mandatory to wake up the device before the processor is able to respond to the external stimulation. The wake up signal of the processor comes from a dedicated peripheral, called Wake-Up Controller, capable of waking up the system while in extended sleep. The Wake-up Controller can monitor any GPIO pin on the DA1470x chip and can be used to generate an interrupt either to PDC, or the ARM Cortex M33 or the SNC ARM Cortex M0+ while the device is in extended sleep mode. This peripheral consists of two sub blocks:

  • The KEY sub block which involves a debounce circuitry with maximum debouncing time at 63ms.

  • The GPIO sub block which does not involve a debounce circuitry. This block can be programmed to monitor edge or level (positive or negative) sensitive triggers and latch them into a status register so the source is known from the application.

Note

The Wake-Up controller block can also be used while the system is active.

1.3 Working Demonstration

As the Bluetooth low energy framework runs under the supervision of a Real Time Operating System (FreeRTOS), the example in this tutorial demonstrates how to trigger a task execution based on the collected event.

Note

All the source code referenced in this example can be found on Github: Github example