You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

158 lines
8.2 KiB

2 days ago
/***********************************************************************************************************************
* 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
*
* Copyright (C) 2012, 2021 Renesas Electronics Corporation. All rights reserved.
***********************************************************************************************************************/
/***********************************************************************************************************************
* File Name : r_cg_timer.c
* Version : CodeGenerator for RL78/F14 V2.03.07.02 [08 Nov 2021]
* Device(s) : R5F10PPJ
* Tool-Chain : CCRL
* Description : This file implements device driver for TAU module.
* Creation Date: 2026-08-03
***********************************************************************************************************************/
/***********************************************************************************************************************
Includes
***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_timer.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"
/***********************************************************************************************************************
Pragma directive
***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
/***********************************************************************************************************************
Global variables and functions
***********************************************************************************************************************/
/* For TAU1_ch5 pulse measurement */
extern volatile uint32_t g_tau1_ch5_width;
/* Start user code for global. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
/***********************************************************************************************************************
* Function Name: R_TAU1_Create
* Description : This function initializes the TAU1 module.
* Arguments : None
* Return Value : None
***********************************************************************************************************************/
void R_TAU1_Create(void)
{
TAU1EN = 1U; /* supplies input clock */
TPS1 = _0000_TAU_CKM0_FCLK_0 | _0000_TAU_CKM1_FCLK_0 | _0000_TAU_CKM2_FCLK_0 | _0000_TAU_CKM3_FCLK_0;
/* Stop all channels */
TT1 = _0001_TAU_CH0_STOP_TRG_ON | _0002_TAU_CH1_STOP_TRG_ON | _0004_TAU_CH2_STOP_TRG_ON |
_0008_TAU_CH3_STOP_TRG_ON | _0010_TAU_CH4_STOP_TRG_ON | _0020_TAU_CH5_STOP_TRG_ON |
_0040_TAU_CH6_STOP_TRG_ON | _0080_TAU_CH7_STOP_TRG_ON | _0200_TAU_CH1_H8_STOP_TRG_ON |
_0800_TAU_CH3_H8_STOP_TRG_ON;
PWMDLY2 = _0000_TAU_PWM_DELAY_CLEAR; /* clear PWM output delay */
/* Mask channel 0 interrupt */
TMMK10 = 1U; /* disable INTTM10 interrupt */
TMIF10 = 0U; /* clear INTTM10 interrupt flag */
/* Mask channel 1 interrupt */
TMMK11 = 1U; /* disable INTTM11 interrupt */
TMIF11 = 0U; /* clear INTTM11 interrupt flag */
/* Mask channel 1 higher 8 bits interrupt */
TMMK11H = 1U; /* disable INTTM11H interrupt */
TMIF11H = 0U; /* clear INTTM11H interrupt flag */
/* Mask channel 2 interrupt */
TMMK12 = 1U; /* disable INTTM12 interrupt */
TMIF12 = 0U; /* clear INTTM12 interrupt flag */
/* Mask channel 3 interrupt */
TMMK13 = 1U; /* disable INTTM13 interrupt */
TMIF13 = 0U; /* clear INTTM13 interrupt flag */
/* Mask channel 3 higher 8 bits interrupt */
TMMK13H = 1U; /* disable INTTM13H interrupt */
TMIF13H = 0U; /* clear INTTM13H interrupt flag */
/* Mask channel 4 interrupt */
TMMK14 = 1U; /* disable INTTM14 interrupt */
TMIF14 = 0U; /* clear INTTM14 interrupt flag */
/* Mask channel 5 interrupt */
TMMK15 = 1U; /* disable INTTM15 interrupt */
TMIF15 = 0U; /* clear INTTM15 interrupt flag */
/* Mask channel 6 interrupt */
TMMK16 = 1U; /* disable INTTM16 interrupt */
TMIF16 = 0U; /* clear INTTM16 interrupt flag */
/* Mask channel 7 interrupt */
TMMK17 = 1U; /* disable INTTM17 interrupt */
TMIF17 = 0U; /* clear INTTM17 interrupt flag */
/* Set INTTM15 low priority */
TMPR115 = 1U;
TMPR015 = 1U;
/* Channel 5 is used to measure input pulse interval */
TMR15 = _0000_TAU_CLOCK_SELECT_CKM0 | _0000_TAU_CLOCK_MODE_CKS | _0000_TAU_COMBINATION_SLAVE |
_0100_TAU_TRIGGER_TIMN_VALID | _0080_TAU_TIMN_EDGE_BOTH_LOW | _0004_TAU_MODE_CAPTURE |
_0000_TAU_START_INT_UNUSED;
TOM1 &= ~_0020_TAU_CH5_OUTPUT_COMBIN;
TOL1 &= ~_0020_TAU_CH5_OUTPUT_LEVEL_L;
TO1 &= ~_0020_TAU_CH5_OUTPUT_VALUE_1;
TOE1 &= ~_0020_TAU_CH5_OUTPUT_ENABLE;
NFEN2 &= (uint8_t)~_20_TAU_CH5_NOISE_ON; /* disable using noise filter of TI15 pin input signal */
/* Set TI15 pin */
PIM7 &= 0xFEU;
PMC7 &= 0xFEU;
PM7 |= 0x01U;
}
/***********************************************************************************************************************
* Function Name: R_TAU1_Channel5_Start
* Description : This function starts TAU1 channel 5 counter.
* Arguments : None
* Return Value : None
***********************************************************************************************************************/
void R_TAU1_Channel5_Start(void)
{
TMIF15 = 0U; /* clear INTTM15 interrupt flag */
TMMK15 = 0U; /* enable INTTM15 interrupt */
TS1 |= _0020_TAU_CH5_START_TRG_ON;
}
/***********************************************************************************************************************
* Function Name: R_TAU1_Channel5_Stop
* Description : This function stops TAU1 channel 5 counter.
* Arguments : None
* Return Value : None
***********************************************************************************************************************/
void R_TAU1_Channel5_Stop(void)
{
TT1 |= _0020_TAU_CH5_STOP_TRG_ON;
/* Mask channel 5 interrupt */
TMMK15 = 1U; /* disable INTTM15 interrupt */
TMIF15 = 0U; /* clear INTTM15 interrupt flag */
}
/***********************************************************************************************************************
* Function Name: R_TAU1_Channel5_Get_PulseWidth
* Description : This function measures TAU1 channel 5 input pulse width.
* Arguments : width -
* the address where to write the input pulse width
* Return Value : None
***********************************************************************************************************************/
void R_TAU1_Channel5_Get_PulseWidth(uint32_t * const width)
{
/* For channel 5 pulse measurement */
*width = g_tau1_ch5_width;
}
/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */