/***********************************************************************************************************************
* 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_main.c
* Version      : CodeGenerator for RL78/F13 V2.03.07.02 [08 Nov 2021]
* Device(s)    : R5F10BBG
* Tool-Chain   : CCRL
* Description  : This file implements main function.
* Creation Date: 2023-07-10
***********************************************************************************************************************/

/***********************************************************************************************************************
Includes
***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_adc.h"
#include "r_cg_timer.h"
/* Start user code for include. Do not edit comment generated here */
#include "r_rl78_can_drv.h"
#include "r_rl78_can_sfr.h"
#include "RL78_RCAN.h"
#include "appTask.h"
#include "can_user.h"
#include "extern.h"
#include "PINdef.h"
#include "hwCtrl.h"
/* 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
***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
#pragma section bss KAM_SEG
	KamData_t KamData;
#pragma section

unsigned int delay_count;
/* End user code. Do not edit comment generated here */
void R_MAIN_UserInit(void);

/***********************************************************************************************************************
* Function Name: main
* Description  : This function implements main function.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void main(void)
{
    R_MAIN_UserInit();
    /* Start user code. Do not edit comment generated here */
    //ADCE = 1U;  //ADM0寄存器，1时允许A/D电压比较器的运行
    
    /*
    POWER_UP_DELAY_CNT=POWER_UP_DELAY_TIME;  //压缩机和鼓风机的启动延时
    POWER_UP_STATUS=1;
    EEL_READ(); //读取数据闪存
    R_TAU0_Channel0_Start();
    R_TAU0_Channel2_Start(); 
    
    TB9102_Enable=1;
    TB9102_MODE=1;
    RecFreSetOld=0xff;  //初始化循环电机的旧�?
    ModeSetOld=0xff;
    TempSetOld=0xff;
    Can_Msg_Change_1(); //can信息初始�?
    */
    /*
    R_TAU0_Channel0_Start();//timer


    
    
    C0CTRH &= ~0x0300;		  // 设置正常模式
	TransmitCAN_Message(0x7FB,8,KamData.RspData); //诊断信息发�?
    
    C0CTRH &= ~0x0300; // 设置正常模式
	
        
    
    */
    if(KamData.AckReq == ACK_REQ)
    {
        //FlgTemp = 1;
        C0CTRH &= ~0x0300;		  // 设置正常模式
		TransmitCAN_Message(CANTP_RESP_CANID,8,KamData.RspData); //诊断信息发�?
    }
    value_init();
    while (1U)
    {
        R_WDT_Restart();
	    Apply_task();
    }
    /* End user code. Do not edit comment generated here */
}

/***********************************************************************************************************************
* Function Name: R_MAIN_UserInit
* Description  : This function adds user code before implementing main function.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void R_MAIN_UserInit(void)
{
    /* Start user code. Do not edit comment generated here */
    //hdwinit();
    
    DID_data_save_init();  //诊断
    InitDcm_Parameter();
    InitCanTp_Parameter();
    CAN_Pin_init();
    CAN_TX_MESSAGE_INIT();
    CanNwInit();//重要！相关顺序说明：CanNwInit(); 必须在CanUserInit(); 前面初始化，否则CAN接收不到报文
    R_TAU0_Channel0_Start();
    CAN_STB = 0;
    CanUserInit();

    R_ADC_Set_OperationOn();
    R_ADC_Start();
    R_TAU0_Channel1_Start();

    //C0CTRHH = 0x03;     	//初始化默认设置成监听模式
    //C0CTRLL = 0x00;
    
    EI();
    /* End user code. Do not edit comment generated here */
}

/* Start user code for adding. Do not edit comment generated here */
void CAN_Pin_init(void)
{
    PM1_bit.no0 = 0;
    P1_bit.no0 = 1;
    PM1_bit.no1 = 1;
}

void test()
{
	
}

/***********************************************************************************************************************
* Function Name: Vectors_Isr_DefaultHandler
* Description  : This function is not used default interrupt service routine.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/

void __near Vectors_Isr_DefaultHandler (void)
{
    /*disable interrupts*/
   // __DI();

    /* halt system or wait for watchdog reset*/
   // while(1)
    {
        __nop();
    }
}
/* End user code. Do not edit comment generated here */
