Made library header only again and provided way to disable interrupt vectors
This commit is contained in:
parent
2fd05483ee
commit
ddf105a175
@ -338,7 +338,7 @@ class InterruptHardware {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static void rxIntHandler()
|
static void rxIntHandler() FORCE_INLINE
|
||||||
{
|
{
|
||||||
auto data = HardwareImpl::rxByteInterrupt();
|
auto data = HardwareImpl::rxByteInterrupt();
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
#include "hardware0.hpp"
|
|
||||||
|
|
||||||
#include <avr/interrupt.h>
|
|
||||||
|
|
||||||
namespace uart {
|
|
||||||
namespace detail {
|
|
||||||
|
|
||||||
#if defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega328P__)
|
|
||||||
|
|
||||||
#if defined(__AVR_ATmega328P__)
|
|
||||||
#define USART0_RX_vect USART_RX_vect
|
|
||||||
#define USART0_UDRE_vect USART_UDRE_vect
|
|
||||||
#endif
|
|
||||||
|
|
||||||
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
|
|
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef UART_HARDWARE_0_HPP
|
||||||
|
#define UART_HARDWARE_0_HPP
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -114,3 +115,47 @@ class Hardware0<cfg, Driven::INTERRUPT, mode>
|
|||||||
} // namespace uart
|
} // namespace uart
|
||||||
|
|
||||||
#undef FORCE_INLINE
|
#undef FORCE_INLINE
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifdef UART0_INT_VECTORS
|
||||||
|
|
||||||
|
#include <avr/interrupt.h>
|
||||||
|
|
||||||
|
namespace uart {
|
||||||
|
namespace detail {
|
||||||
|
|
||||||
|
#if defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega328P__)
|
||||||
|
|
||||||
|
#if defined(__AVR_ATmega328P__)
|
||||||
|
#define USART0_RX_vect USART_RX_vect
|
||||||
|
#define USART0_UDRE_vect USART_UDRE_vect
|
||||||
|
#endif
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
#undef UART0_INT_VECTORS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
#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();
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace detail
|
|
||||||
} // namespace uart
|
|
@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#ifndef UART_HARDWARE_1_HPP
|
||||||
|
#define UART_HARDWARE_1_HPP
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -118,3 +119,40 @@ class Hardware1<cfg, Driven::INTERRUPT, mode>
|
|||||||
} // namespace uart
|
} // namespace uart
|
||||||
|
|
||||||
#undef FORCE_INLINE
|
#undef FORCE_INLINE
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifdef UART1_INT_VECTORS
|
||||||
|
|
||||||
|
#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();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} // namespace detail
|
||||||
|
} // namespace uart
|
||||||
|
|
||||||
|
#undef UART1_INT_VECTORS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user