diff --git a/firmware/Makefile b/firmware/Makefile index e36fd5d..ee97885 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -21,7 +21,7 @@ HEX = b15f.hex MCU = atmega1284 CFLAGS = -Wall -Wextra -std=c++14 -O3 -mmcu=$(MCU) -DF_CPU=$(F_CPU) $(DEBUG) LDFLAGS = -OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o usart.o requests.o interrupts.o pwm.o +OBJECTS = main.o spi.o mcp23s17.o tlc5615.o adu.o selftest.o global_vars.o usart.o request_handlers.o interrupts.o pwm.o diff --git a/firmware/global_vars.cpp b/firmware/global_vars.cpp index 7297949..d498b6d 100644 --- a/firmware/global_vars.cpp +++ b/firmware/global_vars.cpp @@ -10,3 +10,4 @@ volatile ADU adu; volatile USART usart; volatile PWM pwm; volatile bool nextRequest = false; +volatile uint16_t interruptCounters[35]; diff --git a/firmware/global_vars.h b/firmware/global_vars.h index 218f50e..99923ab 100644 --- a/firmware/global_vars.h +++ b/firmware/global_vars.h @@ -20,5 +20,6 @@ extern volatile ADU adu; extern volatile USART usart; extern volatile PWM pwm; extern volatile bool nextRequest; +extern volatile uint16_t interruptCounters[]; #endif // GLOBAL_VARS_H diff --git a/firmware/interrupts.cpp b/firmware/interrupts.cpp index d84bcb0..7d2ab6d 100644 --- a/firmware/interrupts.cpp +++ b/firmware/interrupts.cpp @@ -1,22 +1,181 @@ #include #include "global_vars.h" -ISR(USART0_RX_vect) +ISR(BADISR_vect) { - usart.handleRX(); + interruptCounters[0]++; } -ISR(USART0_TX_vect) +ISR(INT0_vect) { - usart.handleTX(); + interruptCounters[1]++; +} + +ISR(INT1_vect) +{ + interruptCounters[2]++; +} + +ISR(INT2_vect) +{ + interruptCounters[3]++; +} + +ISR(PCINT0_vect) +{ + interruptCounters[4]++; +} + +ISR(PCINT1_vect) +{ + interruptCounters[5]++; +} + +ISR(PCINT2_vect) +{ + interruptCounters[6]++; +} + +ISR(PCINT3_vect) +{ + interruptCounters[7]++; +} + +ISR(WDT_vect) +{ + interruptCounters[8]++; +} + +ISR(TIMER2_COMPA_vect) +{ + interruptCounters[9]++; +} + +ISR(TIMER2_COMPB_vect) +{ + interruptCounters[10]++; +} + +ISR(TIMER2_OVF_vect) +{ + interruptCounters[11]++; +} + +ISR(TIMER1_CAPT_vect) +{ + interruptCounters[12]++; +} + +ISR(TIMER1_COMPA_vect) +{ + interruptCounters[13]++; +} + +ISR(TIMER1_COMPB_vect) +{ + interruptCounters[14]++; +} + +ISR(TIMER1_OVF_vect) +{ + interruptCounters[15]++; +} + +ISR(TIMER0_COMPA_vect) +{ + interruptCounters[16]++; +} + +ISR(TIMER0_COMPB_vect) +{ + interruptCounters[17]++; +} + +ISR(TIMER0_OVF_vect) +{ + interruptCounters[18]++; } ISR(SPI_STC_vect) { + interruptCounters[19]++; spi.handleTransfer(); } +ISR(USART0_RX_vect) +{ + interruptCounters[20]++; + usart.handleRX(); +} + +ISR(USART0_UDRE_vect) +{ + interruptCounters[21]++; +} + +ISR(USART0_TX_vect) +{ + interruptCounters[22]++; + usart.handleTX(); +} + +ISR(ANALOG_COMP_vect) +{ + interruptCounters[23]++; +} + ISR(ADC_vect) { + interruptCounters[24]++; adu.handleConversionComplete(); } + +ISR(EE_READY_vect) +{ + interruptCounters[25]++; +} + +ISR(TWI_vect) +{ + interruptCounters[26]++; +} + +ISR(SPM_READY_vect) +{ + interruptCounters[27]++; +} + +ISR(USART1_RX_vect) +{ + interruptCounters[28]++; +} + +ISR(USART1_UDRE_vect) +{ + interruptCounters[29]++; +} + +ISR(USART1_TX_vect) +{ + interruptCounters[30]++; +} + +ISR(TIMER3_CAPT_vect) +{ + interruptCounters[31]++; +} + +ISR(TIMER3_COMPA_vect) +{ + interruptCounters[32]++; +} + +ISR(TIMER3_COMPB_vect) +{ + interruptCounters[33]++; +} + +ISR(TIMER3_OVF_vect) +{ + interruptCounters[34]++; +} diff --git a/firmware/main.cpp b/firmware/main.cpp index 96f004f..45d21dc 100644 --- a/firmware/main.cpp +++ b/firmware/main.cpp @@ -4,7 +4,7 @@ #include #include "global_vars.h" #include "selftest.h" -#include "requests.h" +#include "request_handlers.h" int main() diff --git a/firmware/requests.cpp b/firmware/request_handlers.cpp similarity index 93% rename from firmware/requests.cpp rename to firmware/request_handlers.cpp index bd3c014..8896e8f 100644 --- a/firmware/requests.cpp +++ b/firmware/request_handlers.cpp @@ -1,4 +1,4 @@ -#include "requests.h" +#include "request_handlers.h" void handleRequest() { diff --git a/firmware/requests.h b/firmware/request_handlers.h similarity index 100% rename from firmware/requests.h rename to firmware/request_handlers.h diff --git a/firmware/usart.h b/firmware/usart.h index a6cd610..2d70a23 100644 --- a/firmware/usart.h +++ b/firmware/usart.h @@ -6,7 +6,7 @@ class USART; #include "global_vars.h" -#include "requests.h" +#include "request_handlers.h" class USART {