2 Commits

2 changed files with 11 additions and 4 deletions

View File

@@ -68,9 +68,11 @@ class Hardware {
constexpr uint8_t ControlRegC = DataBitsValues.regCVal | ParityVal | StopBitsVal | ModeVal; constexpr uint8_t ControlRegC = DataBitsValues.regCVal | ParityVal | StopBitsVal | ModeVal;
if constexpr (UseDoubleSpeed) if constexpr (UseDoubleSpeed)
*getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() |= (1 << CtrlFlagsA::SPEED_2X); *getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() =
*getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() | (1 << CtrlFlagsA::SPEED_2X);
else else
*getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() &= ~(1 << CtrlFlagsA::SPEED_2X); *getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() =
*getRegPtr<Registers::CTRL_STAT_REG_A_ADDR>() & ~(1 << CtrlFlagsA::SPEED_2X);
*getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() = ControlRegB; *getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() = ControlRegB;
*getRegPtr<Registers::CTRL_STAT_REG_C_ADDR>() = ControlRegC; *getRegPtr<Registers::CTRL_STAT_REG_C_ADDR>() = ControlRegC;
@@ -130,12 +132,14 @@ class Hardware {
static void enableDataRegEmptyInt() FORCE_INLINE static void enableDataRegEmptyInt() FORCE_INLINE
{ {
*getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() |= (1 << CtrlFlagsB::DATA_REG_EMPTY_INT_ENABLE); *getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() =
*getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() | (1 << CtrlFlagsB::DATA_REG_EMPTY_INT_ENABLE);
} }
static void disableDataRegEmptyInt() FORCE_INLINE static void disableDataRegEmptyInt() FORCE_INLINE
{ {
*getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() &= ~(1 << CtrlFlagsB::DATA_REG_EMPTY_INT_ENABLE); *getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() =
*getRegPtr<Registers::CTRL_STAT_REG_B_ADDR>() & ~(1 << CtrlFlagsB::DATA_REG_EMPTY_INT_ENABLE);
} }
private: private:
@@ -275,6 +279,7 @@ template <class Registers, typename CtrlFlagsA, typename CtrlFlagsB, typename Ct
class BlockingHardware { class BlockingHardware {
public: public:
using data_t = typename cfg::data_t; using data_t = typename cfg::data_t;
static constexpr auto BAUD_RATE = cfg::BAUD_RATE;
static constexpr auto DATA_BITS = cfg::DATA_BITS; static constexpr auto DATA_BITS = cfg::DATA_BITS;
static void init() FORCE_INLINE static void init() FORCE_INLINE
@@ -320,6 +325,7 @@ template <class Registers, typename CtrlFlagsA, typename CtrlFlagsB, typename Ct
class InterruptHardware { class InterruptHardware {
public: public:
using data_t = typename cfg::data_t; using data_t = typename cfg::data_t;
static constexpr auto BAUD_RATE = cfg::BAUD_RATE;
static constexpr auto DATA_BITS = cfg::DATA_BITS; static constexpr auto DATA_BITS = cfg::DATA_BITS;
static void txByte(const data_t &byte) FORCE_INLINE static void txByte(const data_t &byte) FORCE_INLINE

View File

@@ -158,3 +158,4 @@ void USART1_UDRE_vect() __attribute__((signal));
#endif #endif
#undef FORCE_INLINE #undef FORCE_INLINE