Implemented toggle function for pins
This commit is contained in:
parent
42bc1147b8
commit
cf3e0664b5
17
inout.h
17
inout.h
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) by BlackMark 2015-2018
|
* Copyright (c) by BlackMark 2015-2019
|
||||||
* Date 26/04/2018
|
* Date 02/01/2019
|
||||||
* Version 3.0
|
* Version 3.1
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef INOUT_H
|
#ifndef INOUT_H
|
||||||
@ -207,6 +207,7 @@ public:
|
|||||||
|
|
||||||
static inline bool read() __attribute__( (always_inline) );
|
static inline bool read() __attribute__( (always_inline) );
|
||||||
static inline void write( bool bValue ) __attribute__( (always_inline) );
|
static inline void write( bool bValue ) __attribute__( (always_inline) );
|
||||||
|
static inline void toggle() __attribute__( (always_inline) );
|
||||||
};
|
};
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
@ -255,6 +256,16 @@ inline void InOutPin<enmPin>::write( bool bValue )
|
|||||||
*vpui8PORT &= ~( 1 << ui8Pin );
|
*vpui8PORT &= ~( 1 << ui8Pin );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
template<InOut::Pin enmPin>
|
||||||
|
inline void InOutPin<enmPin>::toggle()
|
||||||
|
{
|
||||||
|
constexpr volatile uint8_t *vpui8PORT = InOut::getPort( enmPin, InOut::Type::PORT );
|
||||||
|
constexpr uint8_t ui8Pin = InOut::getPin( enmPin );
|
||||||
|
|
||||||
|
*vpui8PORT ^= ( 1 << ui8Pin );
|
||||||
|
}
|
||||||
|
|
||||||
/************************************************************************/
|
/************************************************************************/
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user