[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.