95 porta(this,
"A", true),
96 portb(this,
"B", true),
97 portc(this,
"C", true),
98 portd(this,
"D", true),
99 gtccr_reg(&coreTraceGroup,
"GTCCR"),
100 assr_reg(&coreTraceGroup,
"ASSR"),
101 prescaler01(this,
"01", >ccr_reg, 0, 7),
102 prescaler2(this,
"2",
PinAtPort(&portb, 6), &assr_reg, 5, >ccr_reg, 1, 7),
103 premux0(&prescaler01,
PinAtPort(&portd, 4)),
104 premux1(&prescaler01,
PinAtPort(&portd, 5)),
109 if(flash_bytes > 32U * 1024U) {
122 if(ram_bytes > 2U * 1024U) {
123 if(ram_bytes > 4U * 1024U)
128 if(ram_bytes > 1U * 1024U)
174 timerIrq1->registerLine(0,
IRQLine(
"TOV1", 15));
175 timerIrq1->registerLine(1,
IRQLine(
"OCF1A", 13));
176 timerIrq1->registerLine(2,
IRQLine(
"OCF1B", 14));
177 timerIrq1->registerLine(5,
IRQLine(
"ICF1", 12));
183 timerIrq1->getLine(
"TOV1"),
184 timerIrq1->getLine(
"OCF1A"),
186 timerIrq1->getLine(
"OCF1B"),
188 timerIrq1->getLine(
"ICF1"),
192 timerIrq2->registerLine(0,
IRQLine(
"TOV2", 11));
193 timerIrq2->registerLine(1,
IRQLine(
"OCF2A", 9));
194 timerIrq2->registerLine(2,
IRQLine(
"OCF2B", 10));
199 timerIrq2->getLine(
"TOV2"),
200 timerIrq2->getLine(
"OCF2A"),
202 timerIrq2->getLine(
"OCF2B"),
305 rw[0x70]= & timerIrq2->timsk_reg;
306 rw[0x6F]= & timerIrq1->timsk_reg;
358 rw[0x37]= & timerIrq2->tifr_reg;
359 rw[0x36]= & timerIrq1->tifr_reg;
IOSpecialReg * pcifr_reg
PCIFR IO register.
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.
0:aref, 1:vcc, 2:bg, 3:2.56V
PrescalerMultiplexerExt premux0
prescaler multiplexer for timer 0
IOSpecialReg * eicra_reg
EICRA IO register.
AddressExtensionRegister * rampz
RAMPZ address extension register.
ICaptureSource * inputCapture1
input capture source for timer1
HWAcomp * acomp
analog compare unit
ExternalIRQHandler * extirqpc
external interrupt support for PCINT[0-2]
Implements a stack with stack register using RAM as stackarea.
OSCCALRegister * osccal_reg
OSCCAL IO register.
IOReg< HWUart > ubrrhi_reg
IO register "UBRRxH" - baudrate.
HWTimer16_2C3 * timer1
timer 1 unit
IOReg< HWEeprom > eedr_reg
void registerIrq(int vector, int irqBit, ExternalIRQ *extirq)
IOReg< HWTimer16 > ocra_h_reg
output compare A register, high byte
Implement CLKPR register.
TimerIRQRegister * timerIrq1
timer interrupt unit for timer 1
Pin & GetPin(unsigned char pinNo)
returns a pin reference of pin with pin number
oscillator version 5.x, 8bit, two ranges
IOReg< HWTimer16 > ocra_l_reg
output compare A register, low byte
IOReg< HWAcomp > acsr_reg
ACSR IO register.
IOReg< HWTimer8 > tcnt_reg
counter register
IOSpecialReg * pcmsk1_reg
PCIMSK1 IO register.
IOSpecialReg * pcmsk3_reg
PCIMSK3 IO register.
HWARef * aref
adc reference unit
A register in IO register space unrelated to any peripheral. "GPIORx" in datasheets.
IOReg< HWTimer16 > tcnt_h_reg
counter register, high byte
IOSpecialReg * eimsk_reg
EIMSK IO register.
GPIORegister * gpior1_reg
general purpose IO register
Handler for external IRQ's to communicate with IRQ system and mask/flag registers.
Represents a timer interrupt line, Frontend for timer interrupts.
void SetFuseConfiguration(int size, unsigned long defvalue)
Configure fuses.
IOReg< AddressExtensionRegister > ext_reg
IOReg< HWUart > ubrr_reg
IO register "UBRRxL" - baudrate.
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
IOReg< HWUart > ucsra_reg
IOReg< HWTimer8_2C > tccra_reg
control register A
GPIORegister * gpior2_reg
general purpose IO register
IOReg< HWTimer16 > icr_h_reg
input capture register, high byte
Timer unit with 16Bit counter and 2 output compare units, but 3 config registers. ...
AvrDevice_atmega1284Abase(unsigned ram_bytes, unsigned flash_bytes, unsigned ee_bytes, unsigned nrww_start)
TraceValueCoreRegister coreTraceGroup
IOReg< HWUart > ucsrb_reg
IOReg< HWTimer16 > icr_l_reg
input capture register, low byte
IOSpecialReg * pcicr_reg
PCICR IO register.
IOReg< HWEeprom > eearh_reg
IOReg< HWTimer16 > tcnt_l_reg
counter register, low byte
TimerIRQRegister * timerIrq2
timer interrupt unit for timer 2
HWAdmux * admux
adc multiplexer unit
PrescalerMultiplexer premux2
prescaler multiplexer for timer 2
Pin * GetPin(const char *name)
IOReg< HWTimer16 > ocrb_l_reg
output compare B register, low byte
TimerIRQRegister * timerIrq0
timer interrupt unit for timer 0
HWUsart * usart0
usart 0 unit
Provices flag and mask register for timer interrupts and connects irq lines to irqsystem.
ADC type M164: ADC on atmega164/324/644/1284 and at90can32/64/128.
IOReg< HWEeprom > eecr_reg
IOSpecialReg gtccr_reg
GTCCR IO register.
void registerLine(int idx, IRQLine *irq)
#define AVR_REGISTER(name, class)
RWMemoryMember ** rw
The whole memory: R0-R31, IO, Internal RAM.
IOSpecialReg * pcmsk0_reg
PCIMSK0 IO register.
Provides the programming engine for flash self programming.
void SetBootloaderConfig(unsigned addr, int size, int bPosBOOTSZ, int bPosBOOTRST)
Set bootloader support configuration.
IOReg< HWTimer16 > ocrb_h_reg
output compare B register, high byte
HWTimer8_2C * timer0
timer 0 unit
IOReg< HWTimer16_2C3 > tccrc_reg
control register C
CLKPRRegister * clkpr_reg
CLKPR IO register.
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.
HWUsart * usart1
usart 1 unit
PrescalerMultiplexerExt premux1
prescaler multiplexer for timer 1
RWSreg * statusRegister
the memory interface for status
Timer unit with 8Bit counter and 2 output compare unit.
ExternalIRQHandler * extirq012
external interrupt support for INT0, INT1, INT2
Pin-change interrupt on all pins of a port.
IRQLine * getLine(const std::string &name)
FlashProgramming * spmRegister
IOReg< HWTimer8 > ocrb_reg
output compare B register
HWTimer8_2C * timer2
timer 2 unit
IOSpecialReg * eifr_reg
EIFR IO register.
IOReg< HWUsart > ucsrc_reg
GPIORegister * gpior0_reg
general purpose IO register
IOSpecialReg timsk_reg
the TIMSKx register
IOSpecialReg assr_reg
ASSR IO register.
Analog comparator peripheral.
IOReg< FlashProgramming > spmcr_reg
Implement OSCCAL register.
IOSpecialReg * pcmsk2_reg
PCIMSK2 IO register.
External interrupt (INT0, INT1...) on a single pin, one and 2 bit configuration.
bool flagELPMInstructions
ELPM instructions are available (only on devices with bigger flash)