Added support for hardware toggle
This commit is contained in:
parent
468368692e
commit
c1820f62f1
12
io.hpp
12
io.hpp
@ -14,6 +14,10 @@
|
||||
defined(__AVR_ATmega8__) || defined(__AVR_ATmega8A__) || defined(__AVR_ATmega168A__) || defined(__AVR_ATmega328P__)
|
||||
#define GPIO_6 defined(__AVR_ATtiny13A__) || defined(__AVR_ATtiny85__)
|
||||
|
||||
#define HARDWARE_TOGGLE \
|
||||
defined(__AVR_ATmega644P__) || defined(__AVR_ATmega1284P__) || defined(__AVR_ATmega168A__) || \
|
||||
defined(__AVR_ATmega328P__) || defined(__AVR_ATtiny13A__) || defined(__AVR_ATtiny85__)
|
||||
|
||||
#define PORT_A_AVAILABLE GPIO_32
|
||||
#define PORT_B_AVAILABLE GPIO_32 || GPIO_23 || GPIO_6
|
||||
#define PORT_C_AVAILABLE GPIO_32 || GPIO_23
|
||||
@ -255,11 +259,19 @@ class Pin {
|
||||
|
||||
static inline void toggle() FORCE_INLINE
|
||||
{
|
||||
#if HARDWARE_TOGGLE
|
||||
constexpr auto bus = detail::getBus(pin);
|
||||
constexpr auto pinReg = detail::getPIN(bus);
|
||||
constexpr auto pinBit = detail::getPin(pin);
|
||||
|
||||
*pinReg |= (1 << pinBit);
|
||||
#else
|
||||
constexpr auto bus = detail::getBus(pin);
|
||||
constexpr auto portReg = detail::getPORT(bus);
|
||||
constexpr auto pinBit = detail::getPin(pin);
|
||||
|
||||
*portReg ^= (1 << pinBit);
|
||||
#endif
|
||||
}
|
||||
|
||||
static inline bool read() FORCE_INLINE
|
||||
|
Loading…
Reference in New Issue
Block a user