simulavr
1.1.0
|
Defines a Port, e.g. a hardware device for GPIO. More...
#include <hwport.h>
Public Member Functions | |
HWPort (AvrDevice *core, const std::string &name, bool portToggle=false, int size=8) | |
~HWPort () | |
void | CalcOutputs (void) |
Calculate the new output value to be transmitted to the environment. More... | |
std::string | GetPortString (void) |
returns a string representation of output states More... | |
void | Reset (void) |
std::string | GetName (void) |
returns the port name as given in constructor More... | |
Pin & | GetPin (unsigned char pinNo) |
returns a pin reference of pin with pin number More... | |
int | GetPortSize (void) |
returns, how much bits this port controls More... | |
void | SetPort (unsigned char val) |
setter method for port register More... | |
void | SetDdr (unsigned char val) |
setter method for data direction register More... | |
void | SetPin (unsigned char val) |
setter method for PIN register (for new devices with toggle port) More... | |
void | SetPinBit (bool bit, unsigned int bitaddr) |
unsigned char | GetPort () |
getter method for port register More... | |
unsigned char | GetDdr () |
getter method for data direction register More... | |
unsigned char | GetPin () |
getter method for PIN register More... | |
unsigned char | GetPinBit (unsigned int bitaddr) |
![]() | |
Hardware (AvrDevice *core) | |
virtual | ~Hardware () |
virtual unsigned int | CpuCycle (void) |
virtual void | ClearIrqFlag (unsigned int vector) |
virtual bool | IsLevelInterrupt (unsigned int vector) |
virtual bool | LevelInterruptPending (unsigned int vector) |
![]() | |
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< HWPort > | port_reg |
IOReg< HWPort > | pin_reg |
IOReg< HWPort > | ddr_reg |
Protected Attributes | |
std::string | myName |
the "name" of the port More... | |
unsigned char | port |
port output register More... | |
unsigned char | pin |
port input register More... | |
unsigned char | ddr |
data direction register More... | |
PortPin | p [8] |
the port pins, e.g. the final IO stages More... | |
TraceValue * | pintrace [8] |
trace channel to trace output driver state More... | |
unsigned int | portSize |
how much bits does this port have [1..8] More... | |
unsigned char | portMask |
mask out unused bits, if necessary More... | |
bool | portToggleFeature |
controls functionality of SetPin method (write to PIN toggles port register) More... | |
Friends | |
class | PinAtPort |
Additional Inherited Members | |
![]() | |
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... | |
Defines a Port, e.g. a hardware device for GPIO.
Example for use alternateDdr and useAlternateDdr: If the UART Tx will be enabled, the UART set alternateDdr to output, useAlternateDdr to 1 and sets port according to Tx Pin value, thats all :-)
useAlternatePortIfDdrSet: special case for the OCR outputs, which only be connected to pin if ddr is set to output!
HWPort::HWPort | ( | AvrDevice * | core, |
const std::string & | name, | ||
bool | portToggle = false , |
||
int | size = 8 |
||
) |
Definition at line 34 of file hwport.cpp.
References TraceValueRegister::GetTraceValuePrefix(), Pin::mask, p, pin, pin_reg, Pin::pinOfPort, Pin::pinRegOfPort, pintrace, portMask, portSize, AvrDevice::RegisterPin(), TraceValueRegister::RegisterTraceValue(), Reset(), TraceValue::set_written(), and Pin::TRISTATE.
HWPort::~HWPort | ( | ) |
Definition at line 71 of file hwport.cpp.
References pintrace, portSize, and TraceValueRegister::UnregisterTraceValue().
void HWPort::CalcOutputs | ( | void | ) |
Calculate the new output value to be transmitted to the environment.
Definition at line 92 of file hwport.cpp.
References TraceValue::change(), ddr, IOReg< P >::hardwareChange(), p, pin, pin_reg, pintrace, port, and portSize.
Referenced by Reset(), PinAtPort::SetAlternateDdr(), PinAtPort::SetAlternatePort(), PinAtPort::SetAlternatePullup(), PinAtPort::SetDdr(), SetDdr(), SetPin(), PinAtPort::SetPort(), SetPort(), PinAtPort::SetUseAlternateDdr(), PinAtPort::SetUseAlternatePort(), PinAtPort::SetUseAlternatePortIfDdrSet(), and PinAtPort::SetUseAlternatePullup().
|
inline |
|
inline |
Pin & HWPort::GetPin | ( | unsigned char | pinNo | ) |
returns a pin reference of pin with pin number
Definition at line 87 of file hwport.cpp.
References p.
Referenced by AvrDevice_at90canbase::AvrDevice_at90canbase(), AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega128base::AvrDevice_atmega128base(), AvrDevice_atmega16_32::AvrDevice_atmega16_32(), AvrDevice_atmega2560base::AvrDevice_atmega2560base(), AvrDevice_atmega668base::AvrDevice_atmega668base(), AvrDevice_attinyX5::AvrDevice_attinyX5(), ExternalIRQPort::ExternalIRQPort(), PinAtPort::GetPin(), and PinAtPort::operator bool().
|
inline |
|
inline |
|
inline |
|
inline |
returns, how much bits this port controls
Definition at line 67 of file hwport.h.
References portSize, SetDdr(), SetPin(), SetPinBit(), and SetPort().
Referenced by ExternalIRQPort::ExternalIRQPort().
string HWPort::GetPortString | ( | void | ) |
returns a string representation of output states
Definition at line 108 of file hwport.cpp.
|
virtual |
Implement the hardware's reset functionality here. The default is no action on reset.
Reimplemented from Hardware.
Definition at line 77 of file hwport.cpp.
References CalcOutputs(), ddr, p, pin, port, and portSize.
Referenced by HWPort().
void HWPort::SetDdr | ( | unsigned char | val | ) |
setter method for data direction register
Definition at line 123 of file hwport.cpp.
References CalcOutputs(), ddr, ddr_reg, IOReg< P >::hardwareChange(), and portMask.
Referenced by GetPortSize().
void HWPort::SetPin | ( | unsigned char | val | ) |
setter method for PIN register (for new devices with toggle port)
Definition at line 129 of file hwport.cpp.
References avr_warning, CalcOutputs(), IOReg< P >::hardwareChange(), myName, port, port_reg, and portToggleFeature.
Referenced by GetPortSize().
void HWPort::SetPinBit | ( | bool | bit, |
unsigned int | bitaddr | ||
) |
Definition at line 139 of file hwport.cpp.
References avr_warning, TraceValue::change(), ddr, IOReg< P >::hardwareChange(), myName, p, pin, pintrace, port, port_reg, and portToggleFeature.
Referenced by GetPortSize().
void HWPort::SetPort | ( | unsigned char | val | ) |
setter method for port register
Definition at line 117 of file hwport.cpp.
References CalcOutputs(), IOReg< P >::hardwareChange(), port, port_reg, and portMask.
Referenced by GetPortSize().
|
protected |
data direction register
Definition at line 50 of file hwport.h.
Referenced by CalcOutputs(), PinAtPort::GetDdr(), GetDdr(), Reset(), PinAtPort::SetDdr(), SetDdr(), and SetPinBit().
Definition at line 84 of file hwport.h.
Referenced by AvrDevice_at90canbase::AvrDevice_at90canbase(), AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega128base::AvrDevice_atmega128base(), AvrDevice_atmega16_32::AvrDevice_atmega16_32(), AvrDevice_atmega2560base::AvrDevice_atmega2560base(), AvrDevice_atmega668base::AvrDevice_atmega668base(), AvrDevice_attiny2313::AvrDevice_attiny2313(), AvrDevice_attinyX5::AvrDevice_attinyX5(), and SetDdr().
|
protected |
the "name" of the port
Definition at line 46 of file hwport.h.
Referenced by GetName(), SetPin(), and SetPinBit().
|
protected |
the port pins, e.g. the final IO stages
Definition at line 52 of file hwport.h.
Referenced by CalcOutputs(), PinAtPort::GetAnalogValue(), GetPin(), GetPortString(), HWPort(), PinAtPort::PinAtPort(), Reset(), PinAtPort::SetAlternateDdr(), PinAtPort::SetAlternatePort(), PinAtPort::SetAlternatePullup(), SetPinBit(), PinAtPort::SetUseAlternateDdr(), PinAtPort::SetUseAlternatePort(), PinAtPort::SetUseAlternatePortIfDdrSet(), and PinAtPort::SetUseAlternatePullup().
|
protected |
port input register
Definition at line 49 of file hwport.h.
Referenced by CalcOutputs(), GetPin(), HWPort(), Reset(), and SetPinBit().
Definition at line 84 of file hwport.h.
Referenced by AvrDevice_at90canbase::AvrDevice_at90canbase(), AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega128base::AvrDevice_atmega128base(), AvrDevice_atmega16_32::AvrDevice_atmega16_32(), AvrDevice_atmega2560base::AvrDevice_atmega2560base(), AvrDevice_atmega668base::AvrDevice_atmega668base(), AvrDevice_attiny2313::AvrDevice_attiny2313(), AvrDevice_attinyX5::AvrDevice_attinyX5(), CalcOutputs(), and HWPort().
|
protected |
trace channel to trace output driver state
Definition at line 53 of file hwport.h.
Referenced by CalcOutputs(), HWPort(), SetPinBit(), and ~HWPort().
|
protected |
port output register
Definition at line 48 of file hwport.h.
Referenced by CalcOutputs(), PinAtPort::GetPort(), GetPort(), Reset(), SetPin(), SetPinBit(), PinAtPort::SetPort(), and SetPort().
Definition at line 84 of file hwport.h.
Referenced by AvrDevice_at90canbase::AvrDevice_at90canbase(), AvrDevice_atmega1284Abase::AvrDevice_atmega1284Abase(), AvrDevice_atmega128base::AvrDevice_atmega128base(), AvrDevice_atmega16_32::AvrDevice_atmega16_32(), AvrDevice_atmega2560base::AvrDevice_atmega2560base(), AvrDevice_atmega668base::AvrDevice_atmega668base(), AvrDevice_attiny2313::AvrDevice_attiny2313(), AvrDevice_attinyX5::AvrDevice_attinyX5(), SetPin(), SetPinBit(), and SetPort().
|
protected |
|
protected |
how much bits does this port have [1..8]
Definition at line 54 of file hwport.h.
Referenced by CalcOutputs(), GetPortSize(), GetPortString(), HWPort(), Reset(), and ~HWPort().
|
protected |
controls functionality of SetPin method (write to PIN toggles port register)
Definition at line 56 of file hwport.h.
Referenced by SetPin(), and SetPinBit().