98 porta(this,
"A", true),
99 portb(this,
"B", true),
100 portc(this,
"C", true),
101 portd(this,
"D", true),
102 porte(this,
"E", true),
103 portf(this,
"F", true),
104 portg(this,
"G", true),
105 porth(this,
"H", true),
106 portj(this,
"J", true),
107 portk(this,
"K", true),
108 portl(this,
"L", true),
109 gtccr_reg(&coreTraceGroup,
"GTCCR"),
110 assr_reg(&coreTraceGroup,
"ASSR"),
111 prescaler1(this,
"1", >ccr_reg, 0, 7),
112 prescaler2(this,
"2",
PinAtPort(&portg, 4), &assr_reg, 5, >ccr_reg, 1, 7),
113 premux0(&prescaler1,
PinAtPort(&portd, 7)),
114 premux1(&prescaler1,
PinAtPort(&portd, 6)),
115 premux2(&prescaler2),
116 premux3(&prescaler1,
PinAtPort(&porte, 6)),
117 premux4(&prescaler1,
PinAtPort(&porth, 7)),
118 premux5(&prescaler1,
PinAtPort(&portl, 2))
158 Pin* pcmask1PinList[] = {
187 timerIrq1->registerLine(0,
IRQLine(
"TOV1", 20));
188 timerIrq1->registerLine(1,
IRQLine(
"OCF1A", 17));
189 timerIrq1->registerLine(2,
IRQLine(
"OCF1B", 18));
190 timerIrq1->registerLine(3,
IRQLine(
"OCF1C", 19));
191 timerIrq1->registerLine(5,
IRQLine(
"ICF1", 16));
197 timerIrq1->getLine(
"TOV1"),
198 timerIrq1->getLine(
"OCF1A"),
200 timerIrq1->getLine(
"OCF1B"),
202 timerIrq1->getLine(
"OCF1C"),
204 timerIrq1->getLine(
"ICF1"),
208 timerIrq2->registerLine(0,
IRQLine(
"TOV2", 15));
209 timerIrq2->registerLine(1,
IRQLine(
"OCF2A", 13));
210 timerIrq2->registerLine(2,
IRQLine(
"OCF2B", 14));
215 timerIrq2->getLine(
"TOV2"),
216 timerIrq2->getLine(
"OCF2A"),
218 timerIrq2->getLine(
"OCF2B"),
222 timerIrq3->registerLine(0,
IRQLine(
"TOV3", 35));
223 timerIrq3->registerLine(1,
IRQLine(
"OCF3A", 32));
224 timerIrq3->registerLine(2,
IRQLine(
"OCF3B", 33));
225 timerIrq3->registerLine(3,
IRQLine(
"OCF3C", 34));
226 timerIrq3->registerLine(5,
IRQLine(
"ICF3", 31));
232 timerIrq3->getLine(
"TOV3"),
233 timerIrq3->getLine(
"OCF3A"),
235 timerIrq3->getLine(
"OCF3B"),
237 timerIrq3->getLine(
"OCF3C"),
239 timerIrq3->getLine(
"ICF3"),
243 timerIrq4->registerLine(0,
IRQLine(
"TOV4", 45));
244 timerIrq4->registerLine(1,
IRQLine(
"OCF4A", 42));
245 timerIrq4->registerLine(2,
IRQLine(
"OCF4B", 43));
246 timerIrq4->registerLine(3,
IRQLine(
"OCF4C", 44));
247 timerIrq4->registerLine(5,
IRQLine(
"ICF4", 41));
253 timerIrq4->getLine(
"TOV4"),
254 timerIrq4->getLine(
"OCF4A"),
256 timerIrq4->getLine(
"OCF4B"),
258 timerIrq4->getLine(
"OCF4C"),
260 timerIrq4->getLine(
"ICF4"),
264 timerIrq5->registerLine(0,
IRQLine(
"TOV5", 50));
265 timerIrq5->registerLine(1,
IRQLine(
"OCF5A", 47));
266 timerIrq5->registerLine(2,
IRQLine(
"OCF5B", 48));
267 timerIrq5->registerLine(3,
IRQLine(
"OCF5C", 49));
268 timerIrq5->registerLine(5,
IRQLine(
"ICF5", 46));
274 timerIrq5->getLine(
"TOV5"),
275 timerIrq5->getLine(
"OCF5A"),
277 timerIrq5->getLine(
"OCF5B"),
279 timerIrq5->getLine(
"OCF5C"),
281 timerIrq5->getLine(
"ICF5"),
480 rw[0x73]= & timerIrq5->timsk_reg;
481 rw[0x72]= & timerIrq4->timsk_reg;
482 rw[0x71]= & timerIrq3->timsk_reg;
483 rw[0x70]= & timerIrq2->timsk_reg;
484 rw[0x6F]= & timerIrq1->timsk_reg;
535 rw[0x3A]= & timerIrq5->tifr_reg;
536 rw[0x39]= & timerIrq4->tifr_reg;
537 rw[0x38]= & timerIrq3->tifr_reg;
538 rw[0x37]= & timerIrq2->tifr_reg;
539 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.
0:aref, 1:vcc, 2:bg, 3:2.56V
PrescalerMultiplexer premux2
prescaler multiplexer for timer 2
IOSpecialReg assr_reg
ASSR IO register.
IOReg< HWTimer16 > ocrc_h_reg
output compare C register, high byte
bool flagEIJMPInstructions
EICALL and EIJMP instructions are available (only on some devices with bigger flash) ...
TimerIRQRegister * timerIrq3
timer interrupt unit for timer 3
AddressExtensionRegister * rampz
RAMPZ address extension register.
Pin class, handles input and output to external parts.
Implements a stack with stack register using RAM as stackarea.
TimerIRQRegister * timerIrq4
timer interrupt unit for timer 4
IOReg< HWUart > ubrrhi_reg
IO register "UBRRxH" - baudrate.
ExternalIRQHandler * extirqpc
external interrupt support for PCINT[0-2]
IOSpecialReg * eifr_reg
EIFR IO register.
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.
Pin & GetPin(unsigned char pinNo)
returns a pin reference of pin with pin number
oscillator version 5.x, 8bit, two ranges
IOSpecialReg * eimsk_reg
EIMSK IO register.
IOReg< HWTimer16 > ocra_l_reg
output compare A register, low byte
IOReg< HWAcomp > acsr_reg
ACSR IO register.
IOReg< HWTimer8 > tcnt_reg
counter register
A register in IO register space unrelated to any peripheral. "GPIORx" in datasheets.
IOReg< HWTimer16 > tcnt_h_reg
counter register, high byte
PrescalerMultiplexerExt premux1
prescaler multiplexer for timer 1
Handler for external IRQ's to communicate with IRQ system and mask/flag registers.
IOReg< HWTimer16 > ocrc_l_reg
output compare C register, low byte
Represents a timer interrupt line, Frontend for timer interrupts.
IOSpecialReg * pcicr_reg
PCICR IO register.
void SetFuseConfiguration(int size, unsigned long defvalue)
Configure fuses.
IOReg< AddressExtensionRegister > ext_reg
IOReg< HWUart > ubrr_reg
IO register "UBRRxL" - baudrate.
HWUsart * usart2
usart 2 unit
HWTimer16_3C * timer1
timer 1 unit
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< HWUart > ucsra_reg
HWAcomp * acomp
analog compare unit
IOReg< HWTimer8_2C > tccra_reg
control register A
PrescalerMultiplexerExt premux0
prescaler multiplexer for timer 0
IOReg< HWTimer16 > icr_h_reg
input capture register, high byte
TimerIRQRegister * timerIrq2
timer interrupt unit for timer 2
ADC type M2560: ADC on atmega2560.
ExternalIRQHandler * extirq
external interrupt support for INT0 to INT7
PrescalerMultiplexerExt premux4
prescaler multiplexer for timer 4
TraceValueCoreRegister coreTraceGroup
GPIORegister * gpior0_reg
general purpose IO register
IOReg< HWUart > ucsrb_reg
IOReg< HWTimer16 > icr_l_reg
input capture register, low byte
GPIORegister * gpior2_reg
general purpose IO register
HWTimer16_3C * timer5
timer 5 unit
IOSpecialReg * pcmsk2_reg
PCIMSK2 IO register.
HWTimer16_3C * timer4
timer 4 unit
HWAdmux * admux
adc multiplexer unit
IOReg< HWEeprom > eearh_reg
OSCCALRegister * osccal_reg
OSCCAL IO register.
IOReg< HWTimer16_3C > tccra_reg
control register A
IOReg< HWTimer16 > tcnt_l_reg
counter register, low byte
PrescalerMultiplexerExt premux5
prescaler multiplexer for timer 5
ICaptureSource * inputCapture3
input capture source for timer 3
AvrDevice_atmega2560base(unsigned ram_bytes, unsigned flash_bytes, unsigned ee_bytes, unsigned nrww_start)
HWTimer16_3C * timer3
timer 3 unit
Pin * GetPin(const char *name)
IOReg< HWTimer16_3C > tccrc_reg
control register C
IOSpecialReg gtccr_reg
GTCCR IO register.
PrescalerMultiplexerExt premux3
prescaler multiplexer for timer 3
IOReg< HWTimer16 > ocrb_l_reg
output compare B register, low byte
IOSpecialReg * pcmsk1_reg
PCIMSK1 IO register.
Timer unit with 16Bit counter and 3 output compare units.
Provices flag and mask register for timer interrupts and connects irq lines to irqsystem.
IOReg< HWEeprom > eecr_reg
TimerIRQRegister * timerIrq0
timer interrupt unit for timer 0
IOSpecialReg * eicra_reg
EICRA IO register.
IOSpecialReg * pcmsk0_reg
PCIMSK0 IO register.
void registerLine(int idx, IRQLine *irq)
#define AVR_REGISTER(name, class)
RWMemoryMember ** rw
The whole memory: R0-R31, IO, Internal RAM.
ICaptureSource * inputCapture1
input capture source for timer 1
TimerIRQRegister * timerIrq1
timer interrupt unit for timer 1
HWUsart * usart0
usart 0 unit
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
ICaptureSource * inputCapture5
input capture source for timer 5
HWTimer8_2C * timer2
timer 2 unit
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
IOReg< HWTimer16_3C > tccrb_reg
control register B
Timer unit with 8Bit counter and 2 output compare unit.
TimerIRQRegister * timerIrq5
timer interrupt unit for timer 5
Pin-change interrupt on all pins of a port.
IRQLine * getLine(const std::string &name)
GPIORegister * gpior1_reg
general purpose IO register
IOSpecialReg * eicrb_reg
EICRB IO register.
AddressExtensionRegister * eind
EIND address extension register.
HWUsart * usart3
usart 3 unit
FlashProgramming * spmRegister
ICaptureSource * inputCapture4
input capture source for timer 4
HWARef * aref
adc reference unit
IOReg< HWTimer8 > ocrb_reg
output compare B register
HWUsart * usart1
usart 1 unit
IOReg< HWUsart > ucsrc_reg
IOSpecialReg timsk_reg
the TIMSKx register
HWTimer8_2C * timer0
timer 0 unit
Analog comparator peripheral.
IOReg< FlashProgramming > spmcr_reg
IOSpecialReg * pcifr_reg
PCIFR IO register.
Implement OSCCAL 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)
CLKPRRegister * clkpr_reg
CLKPR IO register.