/******************************************************************************* * DISCLAIMER * This software is supplied by Renesas Electronics Corporation and is only * intended for use with Renesas products. No other uses are authorized. This * software is owned by Renesas Electronics Corporation and is protected under * all applicable laws, including copyright laws. * THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING * THIS SOFTWARE, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING BUT NOT * LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NON-INFRINGEMENT. ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED. * TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY LAW, NEITHER RENESAS * ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE * FOR ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR * ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR ITS AFFILIATES HAVE * BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. * Renesas reserves the right, without notice, to make changes to this software * and to discontinue the availability of this software. By using this software, * you agree to the additional terms and conditions found by accessing the * following link: * http://www.renesas.com/disclaimer * (c) 2014 Renesas Electronics Corporation All rights reserved. *******************************************************************************/ /****************************************************************************** * File Name : r_main.c * Version : 1.0 * Device(s) : R7F701007 RH850/F1L * Tool-Chain : IAR Embedded Workbench 1.30.1 * Description : This file is a sample of the peripheral function. * Operation : 1. Compile and download the sample code. Click 'Reset Go' * : to start the software. ******************************************************************************* ******************************************************************************* * History : DD.MM.YYYY Version Description * : 20.03.2014 1.00 First Release ******************************************************************************/ /****************************************************************************** Includes ******************************************************************************/ #include "r_typedefs.h" #include "iodefine.h" #ifdef __ghs__ #include "device.h" #endif #ifdef __IAR_SYSTEMS_ICC__ #include #endif /****************************************************************************** Imported global variables and functions (from other files) ******************************************************************************/ extern void R_LPS_Init( void ); extern void R_LPS_Start( void ); extern void shift_deep_stop( void ); extern void R_TAUJ_Init( void ); extern void R_TAUJ_Start( void ); /****************************************************************************** Macro definitions ******************************************************************************/ //#define _RUNMODE_LPS_ #define _DEEPSTOPMODE_LPS_ #define RESF_DEEP_RESET ( 0x00000400UL ) #define RESF_POWER_ON ( 0x00000200UL ) #define RESF_EXT_RESET ( 0x00000100UL ) #define RESF_CVM_RESET ( 0x00000080UL ) #define RESF_LVI_RESET ( 0x00000040UL ) #define RESF_CLMA2_RESET ( 0x00000020UL ) #define RESF_CLMA1_RESET ( 0x00000010UL ) #define RESF_CLMA0_RESET ( 0x00000008UL ) #define RESF_WDTA1_RESET ( 0x00000004UL ) #define RESF_WDTA0_RESET ( 0x00000002UL ) #define RESF_SOFT_RESET ( 0x00000001UL ) /****************************************************************************** Exported global variables and functions (to be accessed by other files) ******************************************************************************/ /****************************************************************************** Private global variables and functions ******************************************************************************/ void main( void ); static void check_reset_factor( void ); /****************************************************************************** * Function Name : void main( void ) * Description : This function is sample main processing. * Argument : none * Return Value : none ******************************************************************************/ void main( void ) { PMC0 &= 0x9FFFU; /* for Debug */ PM0 &= 0x9FFFU; P0 |= 0x4000U; /* P0_14:CN2C-72pin */ P0 &= 0xdFFFU; /* P0_13:CN2C-71pin */ check_reset_factor(); /* Check the reset factor */ R_LPS_Init(); /* LPS initialize */ R_TAUJ_Init(); /* TAUJ initialize */ R_TAUJ_Start(); /* Start TAUJ (ch.0) */ R_LPS_Start(); /* LPS enable (Digital input mode) */ #ifdef _RUNMODE_LPS_ __EI(); #endif #ifdef _DEEPSTOPMODE_LPS_ shift_deep_stop(); /* DEEPSTOP mode */ #endif while ( 1U ) { /* */ } } /****************************************************************************** * Function Name : static void check_reset_factor( void ) * Description : This function check the reset factor. * Argument : none * Return Value : none ******************************************************************************/ static void check_reset_factor( void ) { uint32_t reg_resf_value; uint32_t reg_resfr_value; uint32_t reg32_value; /* Read reset factor */ reg_resf_value = RESF; reg_resfr_value = RESFR; /* Clear reset factor */ RESFC = reg_resf_value; RESFCR = reg_resfr_value; if ( reg_resf_value == reg_resfr_value ) { if ( reg_resf_value & RESF_DEEP_RESET ) /* DEEPSTOP reset */ { /* Set the port of the ISO domain again. */ /* Unused by the sample program. */ /* Set the peripheral function of the ISO domain again. */ /* Unused by the sample program. */ /* Release a keeping state of the input and output terminal. IOHOLD - I/O Buffer Hold Control Register b31:b1 - Reserved set to 0 b 0 IOHOLD - hold state of the I/O buffer in DEEPSTOP mode. Set to 0 */ do { reg32_value = 0x00000000UL; PROTCMD0 = 0x000000A5UL; /* Protection release the IOHOLD register. */ IOHOLD = reg32_value; IOHOLD = ~reg32_value; IOHOLD = reg32_value; } while ( PROTS0 != 0x00000000UL ); /* Check wakeup factor 1. (WUTRG0) */ if ( (WUF0 & (~WUFMSK0)) == 0x00080000UL ) { /* Eenable by the peripheral function of the ISO domain. */ /* Unused by the sample program. */ /* Disable by the detection of wakeup factor 1. */ WUFMSK0 = 0xFFFFFFFFUL; /* Disable wakeup factor 1 */ WUFC0 = 0xFFFFFFFFUL; /* Clear wakeup factor 1 */ if ( (EVFR & 0x00000001UL) == 0x00000001UL) { R_LPS_Stop(); /* LPS stop */ } else { /* Do Nothing */ } } else { /* Do Nothing */ } } if ( reg_resf_value & RESF_POWER_ON ) /* Power On reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_EXT_RESET ) /* External reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_CVM_RESET ) /* CVM reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_LVI_RESET ) /* LVI reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_CLMA2_RESET ) /* CLMA2 reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_CLMA1_RESET ) /* CLMA1 reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_CLMA0_RESET ) /* CLMA0 reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_WDTA1_RESET ) /* WDTA1 reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_WDTA0_RESET ) /* WDTA0 reset */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } if ( reg_resf_value & RESF_SOFT_RESET ) /* Software reset. */ { /* Unused by the sample program. */ } else { /* Do Nothing */ } } else { /* Error */ } }