diff --git a/demo/Makefile b/demo/Makefile index 96da1d5..b4a494c 100644 --- a/demo/Makefile +++ b/demo/Makefile @@ -3,7 +3,7 @@ BUILD_DIR?=../build/gsd_orangecrab/ include $(BUILD_DIR)/software/include/generated/variables.mak include $(SOC_DIRECTORY)/software/common.mak -OBJECTS = audio.o can.o crt0.o donut.o led.o main.o +OBJECTS = audio.o can.o crt0.o donut.o isr.o led.o main.o CFLAGS += -DWITH_CXX diff --git a/demo/isr.cpp b/demo/isr.cpp new file mode 100644 index 0000000..3032651 --- /dev/null +++ b/demo/isr.cpp @@ -0,0 +1,30 @@ +// This file is Copyright (c) 2013-2014 Sebastien Bourdeauducq +// This file is Copyright (c) 2019 Gabriel L. Somlo +// This file is Copyright (c) 2020 Raptor Engineering, LLC +// License: BSD + +#include "can" +#include +#include +#include +#include +#include + +#ifdef CONFIG_CPU_HAS_INTERRUPT +void isr(void) { + __attribute__((unused)) unsigned int irqs; + + irqs = irq_pending() & irq_getmask(); + +#ifdef CSR_UART_BASE +#ifndef UART_POLLING + if (irqs & (1 << UART_INTERRUPT)) + uart_isr(); +#endif +#ifdef CAN_INTERRUPT + if (irqs & (1 << CAN_INTERRUPT)) + can_isr(); +#endif +#endif +} +#endif