ArchAVR_IntCtrl Class Reference

yasimavr: ArchAVR_IntCtrl Class Reference
yasimavr
Loading...
Searching...
No Matches
ArchAVR_IntCtrl Class Reference

Implementation of a interrupt controller for AVR series. More...

#include <arch_avr_misc.h>

Inheritance diagram for ArchAVR_IntCtrl:
InterruptController Peripheral IORegHandler

Public Member Functions

 ArchAVR_IntCtrl (const ArchAVR_IntCtrlConfig &config)
 
virtual bool init (Device &device) override
 
void ioreg_write_handler (reg_addr_t addr, const ioreg_write_t &data)
 
- Public Member Functions inherited from InterruptController
 InterruptController (unsigned int vector_count)
 
virtual void reset (int flags) override
 
virtual bool ctlreq (ctlreq_id_t req, ctlreq_data_t *data) override
 
virtual void sleep (bool on, SleepMode mode) override
 
bool cpu_has_irq () const
 
IRQ_t cpu_get_irq () const
 
void cpu_ack_irq ()
 
virtual void cpu_reti ()
 
- Public Member Functions inherited from Peripheral
 Peripheral (ctl_id_t id)
 
virtual ~Peripheral ()
 
ctl_id_t id () const
 Unique identifier of the peripheral.
 
std::string name () const
 The name of the peripheral.
 
virtual uint8_t ioreg_read_handler (reg_addr_t addr, uint8_t value) override
 
virtual uint8_t ioreg_peek_handler (reg_addr_t addr, uint8_t value) override
 
 Peripheral (const Peripheral &)=delete
 
Peripheraloperator= (const Peripheral &)=delete
 
- Public Member Functions inherited from IORegHandler
virtual ~IORegHandler ()=default
 

Additional Inherited Members

- Public Types inherited from InterruptController
enum  SignalId { Signal_StateChange }
 
enum  State {
  State_Raised = 0x01 , State_Cancelled = 0x10 , State_Acknowledged = 0x20 , State_Returned = 0x30 ,
  State_RaisedFromSleep = 0x41 , State_Reset = 0x50
}
 
- Static Public Attributes inherited from InterruptController
static constexpr IRQ_t NO_INTERRUPT = { AVR_INTERRUPT_NONE, 0, false }
 
- Protected Member Functions inherited from InterruptController
bool interrupt_raised (int_vect_t vector) const
 Interrupt state getter.
 
int_vect_t intr_count () const
 Interrupt table size getter.
 
void set_interrupt_raised (int_vect_t vector, bool raised)
 Interrupt state setter.
 
virtual void cpu_ack_irq (int_vect_t vector)
 
void update_irq ()
 
- Protected Member Functions inherited from Peripheral
Devicedevice () const
 Access to the device. It is null before init() is called.
 
Loggerlogger ()
 Logging object associated with this peripheral.
 
bool register_interrupt (int_vect_t vector, InterruptHandler &handler) const
 
Signalget_signal (ctl_id_t ctl_id) const
 
void add_ioreg (const regmask_t &rm, IORegister::BitMode bitmode=IORegister::RW)
 
void add_ioreg (const regbit_compound_t &rbc, IORegister::BitMode bitmode=IORegister::RW)
 
void add_ioreg (reg_addr_t addr, IORegister::BitMode bitmode=IORegister::RW)
 
void add_ioreg (reg_addr_t addr, bitmask_t mask, IORegister::BitMode bitmode=IORegister::RW)
 
uint8_t read_ioreg (const regbit_t &rb) const
 
uint64_t read_ioreg (const regbit_compound_t &rbc) const
 
uint8_t read_ioreg (reg_addr_t addr) const
 
uint8_t read_ioreg (reg_addr_t addr, const bitspec_t &bs) const
 
bool test_ioreg (const regbit_t &rb) const
 
bool test_ioreg (const regbit_compound_t &rbc) const
 
bool test_ioreg (reg_addr_t addr, const bitspec_t &bs) const
 
bool test_ioreg (reg_addr_t addr, bitmask_t bm=0xFF) const
 
void write_ioreg (reg_addr_t addr, bitmask_t bm, uint8_t value)
 
void write_ioreg (const regbit_t &rb, uint8_t value)
 
void write_ioreg (const regbit_compound_t &rbc, uint64_t value)
 
void write_ioreg (reg_addr_t addr, uint8_t value)
 
void write_ioreg (reg_addr_t addr, const bitspec_t &bs, uint8_t value)
 
void set_ioreg (reg_addr_t addr, bitmask_t bm=0xFF)
 
void set_ioreg (const regbit_t &rb)
 
void set_ioreg (const regbit_compound_t &rbc)
 
void set_ioreg (reg_addr_t addr, const bitspec_t &bs)
 
void clear_ioreg (reg_addr_t addr, bitmask_t bm=0xFF)
 
void clear_ioreg (const regbit_t &rb)
 
void clear_ioreg (const regbit_compound_t &rbc)
 
void clear_ioreg (reg_addr_t addr, const bitspec_t &bs)
 

Detailed Description

Implementation of a interrupt controller for AVR series.

Constructor & Destructor Documentation

◆ ArchAVR_IntCtrl()

ArchAVR_IntCtrl::ArchAVR_IntCtrl ( const ArchAVR_IntCtrlConfig config)

Member Function Documentation

◆ init()

bool ArchAVR_IntCtrl::init ( Device device)
overridevirtual

Virtual method called when the device is initialised. This is where the peripheral can allocate its I/O registers, interrupts or connect signals.

Returns
boolean indicates the success of all allocations.

Reimplemented from Peripheral.

◆ ioreg_write_handler()

void ArchAVR_IntCtrl::ioreg_write_handler ( reg_addr_t  addr,
const ioreg_write_t value 
)
virtual

Virtual method called when the CPU is writing a I/O register allocated by this peripheral. The value has already been written.

Parameters
addrthe register address in I/O space
valuethe new register content

Reimplemented from Peripheral.


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