Moved interrupt vectors to their own translation unit to solve redefinition error
This commit is contained in:
parent
33c3cedb1e
commit
2cd4069654
30
hardware0.cpp
Normal file
30
hardware0.cpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include "hardware0.hpp"
|
||||
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
namespace uart {
|
||||
namespace detail {
|
||||
|
||||
#if defined(__AVR_ATmega1284P__)
|
||||
|
||||
void (*fnRx0IntHandler)() = nullptr;
|
||||
void (*fnDataReg0EmptyIntHandler)() = nullptr;
|
||||
|
||||
ISR(USART0_RX_vect)
|
||||
{
|
||||
if (fnRx0IntHandler)
|
||||
fnRx0IntHandler();
|
||||
}
|
||||
|
||||
ISR(USART0_UDRE_vect)
|
||||
{
|
||||
if (fnDataReg0EmptyIntHandler)
|
||||
fnDataReg0EmptyIntHandler();
|
||||
}
|
||||
|
||||
#else
|
||||
#error "This chip is not supported"
|
||||
#endif
|
||||
|
||||
} // namespace detail
|
||||
} // namespace uart
|
@ -63,20 +63,8 @@ constexpr int operator<<(const int &lhs, const ControlFlagsB0 &rhs) { return lhs
|
||||
constexpr int operator<<(const int &lhs, const ControlFlagsC0 &rhs) { return lhs << static_cast<int>(rhs); }
|
||||
// clang-format on
|
||||
|
||||
static void (*fnRx0IntHandler)() = nullptr;
|
||||
static void (*fnDataReg0EmptyIntHandler)() = nullptr;
|
||||
|
||||
ISR(USART0_RX_vect)
|
||||
{
|
||||
if (fnRx0IntHandler)
|
||||
fnRx0IntHandler();
|
||||
}
|
||||
|
||||
ISR(USART0_UDRE_vect)
|
||||
{
|
||||
if (fnDataReg0EmptyIntHandler)
|
||||
fnDataReg0EmptyIntHandler();
|
||||
}
|
||||
extern void (*fnRx0IntHandler)();
|
||||
extern void (*fnDataReg0EmptyIntHandler)();
|
||||
|
||||
#else
|
||||
#error "This chip is not supported"
|
||||
|
30
hardware1.cpp
Normal file
30
hardware1.cpp
Normal file
@ -0,0 +1,30 @@
|
||||
#include "hardware1.hpp"
|
||||
|
||||
#include <avr/interrupt.h>
|
||||
|
||||
namespace uart {
|
||||
namespace detail {
|
||||
|
||||
#if defined(__AVR_ATmega1284P__)
|
||||
|
||||
void (*fnRx1IntHandler)() = nullptr;
|
||||
void (*fnDataReg1EmptyIntHandler)() = nullptr;
|
||||
|
||||
ISR(USART1_RX_vect)
|
||||
{
|
||||
if (fnRx1IntHandler)
|
||||
fnRx1IntHandler();
|
||||
}
|
||||
|
||||
ISR(USART1_UDRE_vect)
|
||||
{
|
||||
if (fnDataReg1EmptyIntHandler)
|
||||
fnDataReg1EmptyIntHandler();
|
||||
}
|
||||
|
||||
#else
|
||||
#error "This chip is not supported"
|
||||
#endif
|
||||
|
||||
} // namespace detail
|
||||
} // namespace uart
|
@ -63,20 +63,8 @@ constexpr int operator<<(const int &lhs, const ControlFlagsB1 &rhs) { return lhs
|
||||
constexpr int operator<<(const int &lhs, const ControlFlagsC1 &rhs) { return lhs << static_cast<int>(rhs); }
|
||||
// clang-format on
|
||||
|
||||
static void (*fnRx1IntHandler)() = nullptr;
|
||||
static void (*fnDataReg1EmptyIntHandler)() = nullptr;
|
||||
|
||||
ISR(USART1_RX_vect)
|
||||
{
|
||||
if (fnRx1IntHandler)
|
||||
fnRx1IntHandler();
|
||||
}
|
||||
|
||||
ISR(USART1_UDRE_vect)
|
||||
{
|
||||
if (fnDataReg1EmptyIntHandler)
|
||||
fnDataReg1EmptyIntHandler();
|
||||
}
|
||||
extern void (*fnRx1IntHandler)();
|
||||
extern void (*fnDataReg1EmptyIntHandler)();
|
||||
|
||||
#define HAS_UART1
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user