simulavr  1.1.0
HWTimer16_2C2 Class Reference

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

#include <hwtimer.h>

Inheritance diagram for HWTimer16_2C2:

Public Member Functions

 HWTimer16_2C2 (AvrDevice *core, PrescalerMultiplexer *p, int unit, IRQLine *tov, IRQLine *tcompA, const PinAtPort &outA, IRQLine *tcompB, const PinAtPort &outB, IRQLine *ticap, ICaptureSource *icapsrc, bool is_at8515)
 
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_2C2tccra_reg
 control register A More...
 
IOReg< HWTimer16_2C2tccrb_reg
 control register B 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...
 
- 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...
 

Private Member Functions

void Set_WGM (int val)
 Handle special WGM setting, translate wgm raw value to wgm value. More...
 

Private Attributes

int wgm_raw
 this is the wgm raw value from register More...
 
bool at8515_mode
 signals, that this timer units is used in AT90S8515 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 and 2 config registers.

This timer unit is used by following devices: ATMega16, AT90S8515.

TCCRxA register contains the following configuration bits (x=#timer):

+------+------+------+------+-----+-----+-----+-----+
|COMxA1|COMxA0|COMxB1|COMxB0|FOCxA|FOCxB|WGMx1|WGMx0|
+------+------+------+------+-----+-----+-----+-----+ 

On AT90S8515 FOCx bits are not available, WGMxy bits are named PWMxy!

TCCRxB register contains the following configuration bits (x=#timer):

+-----+-----+---+-----+-----+----+----+----+
|ICNCx|ICESx| - |WGMx3|WGMx2|CSx2|CSx1|CSx0|
+-----+-----+---+-----+-----+----+----+----+ 

On AT90S8515 WGMx3 bit is not available, WGMx2 bit is named CTCx!

Definition at line 528 of file hwtimer.h.

Constructor & Destructor Documentation

◆ HWTimer16_2C2()

HWTimer16_2C2::HWTimer16_2C2 ( AvrDevice core,
PrescalerMultiplexer p,
int  unit,
IRQLine tov,
IRQLine tcompA,
const PinAtPort outA,
IRQLine tcompB,
const PinAtPort outB,
IRQLine ticap,
ICaptureSource icapsrc,
bool  is_at8515 
)

Definition at line 1104 of file hwtimer.cpp.

Member Function Documentation

◆ Get_TCCRA()

unsigned char HWTimer16_2C2::Get_TCCRA ( )
inlineprotected

Register access to read control register A.

Definition at line 544 of file hwtimer.h.

◆ Get_TCCRB()

unsigned char HWTimer16_2C2::Get_TCCRB ( )
inlineprotected

Register access to read control register B.

Definition at line 549 of file hwtimer.h.

◆ Reset()

void HWTimer16_2C2::Reset ( void  )
virtual

Perform a reset of this unit.

Reimplemented from HWTimer16.

Definition at line 1178 of file hwtimer.cpp.

References HWTimer16::Reset(), tccra_val, tccrb_val, and wgm_raw.

◆ Set_TCCRA()

void HWTimer16_2C2::Set_TCCRA ( unsigned char  val)
protected

Register access to set control register A.

Definition at line 1146 of file hwtimer.cpp.

References at8515_mode, Set_WGM(), BasicTimerUnit::SetCompareOutput(), BasicTimerUnit::SetCompareOutputMode(), tccra_val, wgm_raw, and BasicTimerUnit::WGMisPWM().

◆ Set_TCCRB()

void HWTimer16_2C2::Set_TCCRB ( unsigned char  val)
protected

Register access to set control register B.

Definition at line 1165 of file hwtimer.cpp.

References at8515_mode, BasicTimerUnit::icapNoiseCanceler, BasicTimerUnit::icapRisingEdge, Set_WGM(), BasicTimerUnit::SetClockMode(), tccrb_val, and wgm_raw.

◆ Set_WGM()

void HWTimer16_2C2::Set_WGM ( int  val)
private

Handle special WGM setting, translate wgm raw value to wgm value.

Definition at line 1123 of file hwtimer.cpp.

References at8515_mode, HWTimer16::ChangeWGM(), BasicTimerUnit::WGM_CTC_OCRA, BasicTimerUnit::WGM_NORMAL, BasicTimerUnit::WGM_PCPWM_10BIT, BasicTimerUnit::WGM_PCPWM_8BIT, BasicTimerUnit::WGM_PCPWM_9BIT, and wgm_raw.

Referenced by Set_TCCRA(), and Set_TCCRB().

Member Data Documentation

◆ at8515_mode

bool HWTimer16_2C2::at8515_mode
private

signals, that this timer units is used in AT90S8515

Definition at line 532 of file hwtimer.h.

Referenced by Set_TCCRA(), Set_TCCRB(), and Set_WGM().

◆ tccra_reg

IOReg<HWTimer16_2C2> HWTimer16_2C2::tccra_reg

control register A

Definition at line 552 of file hwtimer.h.

Referenced by AvrDevice_atmega16_32::AvrDevice_atmega16_32().

◆ tccra_val

unsigned char HWTimer16_2C2::tccra_val
protected

register value TCCRA

Definition at line 538 of file hwtimer.h.

Referenced by Reset(), and Set_TCCRA().

◆ tccrb_reg

IOReg<HWTimer16_2C2> HWTimer16_2C2::tccrb_reg

control register B

Definition at line 553 of file hwtimer.h.

Referenced by AvrDevice_atmega16_32::AvrDevice_atmega16_32().

◆ tccrb_val

unsigned char HWTimer16_2C2::tccrb_val
protected

register value TCCRB

Definition at line 539 of file hwtimer.h.

Referenced by Reset(), and Set_TCCRB().

◆ wgm_raw

int HWTimer16_2C2::wgm_raw
private

this is the wgm raw value from register

Definition at line 531 of file hwtimer.h.

Referenced by Reset(), Set_TCCRA(), Set_TCCRB(), and Set_WGM().


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