diff --git a/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3 b/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3 index 7e1b330..78ebf42 100644 --- a/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3 +++ b/firmware/iot-risk-data-logger-nfc-samd21.X/iot-risk-data-logger-nfc-samd21.mc3 @@ -3627,10 +3627,10 @@ <?xml version="1.0" encoding="UTF-8"?><UserData> <UserData dnOrder="0"> - <GraphSettings canvasHeight="695" canvasWidth="826" dnOrder="0"/> + <GraphSettings canvasHeight="717" canvasWidth="826" dnOrder="0"/> <ComponentGraph dnOrder="1" id="__ROOTVIEW"> <ElementPositions dnOrder="0"> - <ElementPosition dnOrder="0" id="FreeRTOS" x="688" y="8"/> + <ElementPosition dnOrder="0" id="FreeRTOS" x="550" y="5"/> <ElementPosition dnOrder="1" id="HarmonyCore" x="23" y="584"/> <ElementPosition dnOrder="2" id="cmsis" x="307" y="82"/> <ElementPosition dnOrder="3" id="core" x="306" y="48"/> @@ -3643,7 +3643,7 @@ <ElementPosition dnOrder="10" id="eic" x="166" y="18"/> <ElementPosition dnOrder="11" id="evsys" x="163" y="70"/> <ElementPosition dnOrder="12" id="nvmctrl" x="20" y="20"/> - <ElementPosition dnOrder="13" id="pm" x="549" y="6"/> + <ElementPosition dnOrder="13" id="pm" x="687" y="7"/> <ElementPosition dnOrder="14" id="rtc" x="550" y="79"/> <ElementPosition dnOrder="15" id="sercom0" x="22" y="133"/> <ElementPosition dnOrder="16" id="sercom1" x="17" y="324"/> @@ -3836,6 +3836,50 @@ </Values> </core> </core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="EIC_INTERRUPT_ENABLE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </core> +</core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="EIC_INTERRUPT_ENABLE_UPDATE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="core" value="false"/> + </Values> + </core> +</core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="EIC_INTERRUPT_HANDLER"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="EIC_InterruptHandler"/> + </Values> + </core> +</core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="EIC_INTERRUPT_HANDLER_LOCK"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </core> +</core> @@ -4574,6 +4618,39 @@ </Values> </core> </core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="NVIC_4_0_ENABLE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="core" value="true"/> + </Values> + </core> +</core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="NVIC_4_0_HANDLER"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="core" value="EIC_InterruptHandler"/> + </Values> + </core> +</core> + + + + + <?xml version="1.0" encoding="UTF-8"?><core> + <core dnOrder="0" id="NVIC_4_0_HANDLER_LOCK"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="core" value="true"/> + </Values> + </core> +</core> @@ -7366,7 +7443,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_10"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7411,7 +7490,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_15"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="false"/> + </Values> </eic> </eic> @@ -7429,7 +7510,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_3"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7447,7 +7530,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_5"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7456,7 +7541,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_6"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7465,7 +7552,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CHAN_7"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7654,7 +7743,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_10"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="5"/> + </Values> </eic> </eic> @@ -7699,7 +7790,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_15"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="1"/> + </Values> </eic> </eic> @@ -7717,7 +7810,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_3"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="2"/> + </Values> </eic> </eic> @@ -7735,7 +7830,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_5"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="1"/> + </Values> </eic> </eic> @@ -7744,7 +7841,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_6"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="1"/> + </Values> </eic> </eic> @@ -7753,7 +7852,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_CONFIG_SENSE_7"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="1"/> + </Values> </eic> </eic> @@ -7774,6 +7875,17 @@ <Values dnOrder="0"/> </eic> </eic> + + + + + <?xml version="1.0" encoding="UTF-8"?><eic> + <eic dnOrder="0" id="EIC_EXTINTEO"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="0"/> + </Values> + </eic> +</eic> @@ -7927,6 +8039,17 @@ <Values dnOrder="0"/> </eic> </eic> + + + + + <?xml version="1.0" encoding="UTF-8"?><eic> + <eic dnOrder="0" id="EIC_INT"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="1192"/> + </Values> + </eic> +</eic> @@ -7951,7 +8074,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_INT_10"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -7996,7 +8121,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_INT_15"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -8014,7 +8141,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_INT_3"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -8032,7 +8161,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_INT_5"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -8050,7 +8181,9 @@ <?xml version="1.0" encoding="UTF-8"?><eic> <eic dnOrder="0" id="EIC_INT_7"> - <Values dnOrder="0"/> + <Values dnOrder="0"> + <User dnOrder="0" value="true"/> + </Values> </eic> </eic> @@ -8080,6 +8213,17 @@ <Values dnOrder="0"/> </eic> </eic> + + + + + <?xml version="1.0" encoding="UTF-8"?><eic> + <eic dnOrder="0" id="EIC_WAKEUP"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="0"/> + </Values> + </eic> +</eic> @@ -8387,6 +8531,72 @@ </Values> </evsys> </evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_10_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </evsys> +</evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_15_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="false"/> + </Values> + </evsys> +</evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_3_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </evsys> +</evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_5_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </evsys> +</evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_6_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="false"/> + </Values> + </evsys> +</evsys> + + + + + <?xml version="1.0" encoding="UTF-8"?><evsys> + <evsys dnOrder="0" id="GENERATOR_EIC_EXTINT_7_ACTIVE"> + <Values dnOrder="0"> + <Dynamic dnOrder="0" id="eic" value="true"/> + </Values> + </evsys> +</evsys> @@ -12850,7 +13060,7 @@ ../src/config/default/interrupts.c - 4cdd7847f06a8cf3cd01b8c77af2025943404e4030df81bf864bea00111e8b44 + fad4ce58b2c8d50b3f25f309e8d55753b879ba78752246e3317ce302459bae24 ../src/packs/ATSAMD21E18A_DFP/component/usb.h @@ -12862,7 +13072,7 @@ ../src/config/default/interrupts.h - 4f12e83aa1bd95100f2760d1324e50464c6b923f79fbbbdbb8686263d3d3c01d + a8bba7fe086f6040e635c3a5afeb89f61a3e41ad1e38699c9f9c3d7b7057ffae ../src/config/default/system/int/src/sys_int.c @@ -13146,7 +13356,7 @@ ../src/config/default/peripheral/eic/plib_eic.h - 98c08f8b7dba115ace37a8272878083352c59b6ecd49e23dbe2e79f21eafec7b + 32fe9eae1aa7ae8885f452a823ce2febf236124cecf1fcb586595e73b5d37d43 ../src/packs/ATSAMD21E18A_DFP/instance/tcc1.h @@ -13170,7 +13380,7 @@ ../src/config/default/peripheral/eic/plib_eic.c - e40e91ed3e153e30ebee0d6c9675899e9df57f731b809c4989266264f97ff5aa + a477674705cfe4024c8c3e3c060b04a4759d85a5ab116e54ca8d9388cca4a370 ../src/third_party/rtos/FreeRTOS/Source/include/task.h @@ -13734,7 +13944,7 @@ ../src/config/default/peripheral/nvic/plib_nvic.c - b19eae30e11ecb76216fbdbcf37a48a81845f81f09c6f07c1c123140cfe61434 + 9586cb4761bc02aaefc5412caf98e60dc1245c1cba988e8cf4d07d1164753344 ../src/packs/ATSAMD21E18A_DFP/instance/pac2.h diff --git a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties index 0db335a..67be1e3 100644 --- a/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties +++ b/firmware/iot-risk-data-logger-nfc-samd21.X/nbproject/Makefile-genesis.properties @@ -1,5 +1,5 @@ # -#Sun Nov 19 20:07:57 TRT 2023 +#Sun Nov 19 20:16:43 TRT 2023 default.languagetoolchain.version=4.35 default.Pack.dfplocation=/Applications/microchip/mplabx/v6.15/packs/Microchip/SAMD21_DFP/3.6.144 default.com-microchip-mplab-mdbcore-simulator-Simulator.md5=aa9d1097190a66d1314d421a6f2603b4 diff --git a/firmware/src/config/default/harmony-manifest-success.yml b/firmware/src/config/default/harmony-manifest-success.yml index cb10dec..de7c40d 100644 --- a/firmware/src/config/default/harmony-manifest-success.yml +++ b/firmware/src/config/default/harmony-manifest-success.yml @@ -4,7 +4,7 @@ project: iot-risk-data-logger-nfc-samd21 -creation_date: 2023-11-19T20:07:56.611+03:00[Europe/Istanbul] # ISO 8601 format: https://www.w3.org/TR/NOTE-datetime +creation_date: 2023-11-19T20:16:42.617+03:00[Europe/Istanbul] # ISO 8601 format: https://www.w3.org/TR/NOTE-datetime operating_system: Mac OS X mcc_mode: IDE # [IDE|Standalone|Headless] mcc_version: v5.3.7 diff --git a/firmware/src/config/default/interrupts.c b/firmware/src/config/default/interrupts.c index 678e0e4..74fa07b 100644 --- a/firmware/src/config/default/interrupts.c +++ b/firmware/src/config/default/interrupts.c @@ -76,12 +76,11 @@ void __attribute__((optimize("-O1"), long_call, noreturn, used))Dummy_Handler(vo } /* MISRAC 2012 deviation block start */ -/* MISRA C-2012 Rule 8.6 deviated 19 times. Deviation record ID - H3_MISRAC_2012_R_8_6_DR_1 */ +/* MISRA C-2012 Rule 8.6 deviated 18 times. Deviation record ID - H3_MISRAC_2012_R_8_6_DR_1 */ /* Device vectors list dummy definition*/ extern void PM_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); extern void SYSCTRL_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); extern void WDT_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); -extern void EIC_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); extern void NVMCTRL_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); extern void DMAC_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); extern void EVSYS_Handler ( void ) __attribute__((weak, alias("Dummy_Handler"))); @@ -121,7 +120,7 @@ const H3DeviceVectors exception_table= .pfnSYSCTRL_Handler = SYSCTRL_Handler, .pfnWDT_Handler = WDT_Handler, .pfnRTC_Handler = RTC_InterruptHandler, - .pfnEIC_Handler = EIC_Handler, + .pfnEIC_Handler = EIC_InterruptHandler, .pfnNVMCTRL_Handler = NVMCTRL_Handler, .pfnDMAC_Handler = DMAC_Handler, .pfnUSB_Handler = DRV_USBFSV1_USB_Handler, diff --git a/firmware/src/config/default/interrupts.h b/firmware/src/config/default/interrupts.h index 0d1628a..536a7ce 100644 --- a/firmware/src/config/default/interrupts.h +++ b/firmware/src/config/default/interrupts.h @@ -64,6 +64,7 @@ void vPortSVCHandler (void); void xPortPendSVHandler (void); void xPortSysTickHandler (void); void RTC_InterruptHandler (void); +void EIC_InterruptHandler (void); void DRV_USBFSV1_USB_Handler (void); void SERCOM0_I2C_InterruptHandler (void); void SERCOM1_SPI_InterruptHandler (void); diff --git a/firmware/src/config/default/peripheral/eic/plib_eic.c b/firmware/src/config/default/peripheral/eic/plib_eic.c index dc96705..7488ab3 100644 --- a/firmware/src/config/default/peripheral/eic/plib_eic.c +++ b/firmware/src/config/default/peripheral/eic/plib_eic.c @@ -61,6 +61,9 @@ // Section: Global Data // ***************************************************************************** // ***************************************************************************** +/* EIC Channel Callback object */ +volatile static EIC_CALLBACK_OBJ eicCallbackObject[EXTINT_COUNT]; + void EIC_Initialize(void) { @@ -79,22 +82,42 @@ void EIC_Initialize(void) EIC_REGS->EIC_CONFIG[0] = EIC_CONFIG_SENSE0_NONE | EIC_CONFIG_SENSE1_NONE | EIC_CONFIG_SENSE2_NONE | - EIC_CONFIG_SENSE3_NONE | + EIC_CONFIG_SENSE3_FALL | EIC_CONFIG_SENSE4_NONE | - EIC_CONFIG_SENSE5_NONE | - EIC_CONFIG_SENSE6_NONE | - EIC_CONFIG_SENSE7_NONE ; + EIC_CONFIG_SENSE5_RISE | + EIC_CONFIG_SENSE6_RISE | + EIC_CONFIG_SENSE7_RISE ; /* Interrupt sense type and filter control for EXTINT channels 8 to 15 */ EIC_REGS->EIC_CONFIG[1] = EIC_CONFIG_SENSE0_NONE | EIC_CONFIG_SENSE1_NONE | - EIC_CONFIG_SENSE2_NONE | + EIC_CONFIG_SENSE2_LOW | EIC_CONFIG_SENSE3_NONE | EIC_CONFIG_SENSE4_NONE | EIC_CONFIG_SENSE5_NONE | EIC_CONFIG_SENSE6_NONE | - EIC_CONFIG_SENSE7_NONE ; - + EIC_CONFIG_SENSE7_RISE ; + + /* External Interrupt enable*/ + EIC_REGS->EIC_INTENSET = 0x4a8; + + /* Callbacks for enabled interrupts */ + eicCallbackObject[0].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[1].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[2].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[3].eicPinNo = EIC_PIN_3; + eicCallbackObject[4].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[5].eicPinNo = EIC_PIN_5; + eicCallbackObject[6].eicPinNo = EIC_PIN_6; + eicCallbackObject[7].eicPinNo = EIC_PIN_7; + eicCallbackObject[8].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[9].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[10].eicPinNo = EIC_PIN_10; + eicCallbackObject[11].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[12].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[13].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[14].eicPinNo = EIC_PIN_MAX; + eicCallbackObject[15].eicPinNo = EIC_PIN_MAX; /* Enable the EIC */ EIC_REGS->EIC_CTRL |= EIC_CTRL_ENABLE_Msk; @@ -105,3 +128,53 @@ void EIC_Initialize(void) } } +void EIC_InterruptEnable(EIC_PIN pin) +{ + EIC_REGS->EIC_INTENSET = (1UL << (uint32_t)pin); +} + +void EIC_InterruptDisable(EIC_PIN pin) +{ + EIC_REGS->EIC_INTENCLR = (1UL << (uint32_t)pin); +} + +void EIC_CallbackRegister(EIC_PIN pin, EIC_CALLBACK callback, uintptr_t context) +{ + if (eicCallbackObject[pin].eicPinNo == pin) + { + eicCallbackObject[pin].callback = callback; + + eicCallbackObject[pin].context = context; + } +} + +void __attribute__((used)) EIC_InterruptHandler(void) +{ + uint8_t currentChannel; + uint32_t eicIntFlagStatus; + + /* Find any triggered channels, run associated callback handlers */ + for (currentChannel = 0; currentChannel < EXTINT_COUNT; currentChannel++) + { + /* Verify if the EXTINT x Interrupt Pin is enabled */ + if (((uint8_t)eicCallbackObject[currentChannel].eicPinNo == currentChannel)) + { + /* Read the interrupt flag status */ + eicIntFlagStatus = EIC_REGS->EIC_INTFLAG & (1UL << currentChannel); + + if (eicIntFlagStatus != 0U) + { + /* Find any associated callback entries in the callback table */ + if ((eicCallbackObject[currentChannel].callback != NULL)) + { + uintptr_t context = eicCallbackObject[currentChannel].context; + eicCallbackObject[currentChannel].callback(context); + } + + /* Clear interrupt flag */ + EIC_REGS->EIC_INTFLAG = (1UL << currentChannel); + } + } + } +} + diff --git a/firmware/src/config/default/peripheral/eic/plib_eic.h b/firmware/src/config/default/peripheral/eic/plib_eic.h index 5d5ce19..4e4d971 100644 --- a/firmware/src/config/default/peripheral/eic/plib_eic.h +++ b/firmware/src/config/default/peripheral/eic/plib_eic.h @@ -77,11 +77,41 @@ typedef enum { + /* External Interrupt Controller Pin 3 */ + EIC_PIN_3 = 3, + + /* External Interrupt Controller Pin 5 */ + EIC_PIN_5 = 5, + + /* External Interrupt Controller Pin 6 */ + EIC_PIN_6 = 6, + + /* External Interrupt Controller Pin 7 */ + EIC_PIN_7 = 7, + + /* External Interrupt Controller Pin 10 */ + EIC_PIN_10 = 10, + EIC_PIN_MAX = 16 } EIC_PIN; +typedef void (*EIC_CALLBACK) (uintptr_t context); + +typedef struct +{ + /* External Interrupt Pin Callback Handler */ + EIC_CALLBACK callback; + + /* External Interrupt Pin Client context */ + uintptr_t context; + + /* External Interrupt Pin number */ + EIC_PIN eicPinNo; + +} EIC_CALLBACK_OBJ; + // ***************************************************************************** // ***************************************************************************** @@ -91,6 +121,12 @@ typedef enum void EIC_Initialize(void); +void EIC_InterruptEnable(EIC_PIN pin); + +void EIC_InterruptDisable(EIC_PIN pin); + +void EIC_CallbackRegister(EIC_PIN pin, EIC_CALLBACK callback, uintptr_t context); + #ifdef __cplusplus // Provide C++ Compatibility diff --git a/firmware/src/config/default/peripheral/nvic/plib_nvic.c b/firmware/src/config/default/peripheral/nvic/plib_nvic.c index a211731..d31f2d9 100644 --- a/firmware/src/config/default/peripheral/nvic/plib_nvic.c +++ b/firmware/src/config/default/peripheral/nvic/plib_nvic.c @@ -59,6 +59,8 @@ void NVIC_Initialize( void ) * from within the "Interrupt Manager" of MHC. */ NVIC_SetPriority(RTC_IRQn, 3); NVIC_EnableIRQ(RTC_IRQn); + NVIC_SetPriority(EIC_IRQn, 3); + NVIC_EnableIRQ(EIC_IRQn); NVIC_SetPriority(USB_IRQn, 3); NVIC_EnableIRQ(USB_IRQn); NVIC_SetPriority(SERCOM0_IRQn, 3);