|
simulavr
1.1.0
|
Timer unit with 16Bit counter and 2 output compare units and 2 config registers. More...
#include <hwtimer.h>
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... | |
| 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_2C2 > | tccra_reg |
| control register A More... | |
| IOReg< HWTimer16_2C2 > | tccrb_reg |
| control register B More... | |
Public Attributes inherited from HWTimer16 | |
| 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... | |
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 | |
| 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... | |
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) |
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!
| 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.
|
inlineprotected |
|
inlineprotected |
|
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.
|
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().
|
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.
|
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().
|
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().
| 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().
|
protected |
register value TCCRA
Definition at line 538 of file hwtimer.h.
Referenced by Reset(), and Set_TCCRA().
| 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().
|
protected |
register value TCCRB
Definition at line 539 of file hwtimer.h.
Referenced by Reset(), and Set_TCCRB().
|
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().