Class ArchAVR_USART
Defined in File arch_avr_usart.h
Nested Relationships
Nested Types
Inheritance Relationships
Base Type
public Peripheral(Class Peripheral)
Class Documentation
-
class ArchAVR_USART : public Peripheral
Implementation of a USART interface for AVR series.
Supported features:
8-bits frames only, regardless of the frame size setting
stop bits and parity settings have no effect
synchronous, SPI and MPCM modes are not supported
RXC, TXC, UDRE interrupts are supported
Error flags are not supported
CTLREQs supported:
AVR_CTLREQ_GET_SIGNAL : returns in data.p the signal of the underlying UART (see sim_uart.h)
AVR_CTLREQ_UART_ENDPOINT : returns in data.p the endpoint to use in order to transmit data in and out (see sim_uart.h)
Public Functions
-
ArchAVR_USART(uint8_t num, const ArchAVR_USARTConfig &config)
-
virtual ~ArchAVR_USART()
-
virtual bool init(Device &device) override
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.
-
virtual void reset() override
Virtual method called when the device is reset. Note that resetting I/O registers is only necessary here if their reset value is not zero.
-
virtual bool ctlreq(ctlreq_id_t req, ctlreq_data_t *data) override
Virtual method called for a CTL request. The method must return true if the request has been processed.
-
virtual uint8_t ioreg_read_handler(reg_addr_t addr, uint8_t value) override
Virtual method called when the CPU is reading a I/O register allocated by this peripheral. The value has not been read yet so the module can modify it before the CPU gets it.
- Parameters:
addr – the register address in I/O space
value – current cached value of the register
- Returns:
actual value of the register
-
virtual void ioreg_write_handler(reg_addr_t addr, const ioreg_write_t &data) override
Virtual method called when the CPU is writing a I/O register allocated by this peripheral. The value has already been written.
- Parameters:
addr – the register address in I/O space
value – the new register content
-
class _Controller : public UART::USART
Public Functions
-
inline _Controller(ArchAVR_USART &per)
-
inline _Controller(ArchAVR_USART &per)
-
class _PinDriver : public PinDriver
Public Functions
-
_PinDriver(ArchAVR_USART &per)
-
void reset()
-
void set_line_enabled(Line line, bool enabled)
-
void set_line_state(Line line, bool state)
-
bool get_line_state(Line line) const
-
virtual Pin::controls_t override_gpio(pin_index_t pin_index, const Pin::controls_t &gpio_controls) override
Stub called when a state resolution is taking place on a pin that the driver is controlling. The reimplementation should make a copy of the controls structure in argument, change its members according to the override state and return the result.
- Parameters:
pin_index – index of the pin
controls – pin controls as configured by the GPIO port controller
- Returns:
the controls to apply to the pin
-
virtual void digital_state_changed(pin_index_t pin_index, bool dig_state) override
Stub called when the digital state of a pin has changed after a state resolution.
- Parameters:
pin_index – Index of the pin
state – New digital state of the pin
-
_PinDriver(ArchAVR_USART &per)