[code struct CLASS_NAME {
\
using DataT = DATA_TYPE;
\
\
static volatile DataT* Addr() {return ®_NAME
;} \
\
static DataT Get () {return REG_NAME
;} \
static void Set (auto value){ REG_NAME =
DataT(value);} \
static void Or (auto value){ REG_NAME |=
DataT(value);} \
\
static void And (auto value){ REG_NAME &=
DataT(value);} \
static void Xor (auto value){ REG_NAME ^=
DataT(value);} \
\
static void AndOr (auto andMask,
\
auto orMask ) { REG_NAME =
\
( REG_NAME & DataT(
andMask)\
|
DataT(orMask);}\
static void ClrSet (auto andMask,
\
auto orMask ) { REG_NAME =
\
( REG_NAME &
DataT(~andMask)\
|
DataT(orMask);}\
\
static bool BitIsSet (auto mask) {return (REG_NAME &
DataT(mask));} \
static bool BitIsClear(auto mask) {return!(REG_NAME &
DataT(mask));} \
};[/code]
Beitrag #6759012 wurde von einem Moderator gelöscht.
1 | |
2 | template<> |
3 | struct TimerRegs<3> { ... // ATmega1284 |
4 | |
5 | enum class tmode : DataT { |
6 | // ****************
|
7 | wgm0 = 1 << WGM10, // waveform0 gen. mode TCCRA | bit0 |
8 | wgm1 = 1 << WGM11, // waveform0 gen. mode TCCRA | bit1 |
9 | // ----------------------------------------------- // --------------------------------
|
10 | wgm2 = 1 << WGM12, // waveform0 gen. mode TCCRB | bit3 |
11 | wgm3 = 1 << WGM13, // waveform0 gen. mode TCCRB | bit4 |
12 | // ----------------------------------------------- //---------------------------------
|
13 | Normal = 0, |
14 | PwmPhaseCorrect8Bit = wgm0, |
15 | PwmPhaseCorrect9Bit = wgm1, |
16 | PwmPhaseCorrect10Bit = wgm1|wgm0, |
17 | ClearOnCompareOCRA = wgm2, |
18 | PwmFast8Bit = wgm2| wgm0, |
19 | PwmFast9Bit = wgm2|wgm1, |
20 | PwmFast10Bit = wgm2|wgm1|wgm0, |
21 | PwmPhaseAndFreqCorrectToICR = wgm3, |
22 | PwmPhaseAndFreqCorrectToOCRA = wgm3| wgm0, |
23 | PwmPhaseCorrectToICR = wgm3| wgm1, |
24 | PwmPhaseCorrectToOCRA = wgm3| wgm1|wgm0, |
25 | ClearOnCompareICR = wgm3|wgm2, |
26 | // Reserved = wgm3|wgm2| wgm0,
|
27 | PwmFastToICR = wgm3|wgm2|wgm1, |
28 | PwmFastToOCRA = wgm3|wgm2|wgm1|wgm0, |
29 | // ------------------------------------------------------
|
30 | clearmask_cca = wgm1|wgm0, |
31 | // ------------------------------------------------------
|
32 | clearmask_ccb = wgm3|wgm2 |
33 | };
|
34 | ...
|
35 | } //.TimerRegs |
36 | |
37 | // enum class - bitmask operators
|
38 | // **********************************************|
|
39 | template<> struct std::enable_bitmask_operators <Mcucpp::Timers::TimerRegs<3>::tmode> |
40 | { static constexpr bool enable = true; }; |
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.