Jump to main content

# 1.24 RSTC Reset Cause

This example shows how to use the RSTC peripheral to indicate the cause of the device reset.

## Description

The Reset Controller collects the various reset sources and generates reset for the device and allows the reset source to be identified by the software.

- Power On Reset: The device contains a power-on-reset (POR) detector, which keeps the system reset until power is stable. This eliminates the need for external reset circuitry to guarantee stable operation when powering up the device.
- VDDCORE Brown Out Reset: BOD12 will reset the device if a voltage of 1.2V or below is observed on the I/O pin supplying power to the MCU core (VDDCORE).
- VDDANA Brown Out Reset: BOD33 resets the device if the voltage on the VDDANA pin falls below a value configured by the SYSCTRL.
- Watchdog Reset: The watchdog reset occurs when it times out.
- System Reset: The System Reset Request is a software reset generated by the CPU when asserting the SYSRESETREQ bit located in the Reset Control register of the CPU.
- External Reset: A external reset is generated when a low level is detected on the RESET pin.

This example application uses the RSTC peripheral to indicate the user Reset and the Watchdog reset. The WDT reset is emulated by not feeding the watchdog on switch press.

## Downloading and Building the Application

To clone or download this application from Github, go to the main page of this repository and then click Clone button to clone this repository or download as zip file. This content can also be downloaded using content manager by following these instructions.

Path of the application within the repository is apps/rstc/rstc_reset_cause.

To build the application, refer to the following table and open the project using its IDE.

Project Name | Description
--- | ---
sam_a7d65_curiosity.X | MPLABX project for SAMA7D65 Curiosity Board
sam_a7d65_curiosity_pro.X | MPLABX project for SAMA7D65 Curiosity Pro Board

## Setting Up AT91Bootstrap Loader

To load the application binary onto the target device, we need to use at91bootstrap loader. Refer to the at91bootstrap loader documentation for details on how to configure, build and run bootstrap loader project and use it to bootstrap the application binaries.

## Setting Up the Hardware

The following table shows the target hardware for the application projects.

Project Name | Description
--- | ---
sam_a7d65_curiosity.X | SAMA7D65 Curiosity Board
sam_a7d65_curiosity_pro.X | SAMA7D65 Curiosity Pro Board

### Setting Up SAMA7D65 Curiosity Board

Additional hardware required:

- SD card with FAT32 file system

Setting up the SD card:

- Download harmony MPU bootstrap loader
- Copy the downloaded boot loader binary( boot.bin) onto the SD card

Setting up the board:

- SDMMC slot used for bootloading the application is SDMMC1 (J10)
- Connect the USBA port J3 on the board to the computer using a Type-C USB cable (to power the board)
- Connect the UART Debug port (J35) on the board to the computer using a FTDI-USB cable

#### Setting Up SAMA7D65 Curiosity Pro Board

Additional hardware required:

- SD card with FAT32 file system

Setting up the SD card:

- Download harmony MPU bootstrap loader
- Copy the downloaded boot loader binary( boot.bin) onto the SD card

Setting up the board:

- SDMMC slot used for bootloading the application is MicroSD (J42)
- Connect the USBA port J1 on the board to the computer using a Type-C USB cable (to power the board)
- Connect the UART Debug port (J63) on the board to the computer using a FTDI-USB cable

## Running the Application

1. Open the Terminal application (Ex.: Tera term) on the computer.
2. Copy the output binary (named harmony.bin) onto the SD Card (Refer to the Setting up hardware section above for setting up the SD card).
3. Insert the SD card into SDMMC slot on the board.
4. Connect to the Virtual COM port and configure the serial settings as follows:
   - Baud: 115200
   - Data: 8 Bits
   - Parity: None
   - Stop: 1 Bit
   - Flow Control: None
5. Build and program the application using its IDE.
6. RGB LED toggles in green color and console displays the following message.
   Note: The cause for last reset will differ based on initial user action and is blanked out to avoid confusion.
7. Press USER Switch to stop petting the watchdog.
8. RGB LED to should start toggling in blue color and the console display should be updated as follows.
9. After a few seconds board will reset and the demo will start again (RGB LED toggles in Green color).
10. Console shall display watchdog as the cause of reset.
    Note: Application and bootloader shares the same console. Since bootloader messages are not relevant to the application,they are not shown here.
11. Press RESET Switch switch to reset the board. Board will reset immediately and demo will start again (RGB LED toggles in Green color).
12. Console displays user as the cause of reset.

Refer to the following table for Switch names:

Board | USER | RESET | LED
--- | --- | --- | ---
SAMA7D65 Curiosity Board | SW2 | SW4 | RGB LED
SAMA7D65 Curiosity Pro Board | SW3 | SW4 | RGB LED

Rev: C