8 #define MAX_OUTPUTCOMPARE16_UNITS 2
15 * @brief 16-bit Output Compare Unit
17 * 16-bit Output Compare Unit
19 class OutputCompareUnit16
{
21 OutputCompareUnit16() : ocfmask(0), ocrl(0), ocrh(0) {}
24 void setOcrlRegister(IORegister
*ocrl
) { this->ocrl
= ocrl
; }
25 void setOcrhRegister(IORegister
*ocrh
) { this->ocrh
= ocrh
; }
26 bool ocrSet() const { return (ocrl
!= 0) && (ocrh
!= 0); }
27 void setMask(unsigned char ocfmask
) { this->ocfmask
= ocfmask
; }
28 void setCompareMode(unsigned char cm
) { this->compareMode
= cm
; }
29 void regChanged(IORegister
*reg
);
33 word
value() const { return ocrBuf
; }
34 void forceOutputCompare(IORegister
*tifr
, word tcnt
);
35 void compareMatchOutput(IORegister
*tifr
, word tcnt
);
39 unsigned char compareMode
;
40 unsigned char ocfmask
;
50 * @brief 16-bit timers
54 class Timer16
: public Hardware
{
56 Timer16(Bus
& bus
, unsigned char tovmask
, int compunits
,
57 unsigned char ocfmask
[]);
60 bool attachReg(const char *name
, IORegister
*reg
);
61 void regChanged( IORegister
*reg
);
67 void setClock(unsigned char tccr
);
70 unsigned char tovmask
;
74 bool blockCompareMatch
;
75 unsigned char timerMode
;
79 OutputCompareUnit16 units
[MAX_OUTPUTCOMPARE16_UNITS
];
91 #endif /*AVR_TIMER16_H*/