83 portb(this,
"B", true),
84 portc(this,
"C", true, 7),
85 portd(this,
"D", true),
86 gtccr_reg(&coreTraceGroup,
"GTCCR"),
87 assr_reg(&coreTraceGroup,
"ASSR"),
88 prescaler01(this,
"01", >ccr_reg, 0, 7),
89 prescaler2(this,
"2",
PinAtPort(&portb, 6), &assr_reg, 5, >ccr_reg, 1, 7),
90 premux0(&prescaler01,
PinAtPort(&portd, 4)),
91 premux1(&prescaler01,
PinAtPort(&portd, 5)),
95 if(flash_bytes > 4U * 1024U) {
96 if(flash_bytes > 16U * 1024U) {
105 if(flash_bytes > 8U * 1024U) {
125 if(ram_bytes >= 1U * 1024U) {
126 if(ram_bytes > 1U * 1024U)
170 timerIrq1->registerLine(0,
IRQLine(
"TOV1", 13));
171 timerIrq1->registerLine(1,
IRQLine(
"OCF1A", 11));
172 timerIrq1->registerLine(2,
IRQLine(
"OCF1B", 12));
173 timerIrq1->registerLine(5,
IRQLine(
"ICF1", 10));
179 timerIrq1->getLine(
"TOV1"),
180 timerIrq1->getLine(
"OCF1A"),
182 timerIrq1->getLine(
"OCF1B"),
184 timerIrq1->getLine(
"ICF1"),
188 timerIrq2->registerLine(0,
IRQLine(
"TOV2", 9));
189 timerIrq2->registerLine(1,
IRQLine(
"OCF2A", 7));
190 timerIrq2->registerLine(2,
IRQLine(
"OCF2B", 8));
195 timerIrq2->getLine(
"TOV2"),
196 timerIrq2->getLine(
"OCF2A"),
198 timerIrq2->getLine(
"OCF2B"),
284 rw[0x70]= & timerIrq2->timsk_reg;
285 rw[0x6F]= & timerIrq1->timsk_reg;
336 rw[0x37]= & timerIrq2->tifr_reg;
337 rw[0x36]= & timerIrq1->tifr_reg;
ADC reference is selected on 3 or 4 different sources: Vcc, aref pin, bandgap or 2.56V reference.
Basic AVR device, contains the core functionality.
GPIORegister * gpior0_reg
general purpose IO register
HWTimer8_2C * timer0
timer 0 unit
ExternalIRQHandler * extirqpc
external interrupt support for PCINT[0-2]
TimerIRQRegister * timerIrq2
timer interrupt unit for timer 2
Implements a stack with stack register using RAM as stackarea.
IOReg< HWUart > ubrrhi_reg
IO register "UBRRxH" - baudrate.
IOReg< HWEeprom > eedr_reg
IOSpecialReg * pcifr_reg
PCIFR IO register.
void registerIrq(int vector, int irqBit, ExternalIRQ *extirq)
IOReg< HWTimer16 > ocra_h_reg
output compare A register, high byte
Implement CLKPR register.
bool flagJMPInstructions
CALL and JMP instructions are available (only on devices with bigger flash)
Pin & GetPin(unsigned char pinNo)
returns a pin reference of pin with pin number
ExternalIRQHandler * extirq01
external interrupt support for INT0, INT1
ICaptureSource * inputCapture1
input capture source for timer1
oscillator version 5.x, 8bit, two ranges
Pin adc6
adc channel 6 input pin
IOSpecialReg gtccr_reg
GTCCR IO register.
HWAcomp * acomp
analog compare unit
IOReg< HWTimer16 > ocra_l_reg
output compare A register, low byte
IOReg< HWAcomp > acsr_reg
ACSR IO register.
IOReg< HWTimer8 > tcnt_reg
counter register
void RegisterPin(const std::string &name, Pin *p)
A register in IO register space unrelated to any peripheral. "GPIORx" in datasheets.
IOReg< HWTimer16 > tcnt_h_reg
counter register, high byte
Handler for external IRQ's to communicate with IRQ system and mask/flag registers.
IOSpecialReg * eicra_reg
EICRA IO register.
Represents a timer interrupt line, Frontend for timer interrupts.
OSCCALRegister * osccal_reg
OSCCAL IO register.
void SetFuseConfiguration(int size, unsigned long defvalue)
Configure fuses.
IOReg< HWUart > ubrr_reg
IO register "UBRRxL" - baudrate.
GPIORegister * gpior1_reg
general purpose IO register
IOReg< HWTimer16_2C3 > tccra_reg
control register A
IOReg< HWTimer8_2C > tccrb_reg
control register B
IOSpecialReg tifr_reg
the TIFRx register
Implements the I/O hardware necessary to do USART transfers.
IOReg< HWTimer16_2C3 > tccrb_reg
control register B
HWTimer8_2C * timer2
timer 2 unit
IOReg< HWUart > ucsra_reg
IOReg< HWTimer8_2C > tccra_reg
control register A
IOReg< HWTimer16 > icr_h_reg
input capture register, high byte
Timer unit with 16Bit counter and 2 output compare units, but 3 config registers. ...
AVR device class for ATMega168, see AvrDevice_atmega668base.
IOSpecialReg * pcmsk1_reg
PCIMSK1 IO register.
TraceValueCoreRegister coreTraceGroup
IOReg< HWUart > ucsrb_reg
IOSpecialReg * eimsk_reg
EIMSK IO register.
IOReg< HWTimer16 > icr_l_reg
input capture register, low byte
HWARef * aref
ADC reference unit.
IOSpecialReg * pcmsk0_reg
PCIMSK0 IO register.
TimerIRQRegister * timerIrq0
timer interrupt unit for timer 0
IOSpecialReg * pcicr_reg
PCICR IO register.
IOReg< HWEeprom > eearh_reg
GPIORegister * gpior2_reg
general purpose IO register
IOReg< HWTimer16 > tcnt_l_reg
counter register, low byte
Pin * GetPin(const char *name)
IOReg< HWTimer16 > ocrb_l_reg
output compare B register, low byte
HWAdmux * admux
adc multiplexer unit
CLKPRRegister * clkpr_reg
CLKPR IO register.
IOSpecialReg assr_reg
ASSR IO register.
PrescalerMultiplexer premux2
prescaler multiplexer for timer 2
Provices flag and mask register for timer interrupts and connects irq lines to irqsystem.
IOReg< HWEeprom > eecr_reg
Pin adc7
adc channel 7 input pin
IOSpecialReg * eifr_reg
EIFR IO register.
AVR device class for ATMega328, see AvrDevice_atmega668base.
AVR device class for ATMega48, see AvrDevice_atmega668base.
void registerLine(int idx, IRQLine *irq)
IOSpecialReg * pcmsk2_reg
PCIMSK2 IO register.
#define AVR_REGISTER(name, class)
RWMemoryMember ** rw
The whole memory: R0-R31, IO, Internal RAM.
PrescalerMultiplexerExt premux0
prescaler multiplexer for timer 0
Provides the programming engine for flash self programming.
void SetBootloaderConfig(unsigned addr, int size, int bPosBOOTSZ, int bPosBOOTRST)
Set bootloader support configuration.
HWUsart * usart0
usart 0 unit
IOReg< HWTimer16 > ocrb_h_reg
output compare B register, high byte
PrescalerMultiplexerExt premux1
prescaler multiplexer for timer 1
IOReg< HWTimer16_2C3 > tccrc_reg
control register C
IOReg< HWEeprom > eearl_reg
IOReg< HWTimer8 > ocra_reg
output compare A register
static NotSimulatedRegister * getRegister(int reg)
Class, which provides input capture source for 16bit timers.
RWSreg * statusRegister
the memory interface for status
Timer unit with 8Bit counter and 2 output compare unit.
Pin-change interrupt on all pins of a port.
IRQLine * getLine(const std::string &name)
HWTimer16_2C3 * timer1
timer 1 unit
AVR device class for ATMega88, see AvrDevice_atmega668base.
FlashProgramming * spmRegister
AvrDevice_atmega668base(unsigned ram_bytes, unsigned flash_bytes, unsigned ee_bytes)
IOReg< HWTimer8 > ocrb_reg
output compare B register
ADC type M48: ADC on atmega48/88/168/328.
IOReg< HWUsart > ucsrc_reg
IOSpecialReg timsk_reg
the TIMSKx register
Analog comparator peripheral.
IOReg< FlashProgramming > spmcr_reg
Implement OSCCAL register.
External interrupt (INT0, INT1...) on a single pin, one and 2 bit configuration.
TimerIRQRegister * timerIrq1
timer interrupt unit for timer 1