123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894 |
- /***********************************************************************************************************************
- * 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) 2016 Renesas Electronics Corporation. All rights reserved.
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- * File Name : mcu_interrupts.c
- * Description : This module allows for callbacks to be registered for certain interrupts.
- ***********************************************************************************************************************/
- /**********************************************************************************************************************
- * History : DD.MM.YYYY Version Description
- * : 01.10.2016 1.00 First Release
- * : 15.05.2017 2.00 Added callback processing of the following group interrupt sources.
- * - RIIC1_EEI1
- * - RIIC1_TEI1
- * - GLCDC_VPOS
- * - GLCDC_GR1UF
- * - GLCDC_GR2UF
- * - DRW2D_DRW_IRQ
- * Changed calling order of callback function in group interrupts.
- * : 27.07.2018 2.01 Added the comment to for statement.
- * : xx.xx.xxxx 2.02 Added support for GNUC and ICCRX.
- * Removed the wrong comment from for statement.
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Includes <System Includes> , "Project Includes"
- ***********************************************************************************************************************/
- /* Access to r_bsp. */
- #include "platform.h"
- /***********************************************************************************************************************
- Macro definitions
- ***********************************************************************************************************************/
- /* This macro is used to suppress compiler messages about a parameter not being used in a function. The nice thing
- * about using this implementation is that it does not take any extra RAM or ROM.
- */
- #define INTERNAL_NOT_USED(p) ((void)(p))
- /* Let FPSW EV, EO, EZ, EU, EX=1 (FPU exceptions enabled.) */
- #define FPU_EXCEPTIONS_ENABLE (0x00007C00)
- /***********************************************************************************************************************
- Typedef definitions
- ***********************************************************************************************************************/
- /***********************************************************************************************************************
- Exported global variables (to be accessed by other files)
- ***********************************************************************************************************************/
-
- /***********************************************************************************************************************
- Private global variables and functions
- ***********************************************************************************************************************/
- /* This array holds callback functions. */
- static void (* g_bsp_vectors[BSP_INT_SRC_TOTAL_ITEMS])(void * pdata);
- bsp_int_err_t bsp_interrupt_enable_disable(bsp_int_src_t vector, bool enable);
- bsp_int_err_t bsp_interrupt_group_enable_disable(bsp_int_src_t vector, bool enable, uint32_t ipl);
- #ifndef GRROSE
- R_PRAGMA_INTERRUPT(group_bl0_handler_isr, VECT(ICU,GROUPBL0))
- R_PRAGMA_INTERRUPT(group_bl1_handler_isr, VECT(ICU,GROUPBL1))
- #endif
- R_PRAGMA_INTERRUPT(group_bl2_handler_isr, VECT(ICU,GROUPBL2))
- R_PRAGMA_INTERRUPT(group_al0_handler_isr, VECT(ICU,GROUPAL0))
- R_PRAGMA_INTERRUPT(group_al1_handler_isr, VECT(ICU,GROUPAL1))
- /***********************************************************************************************************************
- * Function Name: bsp_interrupt_open
- * Description : Initialize callback function array.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- void bsp_interrupt_open (void)
- {
- uint32_t i;
- for (i = 0; i < BSP_INT_SRC_TOTAL_ITEMS; i++)
- {
- g_bsp_vectors[i] = FIT_NO_FUNC;
- }
- /* Initialize mapped interrupts. */
- bsp_mapped_interrupt_open();
- }
- /***********************************************************************************************************************
- * Function Name: R_BSP_InterruptWrite
- * Description : Registers a callback function for supported interrupts. If FIT_NO_FUNC, NULL, or
- * any other invalid function address is passed for the callback argument then any previously registered
- * callbacks are unregistered. Use of FIT_NO_FUNC is preferred over NULL since access to the address
- * defined by FIT_NO_FUNC will cause a bus error which is easy for the user to catch. NULL typically
- * resolves to 0 which is a valid address on RX MCUs.
- * Arguments : vector -
- * Which interrupt to register a callback for.
- * callback -
- * Pointer to function to call when interrupt occurs.
- * Return Value : BSP_INT_SUCCESS -
- * Callback registered
- * BSP_INT_ERR_INVALID_ARG -
- * Invalid function address input, any previous function has been unregistered
- ***********************************************************************************************************************/
- bsp_int_err_t R_BSP_InterruptWrite (bsp_int_src_t vector, bsp_int_cb_t callback)
- {
- bsp_int_err_t err;
- err = BSP_INT_SUCCESS;
- /* Check for valid address. */
- if (((uint32_t)callback == (uint32_t)NULL) || ((uint32_t)callback == (uint32_t)FIT_NO_FUNC))
- {
- g_bsp_vectors[vector] = FIT_NO_FUNC;
- }
- else
- {
- g_bsp_vectors[vector] = callback;
- }
- return err;
- }
- /***********************************************************************************************************************
- * Function Name: R_BSP_InterruptRead
- * Description : Returns the callback function address for an interrupt.
- * Arguments : vector -
- * Which interrupt to read the callback for.
- * callback -
- * Pointer of where to store callback address.
- * Return Value : BSP_INT_SUCCESS -
- * Callback was registered and address has been stored in 'callback' parameter.
- * BSP_INT_ERR_NO_REGISTERED_CALLBACK -
- * No valid callback has been registered for this interrupt source.
- ***********************************************************************************************************************/
- bsp_int_err_t R_BSP_InterruptRead (bsp_int_src_t vector, bsp_int_cb_t * callback)
- {
- bsp_int_err_t err;
- err = BSP_INT_SUCCESS;
- /* Check for valid address. */
- if (((uint32_t)g_bsp_vectors[vector] == (uint32_t)NULL) || ((uint32_t)g_bsp_vectors[vector] == (uint32_t)FIT_NO_FUNC))
- {
- err = BSP_INT_ERR_NO_REGISTERED_CALLBACK;
- }
- else
- {
- *callback = g_bsp_vectors[vector];
- }
- return err;
- }
- /***********************************************************************************************************************
- * Function Name: R_BSP_InterruptControl
- * Description : Executes specified command.
- * Arguments : vector -
- * Which vector is being used.
- * cmd -
- * Which command to execute.
- * pdata -
- * Pointer to data to use with command.
- * Currently only used for BSP_INT_CMD_GROUP_INTERRUPT_ENABLE, and points
- * to a bsp_int_ctrl_t *. Other commands should supply FIT_NO_PTR.
- * Return Value : BSP_INT_SUCCESS -
- * Command executed successfully.
- * BSP_INT_ERR_NO_REGISTERED_CALLBACK -
- * No valid callback has been registered for this interrupt source.
- * BSP_INT_ERR_INVALID_ARG -
- * Invalid command sent in.
- * BSP_INT_ERR_GROUP_STILL_ENABLED -
- * Not all group interrupts were disabled so group interrupt was not disabled.
- ***********************************************************************************************************************/
- bsp_int_err_t R_BSP_InterruptControl (bsp_int_src_t vector, bsp_int_cmd_t cmd, void * pdata)
- {
- bsp_int_err_t err;
- bsp_int_cb_args_t cb_args;
- err = BSP_INT_SUCCESS;
- switch (cmd)
- {
- case (BSP_INT_CMD_CALL_CALLBACK):
- if (((uint32_t)g_bsp_vectors[vector] != (uint32_t)NULL) &&
- ((uint32_t)g_bsp_vectors[vector] != (uint32_t)FIT_NO_FUNC))
- {
- /* Fill in callback info. */
- cb_args.vector = vector;
- g_bsp_vectors[vector](&cb_args);
- }
- else
- {
- err = BSP_INT_ERR_NO_REGISTERED_CALLBACK;
- }
- break;
- case (BSP_INT_CMD_INTERRUPT_ENABLE):
- err = bsp_interrupt_enable_disable(vector, true);
- break;
- case (BSP_INT_CMD_INTERRUPT_DISABLE):
- err = bsp_interrupt_enable_disable(vector, false);
- break;
- case (BSP_INT_CMD_GROUP_INTERRUPT_ENABLE):
- err = bsp_interrupt_group_enable_disable(vector, true, ((bsp_int_ctrl_t *)pdata)->ipl);
- break;
- case (BSP_INT_CMD_GROUP_INTERRUPT_DISABLE):
- err = bsp_interrupt_group_enable_disable(vector, false, 0);
- break;
- default:
- err = BSP_INT_ERR_INVALID_ARG;
- break;
- }
- return err;
- }
- /***********************************************************************************************************************
- * Function Name: bsp_interrupt_enable_disable
- * Description : Either enables or disables an interrupt.
- * Arguments : vector -
- * Which vector to enable or disable.
- * enable -
- * Whether to enable or disable the interrupt.
- * Return Value : BSP_INT_SUCCESS -
- * Interrupt enabled or disabled.
- * BSP_INT_ERR_UNSUPPORTED -
- * API does not support enabling/disabling for this vector.
- ***********************************************************************************************************************/
- bsp_int_err_t bsp_interrupt_enable_disable (bsp_int_src_t vector, bool enable)
- {
- uint32_t temp_fpsw;
- bsp_int_err_t err = BSP_INT_SUCCESS;
- switch (vector)
- {
- case (BSP_INT_SRC_BUS_ERROR):
- if (true == enable)
- {
- /* Enable the bus error interrupt to catch accesses to illegal/reserved areas of memory */
- /* Clear any pending interrupts */
- IR(BSC,BUSERR) = 0;
- /* Make this the highest priority interrupt (adjust as necessary for your application */
- IPR(BSC,BUSERR) = 0x0F;
- /* Enable the interrupt in the ICU*/
- IEN(BSC,BUSERR) = 1;
- /* Enable illegal address interrupt in the BSC */
- BSC.BEREN.BIT.IGAEN = 1;
- /* Enable timeout detection enable. */
- BSC.BEREN.BIT.TOEN = 1;
- }
- else
- {
- /* Disable the bus error interrupt. */
- /* Disable the interrupt in the ICU*/
- IEN(BSC,BUSERR) = 0;
- /* Disable illegal address interrupt in the BSC */
- BSC.BEREN.BIT.IGAEN = 0;
- /* Disable timeout detection enable. */
- BSC.BEREN.BIT.TOEN = 0;
- }
- break;
- case (BSP_INT_SRC_EXC_FPU):
- /* Get current FPSW. */
- temp_fpsw = (uint32_t)R_GET_FPSW();
- if (true == enable)
- {
- /* Set the FPU exception flags. */
- R_SET_FPSW(temp_fpsw | (uint32_t)FPU_EXCEPTIONS_ENABLE);
- }
- else
- {
- /* Clear only the FPU exception flags. */
- R_SET_FPSW(temp_fpsw & (uint32_t)~FPU_EXCEPTIONS_ENABLE);
- }
- break;
- case (BSP_INT_SRC_EXC_NMI_PIN):
- if (true == enable)
- {
- /* Enable NMI pin interrupt (cannot undo!) */
- ICU.NMIER.BIT.NMIEN = 1;
- }
- else
- {
- /* NMI pin interrupts cannot be disabled after being enabled. */
- err = BSP_INT_ERR_UNSUPPORTED;
- }
- break;
- default:
- err = BSP_INT_ERR_UNSUPPORTED;
- break;
- }
- return err;
- }
- /***********************************************************************************************************************
- * Function Name: bsp_interrupt_group_enable_disable
- * Description : Either enables or disables a group interrupt. If a group interrupt is called multiple times to be
- * enabled then it will use the highest given IPL. A group interrupt will only be disabled when all
- * interrupt sources for that group are already disabled.
- * Arguments : vector -
- * An interrupt source inside the group that is to be enabled/disabled.
- * enable -
- * Whether to enable or disable the interrupt.
- * ipl -
- * If enabling a group interrupt, what IPL to use.
- * Return Value : BSP_INT_SUCCESS -
- * Interrupt enabled or disabled.
- * BSP_INT_ERR_INVALID_ARG -
- * Invalid IPL or vector
- * BSP_INT_ERR_GROUP_STILL_ENABLED -
- * Not all group interrupts were disabled so group interrupt was not disabled.
- ***********************************************************************************************************************/
- bsp_int_err_t bsp_interrupt_group_enable_disable (bsp_int_src_t vector, bool enable, uint32_t ipl)
- {
- bsp_int_err_t err = BSP_INT_SUCCESS;
- #if BSP_CFG_PARAM_CHECKING_ENABLE == 1
- /* If interrupt is going to be enabled, verify that IPL is valid. */
- if ((true == enable) && ((ipl == BSP_MCU_IPL_MIN) || (ipl > BSP_MCU_IPL_MAX)))
- {
- return BSP_INT_ERR_INVALID_ARG;
- }
- #endif
- if ((vector >= BSP_INT_SRC_BL0_SCI0_TEI0) && (vector <= BSP_INT_SRC_BL0_PDC_PCERI))
- {
- /* Group BL0. */
- if (true == enable)
- {
- IEN(ICU, GROUPBL0) = 0;
- IR(ICU, GROUPBL0) = 0;
- IPR(ICU, GROUPBL0) = (uint8_t)(ipl > IPR(ICU, GROUPBL0) ? ipl : IPR(ICU, GROUPBL0));
- IEN(ICU, GROUPBL0) = 1;
- }
- else
- {
- /* Check to make sure all interrupt sources are already disabled for this group. */
- if (0 == ICU.GENBL0.LONG)
- {
- IEN(ICU, GROUPBL0) = 0;
- IPR(ICU, GROUPBL0) = 0;
- }
- else
- {
- err = BSP_INT_ERR_GROUP_STILL_ENABLED;
- }
- }
- }
- else if ((vector >= BSP_INT_SRC_BL1_SDHI_CDETI) && (vector <= BSP_INT_SRC_BL1_RIIC1_EEI1))
- {
- /* Group BL1. */
- if (true == enable)
- {
- IEN(ICU, GROUPBL1) = 0;
- IR(ICU, GROUPBL1) = 0;
- IPR(ICU, GROUPBL1) = (uint8_t)(ipl > IPR(ICU, GROUPBL1) ? ipl : IPR(ICU, GROUPBL1));
- IEN(ICU, GROUPBL1) = 1;
- }
- else
- {
- /* Check to make sure all interrupt sources are already disabled for this group. */
- if (0 == ICU.GENBL1.LONG)
- {
- IEN(ICU, GROUPBL1) = 0;
- IPR(ICU, GROUPBL1) = 0;
- }
- else
- {
- err = BSP_INT_ERR_GROUP_STILL_ENABLED;
- }
- }
- }
- else if (vector == BSP_INT_SRC_BL2_SDSI_SDIOI)
- {
- /* Group BL2. */
- if (true == enable)
- {
- IEN(ICU, GROUPBL2) = 0;
- IR(ICU, GROUPBL2) = 0;
- IPR(ICU, GROUPBL2) = (uint8_t)(ipl > IPR(ICU, GROUPBL2) ? ipl : IPR(ICU, GROUPBL2));
- IEN(ICU, GROUPBL2) = 1;
- }
- else
- {
- /* Check to make sure all interrupt sources are already disabled for this group. */
- if (0 == ICU.GENBL2.LONG)
- {
- IEN(ICU, GROUPBL2) = 0;
- IPR(ICU, GROUPBL2) = 0;
- }
- else
- {
- err = BSP_INT_ERR_GROUP_STILL_ENABLED;
- }
- }
- }
- else if ((vector >= BSP_INT_SRC_AL0_SCI10_TEI10) && (vector <= BSP_INT_SRC_AL0_RSPI2_SPEI2))
- {
- /* Group AL0. */
- if (true == enable)
- {
- IEN(ICU, GROUPAL0) = 0;
- IR(ICU, GROUPAL0) = 0;
- IPR(ICU, GROUPAL0) = (uint8_t)(ipl > IPR(ICU, GROUPAL0) ? ipl : IPR(ICU, GROUPAL0));
- IEN(ICU, GROUPAL0) = 1;
- }
- else
- {
- /* Check to make sure all interrupt sources are already disabled for this group. */
- if (0 == ICU.GENAL0.LONG)
- {
- IEN(ICU, GROUPAL0) = 0;
- IPR(ICU, GROUPAL0) = 0;
- }
- else
- {
- err = BSP_INT_ERR_GROUP_STILL_ENABLED;
- }
- }
- }
- else if ((vector >= BSP_INT_SRC_AL1_EDMAC0_EINT0) && (vector <= BSP_INT_SRC_AL1_DRW2D_DRW_IRQ))
- {
- /* Group AL1. */
- if (true == enable)
- {
- IEN(ICU, GROUPAL1) = 0;
- IR(ICU, GROUPAL1) = 0;
- IPR(ICU, GROUPAL1) = (uint8_t)(ipl > IPR(ICU, GROUPAL1) ? ipl : IPR(ICU, GROUPAL1));
- IEN(ICU, GROUPAL1) = 1;
- }
- else
- {
- /* Check to make sure all interrupt sources are already disabled for this group. */
- if (0 == ICU.GENAL1.LONG)
- {
- IEN(ICU, GROUPAL1) = 0;
- IPR(ICU, GROUPAL1) = 0;
- }
- else
- {
- err = BSP_INT_ERR_GROUP_STILL_ENABLED;
- }
- }
- }
- else
- {
- /* Vector given was not part of a group. */
- err = BSP_INT_ERR_INVALID_ARG;
- }
- return err;
- }
- #ifndef GRROSE
- /***********************************************************************************************************************
- * Function Name: group_bl0_handler_isr
- * Description : Interrupt handler for Group BL0 interrupts. The way this code works is that for each possible interrupt
- * in this group the following will be performed:
- * 1) Test to see if an interrupt is requested for this source
- * 2) If an interrupt is requested then the registered callback is called (if one is registered)
- * NOTE: The interrupt request flag must be cleared in the peripheral.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- R_ATTRIB_INTERRUPT void group_bl0_handler_isr (void)
- {
- if (1 == ICU.GRPBL0.BIT.IS1)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI0_ERI0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS0)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI0_TEI0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS3)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI1_ERI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS2)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI1_TEI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS5)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI2_ERI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS4)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI2_TEI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS7)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI3_ERI3, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS6)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI3_TEI3, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS9)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI4_ERI4, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS8)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI4_TEI4, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS11)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI5_ERI5, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS10)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI5_TEI5, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS13)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI6_ERI6, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS12)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI6_TEI6, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS15)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI7_ERI7, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS14)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI7_TEI7, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS17)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_ERI12, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS16)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_TEI12, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS18)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_SCIX0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS19)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_SCIX1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS20)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_SCIX2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS21)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_SCI12_SCIX3, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS24)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_QSPI_QSPSSLI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS26)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_CAC_FERRI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS27)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_CAC_MENDI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS28)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_CAC_OVFI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS29)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_DOC_DOPCI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS31)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_PDC_PCERI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL0.BIT.IS30)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL0_PDC_PCFEI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- }
- /***********************************************************************************************************************
- * Function Name: group_bl1_handler_isr
- * Description : Interrupt handler for Group BL1 interrupts. The way this code works is that for each possible interrupt
- * in this group the following will be performed:
- * 1) Test to see if an interrupt is requested for this source
- * 2) If an interrupt is requested then the registered callback is called (if one is registered)
- * NOTE: The interrupt request flag must be cleared in the peripheral.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- R_ATTRIB_INTERRUPT void group_bl1_handler_isr (void)
- {
- if (1 == ICU.GRPBL1.BIT.IS3)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SDHI_CDETI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS4)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SDHI_CACI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS5)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SDHI_SDACI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS6)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_MMCIF_CDETIO, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS7)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_MMCIF_ERRIO, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS8)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_MMCIF_ACCIO, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS9)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_POE3_OEI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS10)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_POE3_OEI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS11)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_POE3_OEI3, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS12)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_POE3_OEI4, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS14)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC0_EEI0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS13)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC0_TEI0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS16)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC2_EEI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS15)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC2_TEI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS20)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_S12AD0_S12CMPAI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS21)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_S12AD0_S12CMPBI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS22)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_S12AD1_S12CMPAI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS23)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_S12AD1_S12CMPBI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS25)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SCI8_ERI8, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS24)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SCI8_TEI8, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS27)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SCI9_ERI9, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS26)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_SCI9_TEI9, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS29)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC1_EEI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPBL1.BIT.IS28)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL1_RIIC1_TEI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- }
- #endif
- /***********************************************************************************************************************
- * Function Name: group_bl2_handler_isr
- * Description : Interrupt handler for Group BL1 interrupts. The way this code works is that for each possible interrupt
- * in this group the following will be performed:
- * 1) Test to see if an interrupt is requested for this source
- * 2) If an interrupt is requested then the registered callback is called (if one is registered)
- * NOTE: The interrupt request flag must be cleared in the peripheral.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- R_ATTRIB_INTERRUPT void group_bl2_handler_isr (void)
- {
- if (1 == ICU.GRPBL2.BIT.IS0)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_BL2_SDSI_SDIOI, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- }
- /***********************************************************************************************************************
- * Function Name: group_al0_handler_isr
- * Description : Interrupt handler for Group AL0 interrupts. The way this code works is that for each possible interrupt
- * in this group the following will be performed:
- * 1) Test to see if an interrupt is requested for this source
- * 2) If an interrupt is requested then the registered callback is called (if one is registered)
- * NOTE: The interrupt request flag must be cleared in the peripheral.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- R_ATTRIB_INTERRUPT void group_al0_handler_isr (void)
- {
- if (1 == ICU.GRPAL0.BIT.IS9)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_SCI10_ERI10, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS8)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_SCI10_TEI10, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS13)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_SCI11_ERI11, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS12)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_SCI11_TEI11, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS17)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI0_SPEI0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS16)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI0_SPII0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS19)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI1_SPEI1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS18)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI1_SPII1, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS21)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI2_SPEI2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL0.BIT.IS20)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL0_RSPI2_SPII2, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- }
- /***********************************************************************************************************************
- * Function Name: group_al1_handler_isr
- * Description : Interrupt handler for Group AL1 interrupts. The way this code works is that for each possible interrupt
- * in this group the following will be performed:
- * 1) Test to see if an interrupt is requested for this source
- * 2) If an interrupt is requested then the registered callback is called (if one is registered)
- * NOTE: The interrupt request flag must be cleared in the peripheral.
- * Arguments : None
- * Return Value : None
- ***********************************************************************************************************************/
- R_ATTRIB_INTERRUPT void group_al1_handler_isr (void)
- {
- if (1 == ICU.GRPAL1.BIT.IS4)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL1_EDMAC0_EINT0, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL1.BIT.IS9)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL1_GLCDC_GR1UF, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL1.BIT.IS10)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL1_GLCDC_GR2UF, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL1.BIT.IS8)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL1_GLCDC_VPOS, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- if (1 == ICU.GRPAL1.BIT.IS11)
- {
- R_BSP_InterruptControl(BSP_INT_SRC_AL1_DRW2D_DRW_IRQ, BSP_INT_CMD_CALL_CALLBACK, FIT_NO_PTR);
- }
- }
|