simulavr
1.1.0
|
Timer unit with 16Bit counter and 2 output compare units, but 3 config registers. More...
#include <hwtimer.h>
Public Member Functions | |
HWTimer16_2C3 (AvrDevice *core, PrescalerMultiplexer *p, int unit, IRQLine *tov, IRQLine *tcompA, const PinAtPort &outA, IRQLine *tcompB, const PinAtPort &outB, IRQLine *ticap, ICaptureSource *icapsrc) | |
void | Reset (void) |
Perform a reset of this unit. More... | |
![]() | |
HWTimer16 (AvrDevice *core, PrescalerMultiplexer *p, int unit, IRQLine *tov, IRQLine *tcompA, const PinAtPort &outA, IRQLine *tcompB, const PinAtPort &outB, IRQLine *tcompC, const PinAtPort &outC, IRQLine *ticap, ICaptureSource *icapsrc) | |
![]() | |
BasicTimerUnit (AvrDevice *core, PrescalerMultiplexer *p, int unit, IRQLine *tov, IRQLine *tcap, ICaptureSource *icapsrc, int countersize=8) | |
Create a basic Timer/Counter unit. More... | |
~BasicTimerUnit () | |
virtual unsigned int | CpuCycle () |
Process timer/counter unit operations by CPU cycle. More... | |
void | RegisterACompForICapture (HWAcomp *acomp) |
register analog comparator unit for input capture source More... | |
void | SetACIC (bool acic) |
reflect ACIC flag to input capture source More... | |
void | SetTimerEventListener (TimerEventListener *listener) |
Set event listener. More... | |
![]() | |
Hardware (AvrDevice *core) | |
virtual | ~Hardware () |
virtual void | ClearIrqFlag (unsigned int vector) |
virtual bool | IsLevelInterrupt (unsigned int vector) |
virtual bool | LevelInterruptPending (unsigned int vector) |
![]() | |
TraceValueRegister (TraceValueRegister *parent, const std::string &name) | |
Create a TraceValueRegister, with a scope prefix built on parent scope + name. More... | |
TraceValueRegister () | |
Create a TraceValueRegister, with a empty scope name, single device application. More... | |
virtual | ~TraceValueRegister () |
const std::string | GetTraceValuePrefix (void) |
Returns the scope prefix. More... | |
const std::string | GetScopeName (void) |
Returns the scope name. More... | |
void | RegisterTraceValue (TraceValue *t) |
Registers a TraceValue for this register. More... | |
void | UnregisterTraceValue (TraceValue *t) |
Unregisters a TraceValue, remove it from register. More... | |
TraceValueRegister * | GetScopeGroupByName (const std::string &name) |
Get a here registered TraceValueRegister by it's name. More... | |
virtual TraceValue * | GetTraceValueByName (const std::string &name) |
Get a here registered TraceValue by it's name. More... | |
TraceValueRegister * | FindScopeGroupByName (const std::string &name) |
Seek for a TraceValueRegister by it's name. More... | |
TraceValue * | FindTraceValueByName (const std::string &name) |
Seek for a TraceValue by it's name. More... | |
TraceSet * | GetAllTraceValues (void) |
Get all here registered TraceValue's only (not with descending values) More... | |
TraceSet * | GetAllTraceValuesRecursive (void) |
Get all here registered TraceValue's with descending values. More... | |
Public Attributes | |
IOReg< HWTimer16_2C3 > | tccra_reg |
control register A More... | |
IOReg< HWTimer16_2C3 > | tccrb_reg |
control register B More... | |
IOReg< HWTimer16_2C3 > | tccrc_reg |
control register C More... | |
![]() | |
IOReg< HWTimer16 > | tcnt_h_reg |
counter register, high byte More... | |
IOReg< HWTimer16 > | tcnt_l_reg |
counter register, low byte More... | |
IOReg< HWTimer16 > | ocra_h_reg |
output compare A register, high byte More... | |
IOReg< HWTimer16 > | ocra_l_reg |
output compare A register, low byte More... | |
IOReg< HWTimer16 > | ocrb_h_reg |
output compare B register, high byte More... | |
IOReg< HWTimer16 > | ocrb_l_reg |
output compare B register, low byte More... | |
IOReg< HWTimer16 > | ocrc_h_reg |
output compare C register, high byte More... | |
IOReg< HWTimer16 > | ocrc_l_reg |
output compare C register, low byte More... | |
IOReg< HWTimer16 > | icr_h_reg |
input capture register, high byte More... | |
IOReg< HWTimer16 > | icr_l_reg |
input capture register, low byte More... | |
Protected Member Functions | |
void | Set_TCCRA (unsigned char val) |
Register access to set control register A. More... | |
unsigned char | Get_TCCRA () |
Register access to read control register A. More... | |
void | Set_TCCRB (unsigned char val) |
Register access to set control register B. More... | |
unsigned char | Get_TCCRB () |
Register access to read control register B. More... | |
void | Set_TCCRC (unsigned char val) |
Register access to set control register C. More... | |
unsigned char | Get_TCCRC () |
Register access to read control register C. More... | |
![]() | |
void | SetCompareRegister (int idx, bool high, unsigned char val) |
Setter method for compare register. More... | |
unsigned char | GetCompareRegister (int idx, bool high) |
Getter method for compare register. More... | |
void | SetComplexRegister (bool is_icr, bool high, unsigned char val) |
Setter method for TCNT and ICR register. More... | |
unsigned char | GetComplexRegister (bool is_icr, bool high) |
Getter method for TCNT and ICR register. More... | |
void | ChangeWGM (WGMtype mode) |
Change WGM mode, set counter limits. More... | |
void | Set_TCNTH (unsigned char val) |
Register access to set counter register high byte. More... | |
unsigned char | Get_TCNTH () |
Register access to read counter register high byte. More... | |
void | Set_TCNTL (unsigned char val) |
Register access to set counter register low byte. More... | |
unsigned char | Get_TCNTL () |
Register access to read counter register low byte. More... | |
void | Set_OCRAH (unsigned char val) |
Register access to set output compare register A high byte. More... | |
unsigned char | Get_OCRAH () |
Register access to read output compare register A high byte. More... | |
void | Set_OCRAL (unsigned char val) |
Register access to set output compare register A low byte. More... | |
unsigned char | Get_OCRAL () |
Register access to read output compare register A low byte. More... | |
void | Set_OCRBH (unsigned char val) |
Register access to set output compare register B high byte. More... | |
unsigned char | Get_OCRBH () |
Register access to read output compare register B high byte. More... | |
void | Set_OCRBL (unsigned char val) |
Register access to set output compare register B low byte. More... | |
unsigned char | Get_OCRBL () |
Register access to read output compare register B low byte. More... | |
void | Set_OCRCH (unsigned char val) |
Register access to set output compare register C high byte. More... | |
unsigned char | Get_OCRCH () |
Register access to read output compare register C high byte. More... | |
void | Set_OCRCL (unsigned char val) |
Register access to set output compare register C low byte. More... | |
unsigned char | Get_OCRCL () |
Register access to read output compare register C low byte. More... | |
void | Set_ICRH (unsigned char val) |
Register access to set input capture register high byte. More... | |
unsigned char | Get_ICRH () |
Register access to read input capture register high byte. More... | |
void | Set_ICRL (unsigned char val) |
Register access to set input capture register low byte. More... | |
unsigned char | Get_ICRL () |
Register access to read input capture register low byte. More... | |
![]() | |
void | CountTimer (void) |
Supports the count operation, emits count events to HandleEvent method. More... | |
virtual void | InputCapture (void) |
Supports the input capture function. More... | |
void | HandleEvent (CEtype event) |
Receives count events. More... | |
void | SetClockMode (int _cs) |
Set clock mode. More... | |
void | SetCounter (unsigned long val) |
Set the counter itself. More... | |
void | SetCompareOutputMode (int idx, COMtype mode) |
Set compare output mode. More... | |
void | SetCompareOutput (int idx) |
Set compare output pins in non pwm mode. More... | |
void | SetPWMCompareOutput (int idx, bool topOrDown) |
Set compare output pins in pwm mode. More... | |
bool | WGMisPWM (void) |
returns true, if WGM is in one of the PWM modes More... | |
bool | WGMuseICR (void) |
returns true, if WGM uses IC register for defining TOP counter value More... | |
void | WGMFunc_noop (CEtype event) |
WGM noop function. More... | |
void | WGMfunc_normal (CEtype event) |
WGM function for normal mode (unique for all different timers) More... | |
void | WGMfunc_ctc (CEtype event) |
WGM function for ctc mode (unique for all different timers) More... | |
void | WGMfunc_fastpwm (CEtype event) |
WGM function for fast pwm mode (unique for all different timers) More... | |
void | WGMfunc_pcpwm (CEtype event) |
WGM function for phase correct pwm mode (unique for all different timers) More... | |
void | WGMfunc_pfcpwm (CEtype event) |
WGM function for phase and frequency correct pwm mode (unique for all different timers) More... | |
![]() | |
virtual size_t | _tvr_getValuesCount (void) |
Get the count of all TraceValues, that are registered here and descending. More... | |
virtual void | _tvr_insertTraceValuesToSet (TraceSet &t) |
Insert all TraceValues into TraceSet, that registered here and descending. More... | |
Protected Attributes | |
unsigned char | tccra_val |
register value TCCRA More... | |
unsigned char | tccrb_val |
register value TCCRB More... | |
![]() | |
unsigned char | accessTempRegister |
the high byte temporary register for read/write access to TCNT and ICR More... | |
![]() | |
AvrDevice * | core |
pointer to device core More... | |
PrescalerMultiplexer * | premx |
prescaler multiplexer More... | |
IRQLine * | timerOverflow |
irq line for overflow interrupt More... | |
IRQLine * | timerCapture |
irq line for capture interrupt More... | |
unsigned long | vtcnt |
THE timercounter. More... | |
unsigned long | vlast_tcnt |
timercounter BEFORE count operation More... | |
int | updown_counting |
count direction control flag, true, if up/down counting More... | |
bool | count_down |
counter counts down, used for precise pwm modes More... | |
unsigned long | limit_bottom |
BOTTOM value for up/down counting. More... | |
unsigned long | limit_top |
TOP value for counting. More... | |
unsigned long | limit_max |
MAX value for counting. More... | |
unsigned long | icapRegister |
Input capture register. More... | |
ICaptureSource * | icapSource |
Input capture source. More... | |
bool | icapRisingEdge |
Input capture on rising edge. More... | |
bool | icapNoiseCanceler |
Noise canceler for input capturing enabled. More... | |
WGMtype | wgm |
waveform generation mode More... | |
wgmfunc_t | wgmfunc [WGM_tablesize] |
waveform generator mode function table More... | |
unsigned long | compare [OCRIDX_maxUnits] |
compare values for output compare events More... | |
unsigned long | compare_dbl [OCRIDX_maxUnits] |
double buffer values for compare values More... | |
bool | compareEnable [OCRIDX_maxUnits] |
enables compare operation More... | |
COMtype | com [OCRIDX_maxUnits] |
compare match output mode More... | |
IRQLine * | timerCompare [OCRIDX_maxUnits] |
irq line for compare interrupt More... | |
PinAtPort | compare_output [OCRIDX_maxUnits] |
output pins for compare units More... | |
bool | compare_output_state [OCRIDX_maxUnits] |
status compare output pin More... | |
Additional Inherited Members | |
![]() | |
enum | CEtype { EVT_TOP_REACHED = 0, EVT_MAX_REACHED, EVT_BOTTOM_REACHED, EVT_COMPARE_1, EVT_COMPARE_2, EVT_COMPARE_3 } |
event types for timer/counter More... | |
![]() | |
enum | WGMtype { WGM_NORMAL = 0, WGM_PCPWM_8BIT, WGM_PCPWM_9BIT, WGM_PCPWM_10BIT, WGM_CTC_OCRA, WGM_FASTPWM_8BIT, WGM_FASTPWM_9BIT, WGM_FASTPWM_10BIT, WGM_PFCPWM_ICR, WGM_PFCPWM_OCRA, WGM_PCPWM_ICR, WGM_PCPWM_OCRA, WGM_CTC_ICR, WGM_RESERVED, WGM_FASTPWM_ICR, WGM_FASTPWM_OCRA, WGM_tablesize } |
types of waveform generation modes More... | |
enum | COMtype { COM_NOOP = 0, COM_TOGGLE, COM_CLEAR, COM_SET } |
types of compare match output modes More... | |
enum | OCRIDXtype { OCRIDX_A = 0, OCRIDX_B, OCRIDX_C, OCRIDX_maxUnits } |
indices for OC units More... | |
typedef void(BasicTimerUnit::* | wgmfunc_t) (CEtype) |
Timer unit with 16Bit counter and 2 output compare units, but 3 config registers.
This timer unit is used by following devices: ATMega48/88/168/328.
TCCRxA register contains the following configuration bits (x=#timer):
+------+------+------+------+---+---+-----+-----+ |COMxA1|COMxA0|COMxB1|COMxB0| - | - |WGMx1|WGMx0| +------+------+------+------+---+---+-----+-----+
TCCRxB register contains the following configuration bits (x=#timer):
+----+------+---+-----+-----+----+----+----+ |ICNCx|ICESx| - |WGMx3|WGMx2|CSx2|CSx1|CSx0| +----+------+---+-----+-----+----+----+----+
TCCRxC register contains the following configuration bits (x=#timer):
+-----+-----+---+---+---+---+---+---+ |FOCxA|FOCxB| - | - | - | - | - | - | +-----+-----+---+---+---+---+---+---+
HWTimer16_2C3::HWTimer16_2C3 | ( | AvrDevice * | core, |
PrescalerMultiplexer * | p, | ||
int | unit, | ||
IRQLine * | tov, | ||
IRQLine * | tcompA, | ||
const PinAtPort & | outA, | ||
IRQLine * | tcompB, | ||
const PinAtPort & | outB, | ||
IRQLine * | ticap, | ||
ICaptureSource * | icapsrc | ||
) |
Definition at line 1185 of file hwtimer.cpp.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
virtual |
Perform a reset of this unit.
Reimplemented from HWTimer16.
Definition at line 1239 of file hwtimer.cpp.
References HWTimer16::Reset(), tccra_val, and tccrb_val.
|
protected |
Register access to set control register A.
Definition at line 1203 of file hwtimer.cpp.
References HWTimer16::ChangeWGM(), BasicTimerUnit::SetCompareOutputMode(), tccra_val, and BasicTimerUnit::wgm.
|
protected |
Register access to set control register B.
Definition at line 1215 of file hwtimer.cpp.
References HWTimer16::ChangeWGM(), BasicTimerUnit::icapNoiseCanceler, BasicTimerUnit::icapRisingEdge, BasicTimerUnit::SetClockMode(), tccrb_val, and BasicTimerUnit::wgm.
|
protected |
Register access to set control register C.
Definition at line 1228 of file hwtimer.cpp.
References BasicTimerUnit::SetCompareOutput(), and BasicTimerUnit::WGMisPWM().
IOReg<HWTimer16_2C3> HWTimer16_2C3::tccra_reg |
control register A
Definition at line 615 of file hwtimer.h.
Referenced by AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega668base::AvrDevice_atmega668base(), and AvrDevice_attiny2313::AvrDevice_attiny2313().
|
protected |
register value TCCRA
Definition at line 596 of file hwtimer.h.
Referenced by Reset(), and Set_TCCRA().
IOReg<HWTimer16_2C3> HWTimer16_2C3::tccrb_reg |
control register B
Definition at line 616 of file hwtimer.h.
Referenced by AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega668base::AvrDevice_atmega668base(), and AvrDevice_attiny2313::AvrDevice_attiny2313().
|
protected |
register value TCCRB
Definition at line 597 of file hwtimer.h.
Referenced by Reset(), and Set_TCCRB().
IOReg<HWTimer16_2C3> HWTimer16_2C3::tccrc_reg |
control register C
Definition at line 617 of file hwtimer.h.
Referenced by AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega668base::AvrDevice_atmega668base(), and AvrDevice_attiny2313::AvrDevice_attiny2313().