/*********************************************************************************************************************** * 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_user.c * Version : CodeGenerator for RL78/F13 V2.03.07.02 [08 Nov 2021] * Device(s) : R5F10BBG * Tool-Chain : CCRL * Description : This file implements device driver for TAU module. * Creation Date: 2023-08-22 ***********************************************************************************************************************/ /*********************************************************************************************************************** Includes ***********************************************************************************************************************/ #include "r_cg_macrodriver.h" #include "r_cg_timer.h" /* Start user code for include. Do not edit comment generated here */ #include "appTask.h" #include "can_user.h" #include "CanNw.h" /* End user code. Do not edit comment generated here */ #include "r_cg_userdefine.h" /*********************************************************************************************************************** Pragma directive ***********************************************************************************************************************/ //#pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00) //#pragma interrupt r_tau0_channel1_interrupt(vect=INTTM01) //#pragma interrupt r_tau0_channel2_interrupt(vect=INTTM02) /* Start user code for pragma. Do not edit comment generated here */ #if DEBUG #pragma interrupt r_tau0_channel0_interrupt(vect = INTTM00) #pragma interrupt r_tau0_channel1_interrupt(vect = INTTM01) #endif /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** Global variables and functions ***********************************************************************************************************************/ /* Start user code for global. Do not edit comment generated here */ unsigned char Timer_Interrupt; unsigned char iictimeout; /* End user code. Do not edit comment generated here */ /*********************************************************************************************************************** * Function Name: r_tau0_channel0_interrupt * Description : This function is INTTM00 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void __near r_tau0_channel0_interrupt(void) { /* Start user code. Do not edit comment generated here */ Timer_Interrupt=1; Timer_Pro(); /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel1_interrupt * Description : This function is INTTM01 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void __near r_tau0_channel1_interrupt(void) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /*********************************************************************************************************************** * Function Name: r_tau0_channel2_interrupt * Description : This function is INTTM02 interrupt service routine. * Arguments : None * Return Value : None ***********************************************************************************************************************/ void __near r_tau0_channel2_interrupt(void) { /* Start user code. Do not edit comment generated here */ /* End user code. Do not edit comment generated here */ } /* Start user code for adding. Do not edit comment generated here */ void Count_Down_Timer_8Bit(unsigned char *Target_Timer) { if(*Target_Timer>0) (*Target_Timer)--; } void Count_Down_Timer_16Bit(unsigned int *Target_Timer) { if(*Target_Timer>0) (*Target_Timer)--; } void AutoLoad_CountUp_Timer_8Bit(unsigned char *Target_Timer,unsigned int Time_Limit, unsigned char *Count,unsigned char Count_Limit) { if(*Target_Timer!=Time_Limit) (*Target_Timer)++; else { (*Target_Timer)=0; if(*Count!=Count_Limit) (*Count)++; else { *Count=0; } } } void AutoLoad_CountUp_Timer_16Bit(unsigned int *Target_Timer,unsigned int Time_Limit, unsigned char *Count,unsigned char Count_Limit) { if(*Target_Timer!=Time_Limit) (*Target_Timer)++; else { (*Target_Timer)=0; if(*Count!=Count_Limit) (*Count)++; else { *Count=0; } } } void Timer_Pro(void) { static unsigned int Timer_1ms_tick_count; Count_Down_Timer_16Bit(&air_req_timer); Count_Down_Timer_8Bit(&iictimeout); Count_Down_Timer_16Bit(&CAN_LostCount); Count_Down_Timer_16Bit(&uiNwPduCycCnt); Count_Down_Timer_16Bit(&DiagCnt); uiNwTimCnt++; uiNwToutCnt++; //ÍøÂç¹ÜÀí¶¨Ê±Æ÷ if(uiNwRMSCnt > 0) uiNwRMSCnt--; if(uiNwLocWkpOffCnt > 0) { uiNwLocWkpOffCnt--; } if(uiBusOffCnt > 0) uiBusOffCnt--; Timer_1ms_tick_count++; if(Timer_1ms_tick_count%5==0) { Timer_5ms_flag=1; } if(Timer_1ms_tick_count%10==0) { Timer_10ms_flag=1; } if(Timer_1ms_tick_count%20==0) { Timer_20ms_flag=1; } if(Timer_1ms_tick_count%50==0) { Timer_50ms_flag=1; } if(Timer_1ms_tick_count%1000==0) { Timer_1000ms_flag = 1; } if(Timer_1ms_tick_count>=5000) { Timer_1ms_tick_count=0; } Can_1ms_count_alive++; if(BusOff_Detect_delay_count>0) { BusOff_Detect_delay_count--; } if(Timer_Interrupt) { Timer_Interrupt=0; Timer_1ms_flag=1; } } /* End user code. Do not edit comment generated here */