simulavr  1.1.0
TimerIRQRegister Class Reference

Provices flag and mask register for timer interrupts and connects irq lines to irqsystem. More...

#include <timerirq.h>

Inheritance diagram for TimerIRQRegister:

Public Member Functions

 TimerIRQRegister (AvrDevice *core, HWIrqSystem *irqsys, int regidx=-1)
 
void registerLine (int idx, IRQLine *irq)
 
void registerLine (int idx, const IRQLine &irq)
 
IRQLinegetLine (const std::string &name)
 
void fireInterrupt (int irqvector)
 
virtual void ClearIrqFlag (unsigned int vector)
 
virtual void Reset (void)
 
virtual unsigned char set_from_reg (const IOSpecialReg *reg, unsigned char nv)
 
virtual unsigned char get_from_client (const IOSpecialReg *reg, unsigned char v)
 
- Public Member Functions inherited from Hardware
 Hardware (AvrDevice *core)
 
virtual ~Hardware ()
 
virtual unsigned int CpuCycle (void)
 
virtual bool IsLevelInterrupt (unsigned int vector)
 
virtual bool LevelInterruptPending (unsigned int vector)
 
- Public Member Functions inherited from IOSpecialRegClient
virtual ~IOSpecialRegClient ()
 
- 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

IOSpecialReg timsk_reg
 the TIMSKx register More...
 
IOSpecialReg tifr_reg
 the TIFRx register More...
 

Private Attributes

HWIrqSystemirqsystem
 pointer to irq system More...
 
std::vector< IRQLinelines
 list with IRQ lines More...
 
std::map< std::string, int > name2line
 mapping IRQ line name to index More...
 
std::map< int, int > vector2line
 mapping IRQ vector to index More...
 
unsigned char irqmask
 mask register value; More...
 
unsigned char irqflags
 flag register value; More...
 
unsigned char bitmask
 mask for used bits in registers More...
 

Additional Inherited Members

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

Detailed Description

Provices flag and mask register for timer interrupts and connects irq lines to irqsystem.

Definition at line 61 of file timerirq.h.

Constructor & Destructor Documentation

◆ TimerIRQRegister()

TimerIRQRegister::TimerIRQRegister ( AvrDevice core,
HWIrqSystem irqsys,
int  regidx = -1 
)

Definition at line 72 of file timerirq.cpp.

References bitmask, IOSpecialReg::connectSRegClient(), Reset(), tifr_reg, and timsk_reg.

Member Function Documentation

◆ ClearIrqFlag()

void TimerIRQRegister::ClearIrqFlag ( unsigned int  vector)
virtual

This signals the hardware that the given IRQ vector has been handled by the AVR core.

Reimplemented from Hardware.

Definition at line 124 of file timerirq.cpp.

References HWIrqSystem::ClearIrqFlag(), IOSpecialReg::hardwareChange(), irqflags, irqsystem, tifr_reg, and vector2line.

Referenced by set_from_reg().

◆ fireInterrupt()

void TimerIRQRegister::fireInterrupt ( int  irqvector)

◆ get_from_client()

unsigned char TimerIRQRegister::get_from_client ( const IOSpecialReg reg,
unsigned char  v 
)
virtual

Informs your class, that a read access from IO register happens

Parameters
vthe internal saved register value (but maybe changed by other clients)
Returns
v, if nothing is changed or your changed value

Implements IOSpecialRegClient.

Definition at line 168 of file timerirq.cpp.

References irqflags, irqmask, and timsk_reg.

◆ getLine()

◆ registerLine() [1/2]

◆ registerLine() [2/2]

void TimerIRQRegister::registerLine ( int  idx,
const IRQLine irq 
)

◆ Reset()

void TimerIRQRegister::Reset ( void  )
virtual

Implement the hardware's reset functionality here. The default is no action on reset.

Reimplemented from Hardware.

Definition at line 131 of file timerirq.cpp.

References irqflags, irqmask, IOSpecialReg::Reset(), tifr_reg, and timsk_reg.

Referenced by TimerIRQRegister().

◆ set_from_reg()

unsigned char TimerIRQRegister::set_from_reg ( const IOSpecialReg reg,
unsigned char  nv 
)
virtual

Informs your class, that a write access to IO register is happen

Parameters
regcaller register instance
nvthe value, which is written to IO register (but maybe changed by other clients)
Returns
nv, if nothing is changed or your changed value

Implements IOSpecialRegClient.

Definition at line 138 of file timerirq.cpp.

References bitmask, ClearIrqFlag(), irqflags, irqmask, irqsystem, lines, HWIrqSystem::SetIrqFlag(), and timsk_reg.

Member Data Documentation

◆ bitmask

unsigned char TimerIRQRegister::bitmask
private

mask for used bits in registers

Definition at line 70 of file timerirq.h.

Referenced by registerLine(), set_from_reg(), and TimerIRQRegister().

◆ irqflags

unsigned char TimerIRQRegister::irqflags
private

flag register value;

Definition at line 69 of file timerirq.h.

Referenced by ClearIrqFlag(), fireInterrupt(), get_from_client(), Reset(), and set_from_reg().

◆ irqmask

unsigned char TimerIRQRegister::irqmask
private

mask register value;

Definition at line 68 of file timerirq.h.

Referenced by fireInterrupt(), get_from_client(), Reset(), and set_from_reg().

◆ irqsystem

HWIrqSystem* TimerIRQRegister::irqsystem
private

pointer to irq system

Definition at line 64 of file timerirq.h.

Referenced by ClearIrqFlag(), fireInterrupt(), registerLine(), and set_from_reg().

◆ lines

std::vector<IRQLine> TimerIRQRegister::lines
private

list with IRQ lines

Definition at line 65 of file timerirq.h.

Referenced by getLine(), registerLine(), and set_from_reg().

◆ name2line

std::map<std::string, int> TimerIRQRegister::name2line
private

mapping IRQ line name to index

Definition at line 66 of file timerirq.h.

Referenced by getLine(), and registerLine().

◆ tifr_reg

◆ timsk_reg

◆ vector2line

std::map<int, int> TimerIRQRegister::vector2line
private

mapping IRQ vector to index

Definition at line 67 of file timerirq.h.

Referenced by ClearIrqFlag(), fireInterrupt(), and registerLine().


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