simulavr  1.1.0
HWTimer16_2C3 Class Reference

Timer unit with 16Bit counter and 2 output compare units, but 3 config registers. More...

#include <hwtimer.h>

Inheritance diagram for HWTimer16_2C3:

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...
 
- Public Member Functions inherited from HWTimer16
 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)
 
- Public Member Functions inherited from BasicTimerUnit
 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...
 
- Public Member Functions inherited from Hardware
 Hardware (AvrDevice *core)
 
virtual ~Hardware ()
 
virtual void ClearIrqFlag (unsigned int vector)
 
virtual bool IsLevelInterrupt (unsigned int vector)
 
virtual bool LevelInterruptPending (unsigned int vector)
 
- Public Member Functions inherited from TraceValueRegister
 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...
 
TraceValueRegisterGetScopeGroupByName (const std::string &name)
 Get a here registered TraceValueRegister by it's name. More...
 
virtual TraceValueGetTraceValueByName (const std::string &name)
 Get a here registered TraceValue by it's name. More...
 
TraceValueRegisterFindScopeGroupByName (const std::string &name)
 Seek for a TraceValueRegister by it's name. More...
 
TraceValueFindTraceValueByName (const std::string &name)
 Seek for a TraceValue by it's name. More...
 
TraceSetGetAllTraceValues (void)
 Get all here registered TraceValue's only (not with descending values) More...
 
TraceSetGetAllTraceValuesRecursive (void)
 Get all here registered TraceValue's with descending values. More...
 

Public Attributes

IOReg< HWTimer16_2C3tccra_reg
 control register A More...
 
IOReg< HWTimer16_2C3tccrb_reg
 control register B More...
 
IOReg< HWTimer16_2C3tccrc_reg
 control register C More...
 
- Public Attributes inherited from HWTimer16
IOReg< HWTimer16tcnt_h_reg
 counter register, high byte More...
 
IOReg< HWTimer16tcnt_l_reg
 counter register, low byte More...
 
IOReg< HWTimer16ocra_h_reg
 output compare A register, high byte More...
 
IOReg< HWTimer16ocra_l_reg
 output compare A register, low byte More...
 
IOReg< HWTimer16ocrb_h_reg
 output compare B register, high byte More...
 
IOReg< HWTimer16ocrb_l_reg
 output compare B register, low byte More...
 
IOReg< HWTimer16ocrc_h_reg
 output compare C register, high byte More...
 
IOReg< HWTimer16ocrc_l_reg
 output compare C register, low byte More...
 
IOReg< HWTimer16icr_h_reg
 input capture register, high byte More...
 
IOReg< HWTimer16icr_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...
 
- Protected Member Functions inherited from HWTimer16
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...
 
- Protected Member Functions inherited from BasicTimerUnit
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...
 
- Protected Member Functions inherited from TraceValueRegister
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...
 
- Protected Attributes inherited from HWTimer16
unsigned char accessTempRegister
 the high byte temporary register for read/write access to TCNT and ICR More...
 
- Protected Attributes inherited from BasicTimerUnit
AvrDevicecore
 pointer to device core More...
 
PrescalerMultiplexerpremx
 prescaler multiplexer More...
 
IRQLinetimerOverflow
 irq line for overflow interrupt More...
 
IRQLinetimerCapture
 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...
 
ICaptureSourceicapSource
 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...
 
IRQLinetimerCompare [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

- Public Types inherited from BasicTimerUnit
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...
 
- Protected Types inherited from BasicTimerUnit
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)
 

Detailed Description

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| - | - | - | - | - | - |
+-----+-----+---+---+---+---+---+---+ 

Definition at line 593 of file hwtimer.h.

Constructor & Destructor Documentation

◆ HWTimer16_2C3()

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.

Member Function Documentation

◆ Get_TCCRA()

unsigned char HWTimer16_2C3::Get_TCCRA ( )
inlineprotected

Register access to read control register A.

Definition at line 602 of file hwtimer.h.

◆ Get_TCCRB()

unsigned char HWTimer16_2C3::Get_TCCRB ( )
inlineprotected

Register access to read control register B.

Definition at line 607 of file hwtimer.h.

◆ Get_TCCRC()

unsigned char HWTimer16_2C3::Get_TCCRC ( )
inlineprotected

Register access to read control register C.

Definition at line 612 of file hwtimer.h.

◆ Reset()

void HWTimer16_2C3::Reset ( void  )
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.

◆ Set_TCCRA()

void HWTimer16_2C3::Set_TCCRA ( unsigned char  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.

◆ Set_TCCRB()

void HWTimer16_2C3::Set_TCCRB ( unsigned char  val)
protected

◆ Set_TCCRC()

void HWTimer16_2C3::Set_TCCRC ( unsigned char  val)
protected

Register access to set control register C.

Definition at line 1228 of file hwtimer.cpp.

References BasicTimerUnit::SetCompareOutput(), and BasicTimerUnit::WGMisPWM().

Member Data Documentation

◆ tccra_reg

◆ tccra_val

unsigned char HWTimer16_2C3::tccra_val
protected

register value TCCRA

Definition at line 596 of file hwtimer.h.

Referenced by Reset(), and Set_TCCRA().

◆ tccrb_reg

◆ tccrb_val

unsigned char HWTimer16_2C3::tccrb_val
protected

register value TCCRB

Definition at line 597 of file hwtimer.h.

Referenced by Reset(), and Set_TCCRB().

◆ tccrc_reg


The documentation for this class was generated from the following files: