avr: remove device files, use them from a subrepository

These files don't really belong in this repository. It's better to
generate them automatically from a source, like the one provided by the
avr-rust project. So a new command `make gen-device-avr` has been
provided for this purpose.
Этот коммит содержится в:
Ayke van Laethem 2018-09-05 11:59:24 +02:00
родитель 7258553528
коммит 93248c93ed
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: E97FF5335DFDFDED
260 изменённых файлов: 10 добавлений и 105301 удалений

2
.gitignore предоставленный
Просмотреть файл

@ -1,2 +1,4 @@
build
src/device/avr/*.go
src/device/avr/*.ld
src/device/nrf/*.go

3
.gitmodules предоставленный
Просмотреть файл

@ -4,3 +4,6 @@
[submodule "lib/CMSIS"]
path = lib/CMSIS
url = https://github.com/ARM-software/CMSIS.git
[submodule "lib/avr"]
path = lib/avr
url = https://github.com/avr-rust/avr-mcu.git

Просмотреть файл

@ -83,6 +83,10 @@ gen-device-nrf:
./gen-device.py lib/nrfx/mdk/ src/device/nrf/
go fmt ./src/device/nrf
gen-device-avr:
./gen-device.py lib/avr/packs/atmega src/device/avr/
go fmt ./src/device/avr
# Build the Go compiler.
build/tgo: *.go

1
lib/avr Подмодуль

@ -0,0 +1 @@
Subproject commit 6624554c02b237b23dc17d53e992bf54033fc228

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90CAN128.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x1000;
__num_isrs = 37;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90CAN32.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x8000;
__ram_size = 0x800;
__num_isrs = 37;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90CAN64.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x10000;
__ram_size = 0x1000;
__num_isrs = 37;

Просмотреть файл

@ -1,841 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90PWM1.atdf, see http://packs.download.atmel.com/
// +build avr,at90pwm1
// Device information for the AT90PWM1.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90PWM1"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_PSC2_CAPT = 1 // PSC2 Capture Event
IRQ_PSC2_EC = 2 // PSC2 End Cycle
IRQ_PSC1_CAPT = 3 // PSC1 Capture Event
IRQ_PSC1_EC = 4 // PSC1 End Cycle
IRQ_PSC0_CAPT = 5 // PSC0 Capture Event
IRQ_PSC0_EC = 6 // PSC0 End Cycle
IRQ_ANALOG_COMP_0 = 7 // Analog Comparator 0
IRQ_ANALOG_COMP_1 = 8 // Analog Comparator 1
IRQ_ANALOG_COMP_2 = 9 // Analog Comparator 2
IRQ_INT0 = 10 // External Interrupt Request 0
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 12 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 13 // Timer/Counter Compare Match B
IRQ_RESERVED15 = 14 //
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP_A = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_OVF = 17 // Timer/Counter0 Overflow
IRQ_ADC = 18 // ADC Conversion Complete
IRQ_INT1 = 19 // External Interrupt Request 1
IRQ_SPI_STC = 20 // SPI Serial Transfer Complete
IRQ_USART_RX = 21 // USART, Rx Complete
IRQ_USART_UDRE = 22 // USART Data Register Empty
IRQ_USART_TX = 23 // USART, Tx Complete
IRQ_INT2 = 24 // External Interrupt Request 2
IRQ_WDT = 25 // Watchdog Timeout Interrupt
IRQ_EE_READY = 26 // EEPROM Ready
IRQ_TIMER0_COMPB = 27 // Timer Counter 0 Compare Match B
IRQ_INT3 = 28 // External Interrupt Request 3
IRQ_RESERVED30 = 29 //
IRQ_RESERVED31 = 30 //
IRQ_SPM_READY = 31 // Store Program Memory Read
IRQ_max = 31 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// Power Stage Controller
PSC = struct {
PICR0L __reg
PICR0H __reg
PFRC0B __reg
PFRC0A __reg
PCTL0 __reg
PCNF0 __reg
OCR0RBL __reg
OCR0RBH __reg
OCR0SBL __reg
OCR0SBH __reg
OCR0RAL __reg
OCR0RAH __reg
OCR0SAL __reg
OCR0SAH __reg
PSOC0 __reg
PIM0 __reg
PIFR0 __reg
PICR2L __reg
PICR2H __reg
PFRC2B __reg
PFRC2A __reg
PCTL2 __reg
PCNF2 __reg
OCR2RBL __reg
OCR2RBH __reg
OCR2SBL __reg
OCR2SBH __reg
OCR2RAL __reg
OCR2RAH __reg
OCR2SAL __reg
OCR2SAH __reg
POM2 __reg
PSOC2 __reg
PIM2 __reg
PIFR2 __reg
PICR1L __reg
PICR1H __reg
PFRC1B __reg
PFRC1A __reg
PCTL1 __reg
PSOC1 __reg
}{
PICR0L: 0xde, // PSC 0 Input Capture Register
PICR0H: 0xde, // PSC 0 Input Capture Register
PFRC0B: 0xdd, // PSC 0 Input B Control
PFRC0A: 0xdc, // PSC 0 Input A Control
PCTL0: 0xdb, // PSC 0 Control Register
PCNF0: 0xda, // PSC 0 Configuration Register
OCR0RBL: 0xd8, // Output Compare RB Register
OCR0RBH: 0xd8, // Output Compare RB Register
OCR0SBL: 0xd6, // Output Compare SB Register
OCR0SBH: 0xd6, // Output Compare SB Register
OCR0RAL: 0xd4, // Output Compare RA Register
OCR0RAH: 0xd4, // Output Compare RA Register
OCR0SAL: 0xd2, // Output Compare SA Register
OCR0SAH: 0xd2, // Output Compare SA Register
PSOC0: 0xd0, // PSC0 Synchro and Output Configuration
PIM0: 0xa1, // PSC0 Interrupt Mask Register
PIFR0: 0xa0, // PSC0 Interrupt Flag Register
PICR2L: 0xfe, // PSC 2 Input Capture Register
PICR2H: 0xfe, // PSC 2 Input Capture Register
PFRC2B: 0xfd, // PSC 2 Input B Control
PFRC2A: 0xfc, // PSC 2 Input B Control
PCTL2: 0xfb, // PSC 2 Control Register
PCNF2: 0xfa, // PSC 2 Configuration Register
OCR2RBL: 0xf8, // Output Compare RB Register
OCR2RBH: 0xf8, // Output Compare RB Register
OCR2SBL: 0xf6, // Output Compare SB Register
OCR2SBH: 0xf6, // Output Compare SB Register
OCR2RAL: 0xf4, // Output Compare RA Register
OCR2RAH: 0xf4, // Output Compare RA Register
OCR2SAL: 0xf2, // Output Compare SA Register
OCR2SAH: 0xf2, // Output Compare SA Register
POM2: 0xf1, // PSC 2 Output Matrix
PSOC2: 0xf0, // PSC2 Synchro and Output Configuration
PIM2: 0xa5, // PSC2 Interrupt Mask Register
PIFR2: 0xa4, // PSC2 Interrupt Flag Register
PICR1L: 0xee, // PSC 1 Input Capture Register
PICR1H: 0xee, // PSC 1 Input Capture Register
PFRC1B: 0xed, // PSC 1 Input B Control
PFRC1A: 0xec, // PSC 1 Input B Control
PCTL1: 0xeb, // PSC 1 Control Register
PSOC1: 0xe0, // PSC1 Synchro and Output Configuration
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR3 __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PLLCSR __reg
PRR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR3: 0x3b, // General Purpose IO Register 3
GPIOR2: 0x3a, // General Purpose IO Register 2
GPIOR1: 0x39, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PLLCSR: 0x49, // PLL Control And Status Register
PRR: 0x64, // Power Reduction Register
}
// Timer/Counter, 8-bit
TC8 = struct {
TIMSK0 __reg
TIFR0 __reg
TCCR0A __reg
TCCR0B __reg
TCNT0 __reg
OCR0A __reg
OCR0B __reg
}{
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
TCCR0A: 0x44, // Timer/Counter Control Register A
TCCR0B: 0x45, // Timer/Counter Control Register B
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
ADCSRB __reg
DIDR0 __reg
DIDR1 __reg
AMP0CSR __reg
AMP1CSR __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRB: 0x7b, // ADC Control and Status Register B
DIDR0: 0x7e, // Digital Input Disable Register 0
DIDR1: 0x7f, // Digital Input Disable Register 1
AMP0CSR: 0x76,
AMP1CSR: 0x77,
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Read/Write Access Bytes
EEARH: 0x41, // EEPROM Read/Write Access Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Analog Comparator
AC = struct {
AC0CON __reg
AC2CON __reg
ACSR __reg
}{
AC0CON: 0xad, // Analog Comparator 0 Control Register
AC2CON: 0xaf, // Analog Comparator 2 Control Register
ACSR: 0x50, // Analog Comparator Status Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_PSC2RB = 0x80 // PSC2 Reset Behavior
EXTENDED_PSC0RB = 0x20 // PSC0 Reset Behavior
EXTENDED_PSCRV = 0x10 // PSCOUT Reset Value
EXTENDED_BOOTSZ = 0x6 // Select Boot Size
EXTENDED_BOOTRST = 0x1 // Select Reset Vector
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector Trigger Level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for PSC: Power Stage Controller
const (
// PICR0L: PSC 0 Input Capture Register
// PICR0H: PSC 0 Input Capture Register
PICR0_PCST0 = 0x8000 // PSC 0 Capture Software Trig bit
PICR0_PICR0 = 0xfff // PSC 0 Capture Register
// PFRC0B: PSC 0 Input B Control
PFRC0B_PCAE0B = 0x80 // PSC 0 Capture Enable Input Part B
PFRC0B_PISEL0B = 0x40 // PSC 0 Input Select for Part B
PFRC0B_PELEV0B = 0x20 // PSC 0 Edge Level Selector on Input Part B
PFRC0B_PFLTE0B = 0x10 // PSC 0 Filter Enable on Input Part B
PFRC0B_PRFM0B = 0xf // PSC 0 Retrigger and Fault Mode for Part B
// PFRC0A: PSC 0 Input A Control
PFRC0A_PCAE0A = 0x80 // PSC 0 Capture Enable Input Part A
PFRC0A_PISEL0A = 0x40 // PSC 0 Input Select for Part A
PFRC0A_PELEV0A = 0x20 // PSC 0 Edge Level Selector on Input Part A
PFRC0A_PFLTE0A = 0x10 // PSC 0 Filter Enable on Input Part A
PFRC0A_PRFM0A = 0xf // PSC 0 Retrigger and Fault Mode for Part A
// PCTL0: PSC 0 Control Register
PCTL0_PPRE0 = 0xc0 // PSC 0 Prescaler Selects
PCTL0_PBFM0 = 0x20 // PSC 0 Balance Flank Width Modulation
PCTL0_PAOC0B = 0x10 // PSC 0 Asynchronous Output Control B
PCTL0_PAOC0A = 0x8 // PSC 0 Asynchronous Output Control A
PCTL0_PARUN0 = 0x4 // PSC0 Auto Run
PCTL0_PCCYC0 = 0x2 // PSC0 Complete Cycle
PCTL0_PRUN0 = 0x1 // PSC 0 Run
// PCNF0: PSC 0 Configuration Register
PCNF0_PFIFTY0 = 0x80 // PSC 0 Fifty
PCNF0_PALOCK0 = 0x40 // PSC 0 Autolock
PCNF0_PLOCK0 = 0x20 // PSC 0 Lock
PCNF0_PMODE0 = 0x18 // PSC 0 Mode
PCNF0_POP0 = 0x4 // PSC 0 Output Polarity
PCNF0_PCLKSEL0 = 0x2 // PSC 0 Input Clock Select
// PSOC0: PSC0 Synchro and Output Configuration
PSOC0_PSYNC0 = 0x30 // Synchronization Out for ADC Selection
PSOC0_POEN0B = 0x4 // PSCOUT01 Output Enable
PSOC0_POEN0A = 0x1 // PSCOUT00 Output Enable
// PIM0: PSC0 Interrupt Mask Register
PIM0_PSEIE0 = 0x20 // PSC 0 Synchro Error Interrupt Enable
PIM0_PEVE0B = 0x10 // External Event B Interrupt Enable
PIM0_PEVE0A = 0x8 // External Event A Interrupt Enable
PIM0_PEOPE0 = 0x1 // End of Cycle Interrupt Enable
// PIFR0: PSC0 Interrupt Flag Register
PIFR0_PSEI0 = 0x20 // PSC 0 Synchro Error Interrupt
PIFR0_PEV0B = 0x10 // External Event B Interrupt
PIFR0_PEV0A = 0x8 // External Event A Interrupt
PIFR0_PRN0 = 0x6 // Ramp Number
PIFR0_PEOP0 = 0x1 // End of PSC0 Interrupt
// PICR2L: PSC 2 Input Capture Register
// PICR2H: PSC 2 Input Capture Register
PICR2_PCST2 = 0x8000 // PSC 2 Capture Software Trig bit
PICR2_PICR2 = 0xfff // PSC 2 Input Capture Register
// PFRC2B: PSC 2 Input B Control
PFRC2B_PCAE2B = 0x80 // PSC 2 Capture Enable Input Part B
PFRC2B_PISEL2B = 0x40 // PSC 2 Input Select for Part B
PFRC2B_PELEV2B = 0x20 // PSC 2 Edge Level Selector on Input Part B
PFRC2B_PFLTE2B = 0x10 // PSC 2 Filter Enable on Input Part B
PFRC2B_PRFM2B = 0xf // PSC 2 Retrigger and Fault Mode for Part B
// PFRC2A: PSC 2 Input B Control
PFRC2A_PCAE2A = 0x80 // PSC 2 Capture Enable Input Part A
PFRC2A_PISEL2A = 0x40 // PSC 2 Input Select for Part A
PFRC2A_PELEV2A = 0x20 // PSC 2 Edge Level Selector on Input Part A
PFRC2A_PFLTE2A = 0x10 // PSC 2 Filter Enable on Input Part A
PFRC2A_PRFM2A = 0xf // PSC 2 Retrigger and Fault Mode for Part A
// PCTL2: PSC 2 Control Register
PCTL2_PPRE2 = 0xc0 // PSC 2 Prescaler Selects
PCTL2_PBFM2 = 0x20 // Balance Flank Width Modulation
PCTL2_PAOC2B = 0x10 // PSC 2 Asynchronous Output Control B
PCTL2_PAOC2A = 0x8 // PSC 2 Asynchronous Output Control A
PCTL2_PARUN2 = 0x4 // PSC2 Auto Run
PCTL2_PCCYC2 = 0x2 // PSC2 Complete Cycle
PCTL2_PRUN2 = 0x1 // PSC 2 Run
// PCNF2: PSC 2 Configuration Register
PCNF2_PFIFTY2 = 0x80 // PSC 2 Fifty
PCNF2_PALOCK2 = 0x40 // PSC 2 Autolock
PCNF2_PLOCK2 = 0x20 // PSC 2 Lock
PCNF2_PMODE2 = 0x18 // PSC 2 Mode
PCNF2_POP2 = 0x4 // PSC 2 Output Polarity
PCNF2_PCLKSEL2 = 0x2 // PSC 2 Input Clock Select
PCNF2_POME2 = 0x1 // PSC 2 Output Matrix Enable
// POM2: PSC 2 Output Matrix
POM2_POMV2B = 0xf0 // Output Matrix Output B Ramps
POM2_POMV2A = 0xf // Output Matrix Output A Ramps
// PSOC2: PSC2 Synchro and Output Configuration
PSOC2_POS2 = 0xc0 // PSC 2 Output 23 Select
PSOC2_PSYNC2 = 0x30 // Synchronization Out for ADC Selection
PSOC2_POEN2D = 0x8 // PSCOUT23 Output Enable
PSOC2_POEN2B = 0x4 // PSCOUT21 Output Enable
PSOC2_POEN2C = 0x2 // PSCOUT22 Output Enable
PSOC2_POEN2A = 0x1 // PSCOUT20 Output Enable
// PIM2: PSC2 Interrupt Mask Register
PIM2_PSEIE2 = 0x20 // PSC 2 Synchro Error Interrupt Enable
PIM2_PEVE2B = 0x10 // External Event B Interrupt Enable
PIM2_PEVE2A = 0x8 // External Event A Interrupt Enable
PIM2_PEOPE2 = 0x1 // End of Cycle Interrupt Enable
// PIFR2: PSC2 Interrupt Flag Register
PIFR2_PSEI2 = 0x20 // PSC 2 Synchro Error Interrupt
PIFR2_PEV2B = 0x10 // External Event B Interrupt
PIFR2_PEV2A = 0x8 // External Event A Interrupt
PIFR2_PRN2 = 0x6 // Ramp Number
PIFR2_PEOP2 = 0x1 // End of PSC2 Interrupt
// PFRC1B: PSC 1 Input B Control
PFRC1B_PCAE1B = 0x80 // PSC 1 Capture Enable Input Part B
PFRC1B_PISEL1B = 0x40 // PSC 1 Input Select for Part B
PFRC1B_PELEV1B = 0x20 // PSC 1 Edge Level Selector on Input Part B
PFRC1B_PFLTE1B = 0x10 // PSC 1 Filter Enable on Input Part B
PFRC1B_PRFM1B = 0xf // PSC 1 Retrigger and Fault Mode for Part B
// PFRC1A: PSC 1 Input B Control
PFRC1A_PCAE1A = 0x80 // PSC 1 Capture Enable Input Part A
PFRC1A_PISEL1A = 0x40 // PSC 1 Input Select for Part A
PFRC1A_PELEV1A = 0x20 // PSC 1 Edge Level Selector on Input Part A
PFRC1A_PFLTE1A = 0x10 // PSC 1 Filter Enable on Input Part A
PFRC1A_PRFM1A = 0xf // PSC 1 Retrigger and Fault Mode for Part A
// PCTL1: PSC 1 Control Register
PCTL1_PPRE1 = 0xc0 // PSC 1 Prescaler Selects
PCTL1_PBFM1 = 0x20 // Balance Flank Width Modulation
PCTL1_PAOC1B = 0x10 // PSC 1 Asynchronous Output Control B
PCTL1_PAOC1A = 0x8 // PSC 1 Asynchronous Output Control A
PCTL1_PARUN1 = 0x4 // PSC1 Auto Run
PCTL1_PCCYC1 = 0x2 // PSC1 Complete Cycle
PCTL1_PRUN1 = 0x1 // PSC 1 Run
// PSOC1: PSC1 Synchro and Output Configuration
PSOC1_PSYNC1 = 0x30 // Synchronization Out for ADC Selection
PSOC1_POEN1B = 0x4 // PSCOUT11 Output Enable
PSOC1_POEN1A = 0x1 // PSCOUT10 Output Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_SPIPS = 0x80 // SPI Pin Select
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR3: General Purpose IO Register 3
GPIOR3_GPIOR = 0xff // General Purpose IO Register 3 bis
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PLLCSR: PLL Control And Status Register
PLLCSR_PLLF = 0x4 // PLL Factor
PLLCSR_PLLE = 0x2 // PLL Enable
PLLCSR_PLOCK = 0x1 // PLL Lock Detector
// PRR: Power Reduction Register
PRR_PRPSC2 = 0x80 // Power Reduction PSC2
PRR_PRPSC1 = 0x40 // Power Reduction PSC1
PRR_PRPSC0 = 0x20 // Power Reduction PSC0
PRR_PRTIM1 = 0x10 // Power Reduction Timer/Counter1
PRR_PRTIM0 = 0x8 // Power Reduction Timer/Counter0
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer Counter 0 value
// OCR0A: Timer/Counter0 Output Compare Register
OCR0A_OCR0A = 0xff // Output Compare A value
// OCR0B: Timer/Counter0 Output Compare Register
OCR0B_OCR0B = 0xff // Output Compare B value
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1
// OCR1AL: Timer/Counter1 Output Compare Register Bytes
// OCR1AH: Timer/Counter1 Output Compare Register Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A Register
// OCR1BL: Timer/Counter1 Output Compare Register Bytes
// OCR1BH: Timer/Counter1 Output Compare Register Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B Register
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter Input Capture
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: ADC Control and Status Register B
ADCSRB_ADHSM = 0x80 // ADC High Speed Mode
ADCSRB_ADASCR = 0x10 // ADC Start Conversion
ADCSRB_ADTS3 = 0x8 // ADC Auto Trigger Source Selection 3
ADCSRB_ADTS2 = 0x4 // ADC Auto Trigger Source Selection 2
ADCSRB_ADTS1 = 0x2 // ADC Auto Trigger Source Selection 1
ADCSRB_ADTS0 = 0x1 // ADC Auto Trigger Source Selection 0
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
// DIDR1: Digital Input Disable Register 1
DIDR1_ACMP0D = 0x20
DIDR1_AMP0PD = 0x10
DIDR1_AMP0ND = 0x8
DIDR1_ADC10D = 0x4
DIDR1_ADC9D = 0x2
DIDR1_ADC8D = 0x1
// AMP0CSR
AMP0CSR_AMP0EN = 0x80
AMP0CSR_AMP0IS = 0x40
AMP0CSR_AMP0G = 0x30
AMP0CSR_AMP0TS = 0x3
// AMP1CSR
AMP1CSR_AMP1EN = 0x80
AMP1CSR_AMP1IS = 0x40
AMP1CSR_AMP1G = 0x30
AMP1CSR_AMP1TS = 0x3
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPD = 0xff // SPI Data
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xf // External Interrupt Mask
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xf // External Interrupt Flags
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access Bytes
// EEARH: EEPROM Read/Write Access Bytes
EEAR_EEAR = 0xfff // EEPROM Address bytes
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data Bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for AC: Analog Comparator
const (
// AC0CON: Analog Comparator 0 Control Register
AC0CON_AC0EN = 0x80 // Analog Comparator 0 Enable Bit
AC0CON_AC0IE = 0x40 // Analog Comparator 0 Interrupt Enable Bit
AC0CON_AC0IS = 0x30 // Analog Comparator 0 Interrupt Select Bit
AC0CON_AC0M = 0x7 // Analog Comparator 0 Multiplexer Register
// AC2CON: Analog Comparator 2 Control Register
AC2CON_AC2EN = 0x80 // Analog Comparator 2 Enable Bit
AC2CON_AC2IE = 0x40 // Analog Comparator 2 Interrupt Enable Bit
AC2CON_AC2IS = 0x30 // Analog Comparator 2 Interrupt Select Bit
AC2CON_AC2M = 0x7 // Analog Comparator 2 Multiplexer Register
// ACSR: Analog Comparator Status Register
ACSR_ACCKDIV = 0x80 // Analog Comparator Clock Divider
ACSR_AC2IF = 0x40 // Analog Comparator 2 Interrupt Flag Bit
ACSR_AC1IF = 0x20 // Analog Comparator 1 Interrupt Flag Bit
ACSR_AC0IF = 0x10 // Analog Comparator 0 Interrupt Flag Bit
ACSR_AC2O = 0x4 // Analog Comparator 2 Output Bit
ACSR_AC1O = 0x2 // Analog Comparator 1 Output Bit
ACSR_AC0O = 0x1 // Analog Comparator 0 Output Bit
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM1.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x2000;
__ram_size = 0x200;
__num_isrs = 32;

Просмотреть файл

@ -1,757 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90PWM161.atdf, see http://packs.download.atmel.com/
// +build avr,at90pwm161
// Device information for the AT90PWM161.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90PWM161"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_PSC2_CAPT = 1 // PSC2 Capture Event
IRQ_PSC2_EC = 2 // PSC2 End Cycle
IRQ_PSC2_EEC = 3 // PSC2 End Of Enhanced Cycle
IRQ_PSC0_CAPT = 4 // PSC0 Capture Event
IRQ_PSC0_EC = 5 // PSC0 End Cycle
IRQ_PSC0_EEC = 6 // PSC0 End Of Enhanced Cycle
IRQ_ANALOG_COMP_1 = 7 // Analog Comparator 1
IRQ_ANALOG_COMP_2 = 8 // Analog Comparator 2
IRQ_ANALOG_COMP_3 = 9 // Analog Comparator 3
IRQ_INT0 = 10 // External Interrupt Request 0
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_OVF = 12 // Timer/Counter1 Overflow
IRQ_ADC = 13 // ADC Conversion Complete
IRQ_INT1 = 14 // External Interrupt Request 1
IRQ_SPI_STC = 15 // SPI Serial Transfer Complet
IRQ_INT2 = 16 // External Interrupt Request 2
IRQ_WDT = 17 // Watchdog Timeout Interrupt
IRQ_EE_READY = 18 // EEPROM Ready
IRQ_SPM_READY = 19 // Store Program Memory Read
IRQ_max = 19 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Digital-to-Analog Converter
DAC = struct {
DACH __reg
DACL __reg
DACON __reg
}{
DACH: 0x59, // DAC Data Register High Byte
DACL: 0x58, // DAC Data Register Low Byte
DACON: 0x76, // DAC Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x37, // SPI Control Register
SPSR: 0x38, // SPI Status Register
SPDR: 0x56, // SPI Data Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x82, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x89, // External Interrupt Control Register A
EIMSK: 0x41, // External Interrupt Mask Register
EIFR: 0x40, // External Interrupt Flag Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
ADCSRB __reg
DIDR0 __reg
DIDR1 __reg
AMP0CSR __reg
}{
ADMUX: 0x28, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x4c, // ADC Data Register Bytes
ADCH: 0x4c, // ADC Data Register Bytes
ADCSRB: 0x27, // ADC Control and Status Register B
DIDR0: 0x77, // Digital Input Disable Register 0
DIDR1: 0x78, // Digital Input Disable Register 0
AMP0CSR: 0x79,
}
// Analog Comparator
AC = struct {
AC3CON __reg
AC1CON __reg
AC2CON __reg
ACSR __reg
AC3ECON __reg
AC2ECON __reg
AC1ECON __reg
}{
AC3CON: 0x7f, // Analog Comparator3 Control Register
AC1CON: 0x7d, // Analog Comparator 1 Control Register
AC2CON: 0x7e, // Analog Comparator 2 Control Register
ACSR: 0x20, // Analog Comparator Status Register
AC3ECON: 0x7c,
AC2ECON: 0x7b,
AC1ECON: 0x7a,
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PLLCSR __reg
PRR __reg
CLKCSR __reg
CLKSELR __reg
BGCCR __reg
BGCRR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x88, // Oscillator Calibration Value
CLKPR: 0x83,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x3b, // General Purpose IO Register 2
GPIOR1: 0x3a, // General Purpose IO Register 1
GPIOR0: 0x39, // General Purpose IO Register 0
PLLCSR: 0x87, // PLL Control And Status Register
PRR: 0x86, // Power Reduction Register
CLKCSR: 0x84,
CLKSELR: 0x85,
BGCCR: 0x81, // BandGap Current Calibration Register
BGCRR: 0x80, // BandGap Resistor Calibration Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Read/Write Access Bytes
EEARH: 0x3e, // EEPROM Read/Write Access Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// Power Stage Controller
PSC = struct {
PICR0L __reg
PICR0H __reg
PFRC0B __reg
PFRC0A __reg
PCTL0 __reg
PCNF0 __reg
OCR0RBL __reg
OCR0RBH __reg
OCR0SBL __reg
OCR0SBH __reg
OCR0RAL __reg
OCR0RAH __reg
OCR0SAL __reg
OCR0SAH __reg
PSOC0 __reg
PIM0 __reg
PIFR0 __reg
PICR2H __reg
PICR2L __reg
PFRC2B __reg
PFRC2A __reg
PCTL2 __reg
PCNF2 __reg
PCNFE2 __reg
OCR2RBL __reg
OCR2RBH __reg
OCR2SBL __reg
OCR2SBH __reg
OCR2RAL __reg
OCR2RAH __reg
OCR2SAL __reg
OCR2SAH __reg
POM2 __reg
PSOC2 __reg
PIM2 __reg
PIFR2 __reg
PASDLY2 __reg
}{
PICR0L: 0x68, // PSC 0 Input Capture Register
PICR0H: 0x68, // PSC 0 Input Capture Register
PFRC0B: 0x63, // PSC 0 Input B Control
PFRC0A: 0x62, // PSC 0 Input A Control
PCTL0: 0x32, // PSC 0 Control Register
PCNF0: 0x31, // PSC 0 Configuration Register
OCR0RBL: 0x44, // Output Compare RB Register
OCR0RBH: 0x44, // Output Compare RB Register
OCR0SBL: 0x42, // Output Compare SB Register
OCR0SBH: 0x42, // Output Compare SB Register
OCR0RAL: 0x4a, // Output Compare RA Register
OCR0RAH: 0x4a, // Output Compare RA Register
OCR0SAL: 0x60, // Output Compare SA Register
OCR0SAH: 0x60, // Output Compare SA Register
PSOC0: 0x6a, // PSC0 Synchro and Output Configuration
PIM0: 0x2f, // PSC0 Interrupt Mask Register
PIFR0: 0x30, // PSC0 Interrupt Flag Register
PICR2H: 0x6d, // PSC 2 Input Capture Register High
PICR2L: 0x6c, // PSC 2 Input Capture Register Low
PFRC2B: 0x67, // PSC 2 Input B Control
PFRC2A: 0x66, // PSC 2 Input B Control
PCTL2: 0x36, // PSC 2 Control Register
PCNF2: 0x35, // PSC 2 Configuration Register
PCNFE2: 0x70, // PSC 2 Enhanced Configuration Register
OCR2RBL: 0x48, // Output Compare RB Register
OCR2RBH: 0x48, // Output Compare RB Register
OCR2SBL: 0x46, // Output Compare SB Register
OCR2SBH: 0x46, // Output Compare SB Register
OCR2RAL: 0x4e, // Output Compare RA Register
OCR2RAH: 0x4e, // Output Compare RA Register
OCR2SAL: 0x64, // Output Compare SA Register
OCR2SAH: 0x64, // Output Compare SA Register
POM2: 0x6f, // PSC 2 Output Matrix
PSOC2: 0x6e, // PSC2 Synchro and Output Configuration
PIM2: 0x33, // PSC2 Interrupt Mask Register
PIFR2: 0x34, // PSC2 Interrupt Flag Register
PASDLY2: 0x71, // Analog Synchronization Delay Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1B __reg
TCNT1L __reg
TCNT1H __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x21, // Timer/Counter Interrupt Mask Register
TIFR1: 0x22, // Timer/Counter Interrupt Flag register
TCCR1B: 0x8a, // Timer/Counter1 Control Register B
TCNT1L: 0x5a, // Timer/Counter1 Bytes
TCNT1H: 0x5a, // Timer/Counter1 Bytes
ICR1L: 0x8c, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x8c, // Timer/Counter1 Input Capture Register Bytes
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_PSC2RB = 0x80 // PSC2 Reset Behavior
EXTENDED_PSC2RBA = 0x40 // PSC2 Reset Behavior for 22 and 23
EXTENDED_PSC0RB = 0x20 // PSC0 Reset Behavior
EXTENDED_PSCRV = 0x10 // PSC Reset Value
EXTENDED_PSCINRB = 0x8 // PSC2 and PSC0 input Reset Behavior
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector Trigger Level
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PE0 as I/O pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Select Reset Vector
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTD1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for DAC: Digital-to-Analog Converter
const (
// DACH: DAC Data Register High Byte
DACH_DACH = 0xff // DAC Data Register High Byte Bits
// DACL: DAC Data Register Low Byte
DACL_DACL = 0xff // DAC Data Register Low Byte Bits
// DACON: DAC Control Register
DACON_DAATE = 0x80 // DAC Auto Trigger Enable Bit
DACON_DATS = 0x70 // DAC Trigger Selection Bits
DACON_DALA = 0x4 // DAC Left Adjust
DACON_DAEN = 0x1 // DAC Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: ADC Control and Status Register B
ADCSRB_ADHSM = 0x80 // ADC High Speed Mode
ADCSRB_ADNCDIS = 0x40 // ADC Noise Canceller Disable
ADCSRB_ADSSEN = 0x10 // ADC Single Shot Enable on PSC's Synchronisation Signals
ADCSRB_ADTS = 0xf // ADC Auto Trigger Sources
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40 // ADC7 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
// DIDR1: Digital Input Disable Register 0
DIDR1_ACMP1MD = 0x8
DIDR1_AMP0POSD = 0x4
DIDR1_ADC10D = 0x2
DIDR1_ADC9D = 0x1
// AMP0CSR
AMP0CSR_AMP0EN = 0x80
AMP0CSR_AMP0IS = 0x40
AMP0CSR_AMP0G = 0x30
AMP0CSR_AMP0GS = 0x8
AMP0CSR_AMP0TS = 0x3
)
// Bitfields for AC: Analog Comparator
const (
// AC3CON: Analog Comparator3 Control Register
AC3CON_AC3EN = 0x80 // Analog Comparator3 Enable Bit
AC3CON_AC3IE = 0x40 // Analog Comparator 3 Interrupt Enable Bit
AC3CON_AC3IS = 0x30 // Analog Comparator 3 Interrupt Select Bit
AC3CON_AC3OEA = 0x8 // Analog Comparator 3 Alternate Output Enable
AC3CON_AC3M = 0x7 // Analog Comparator 3 Multiplexer Register
// AC1CON: Analog Comparator 1 Control Register
AC1CON_AC1EN = 0x80 // Analog Comparator 1 Enable Bit
AC1CON_AC1IE = 0x40 // Analog Comparator 1 Interrupt Enable Bit
AC1CON_AC1IS = 0x30 // Analog Comparator 1 Interrupt Select Bit
AC1CON_AC1M = 0x7 // Analog Comparator 1 Multiplexer Register
// AC2CON: Analog Comparator 2 Control Register
AC2CON_AC2EN = 0x80 // Analog Comparator 2 Enable Bit
AC2CON_AC2IE = 0x40 // Analog Comparator 2 Interrupt Enable Bit
AC2CON_AC2IS = 0x30 // Analog Comparator 2 Interrupt Select Bit
AC2CON_AC2M = 0x7 // Analog Comparator 2 Multiplexer Register
// ACSR: Analog Comparator Status Register
ACSR_AC3IF = 0x80 // Analog Comparator 3 Interrupt Flag Bit
ACSR_AC2IF = 0x40 // Analog Comparator 2 Interrupt Flag Bit
ACSR_AC1IF = 0x20 // Analog Comparator 1 Interrupt Flag Bit
ACSR_AC3O = 0x8 // Analog Comparator 3 Output Bit
ACSR_AC2O = 0x4 // Analog Comparator 2 Output Bit
ACSR_AC1O = 0x2 // Analog Comparator 1 Output Bit
// AC3ECON
AC3ECON_AC3OI = 0x20 // Analog Comparator Ouput Invert
AC3ECON_AC3OE = 0x10 // Analog Comparator Ouput Enable
AC3ECON_AC3H = 0x7 // Analog Comparator Hysteresis Select
// AC2ECON
AC2ECON_AC2OI = 0x20 // Analog Comparator Ouput Invert
AC2ECON_AC2OE = 0x10 // Analog Comparator Ouput Enable
AC2ECON_AC2H = 0x7 // Analog Comparator Hysteresis Select
// AC1ECON
AC1ECON_AC1OI = 0x20 // Analog Comparator Ouput Invert
AC1ECON_AC1OE = 0x10 // Analog Comparator Ouput Enable
AC1ECON_AC1ICE = 0x8 // Analog Comparator Interrupt Capture Enable
AC1ECON_AC1H = 0x7 // Analog Comparator Hysteresis Select
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_RSTDIS = 0x8 // Reset Pin Disable
MCUCR_CKRC81 = 0x4 // Frequency Selection of the Calibrated RC Oscillator
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PLLCSR: PLL Control And Status Register
PLLCSR_PLLF = 0x3c
PLLCSR_PLLE = 0x2 // PLL Enable
PLLCSR_PLOCK = 0x1 // PLL Lock Detector
// PRR: Power Reduction Register
PRR_PRPSC2 = 0x80 // Power Reduction PSC2
PRR_PRPSCR = 0x20 // Power Reduction PSC0
PRR_PRTIM1 = 0x10 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRADC = 0x1 // Power Reduction ADC
// CLKCSR
CLKCSR_CLKCCE = 0x80 // Clock Control Change Enable
CLKCSR_CLKRDY = 0x10 // Clock Ready Flag
CLKCSR_CLKC = 0xf // Clock Control
// CLKSELR
CLKSELR_COUT = 0x40 // Clock OUT
CLKSELR_CSUT = 0x30 // Clock Start up Time
CLKSELR_CKSEL = 0xf // Clock Source Select
// BGCCR: BandGap Current Calibration Register
BGCCR_BGCC = 0xf
// BGCRR: BandGap Resistor Calibration Register
BGCRR_BGCR = 0xf
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_NVMBSY = 0x80 // None Volatile Busy Memory Busy
EECR_EEPAGE = 0x40 // EEPROM Page Access
EECR_EEPM = 0x30 // EEPROM Programming Mode
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for PSC: Power Stage Controller
const (
// PFRC0B: PSC 0 Input B Control
PFRC0B_PCAE0B = 0x80 // PSC 0 Capture Enable Input Part B
PFRC0B_PISEL0B = 0x40 // PSC 0 Input Select for Part B
PFRC0B_PELEV0B = 0x20 // PSC 0 Edge Level Selector on Input Part B
PFRC0B_PFLTE0B = 0x10 // PSC 0 Filter Enable on Input Part B
PFRC0B_PRFM0B = 0xf // PSC 0 Retrigger and Fault Mode for Part B
// PFRC0A: PSC 0 Input A Control
PFRC0A_PCAE0A = 0x80 // PSC 0 Capture Enable Input Part A
PFRC0A_PISEL0A = 0x40 // PSC 0 Input Select for Part A
PFRC0A_PELEV0A = 0x20 // PSC 0 Edge Level Selector on Input Part A
PFRC0A_PFLTE0A = 0x10 // PSC 0 Filter Enable on Input Part A
PFRC0A_PRFM0A = 0xf // PSC 0 Retrigger and Fault Mode for Part A
// PCTL0: PSC 0 Control Register
PCTL0_PPRE0 = 0xc0 // PSC 0 Prescaler Selects
PCTL0_PBFM0 = 0x24 // PSC 0 Balance Flank Width Modulation
PCTL0_PAOC0B = 0x10 // PSC 0 Asynchronous Output Control B
PCTL0_PAOC0A = 0x8 // PSC 0 Asynchronous Output Control A
PCTL0_PCCYC0 = 0x2 // PSC0 Complete Cycle
PCTL0_PRUN0 = 0x1 // PSC 0 Run
// PCNF0: PSC 0 Configuration Register
PCNF0_PFIFTY0 = 0x80 // PSC 0 Fifty
PCNF0_PALOCK0 = 0x40 // PSC 0 Autolock
PCNF0_PLOCK0 = 0x20 // PSC 0 Lock
PCNF0_PMODE0 = 0x18 // PSC 0 Mode
PCNF0_POP0 = 0x4 // PSC 0 Output Polarity
PCNF0_PCLKSEL0 = 0x2 // PSC 0 Input Clock Select
// PSOC0: PSC0 Synchro and Output Configuration
PSOC0_PISEL0A1 = 0x80 // PSC Input Select
PSOC0_PISEL0B1 = 0x40 // PSC Input Select
PSOC0_PSYNC0 = 0x30 // Synchronisation out for ADC selection
PSOC0_POEN0B = 0x4 // PSCOUT01 Output Enable
PSOC0_POEN0A = 0x1 // PSCOUT00 Output Enable
// PIM0: PSC0 Interrupt Mask Register
PIM0_PEVE0B = 0x10 // External Event B Interrupt Enable
PIM0_PEVE0A = 0x8 // External Event A Interrupt Enable
PIM0_PEOEPE0 = 0x2 // End of Enhanced Cycle Enable
PIM0_PEOPE0 = 0x1 // End of Cycle Interrupt Enable
// PIFR0: PSC0 Interrupt Flag Register
PIFR0_POAC0B = 0x80 // PSC 0 Output A Activity
PIFR0_POAC0A = 0x40 // PSC 0 Output A Activity
PIFR0_PEV0B = 0x10 // External Event B Interrupt
PIFR0_PEV0A = 0x8 // External Event A Interrupt
PIFR0_PRN0 = 0x6 // Ramp Number
PIFR0_PEOP0 = 0x1 // End of PSC0 Interrupt
// PICR2H: PSC 2 Input Capture Register High
PICR2H_PCST2 = 0x80 // PSC 2 Capture Software Trigger Bit
PICR2H_PICR21 = 0xc
PICR2H_PICR2 = 0x3
// PFRC2B: PSC 2 Input B Control
PFRC2B_PCAE2B = 0x80 // PSC 2 Capture Enable Input Part B
PFRC2B_PISEL2B = 0x40 // PSC 2 Input Select for Part B
PFRC2B_PELEV2B = 0x20 // PSC 2 Edge Level Selector on Input Part B
PFRC2B_PFLTE2B = 0x10 // PSC 2 Filter Enable on Input Part B
PFRC2B_PRFM2B = 0xf // PSC 2 Retrigger and Fault Mode for Part B
// PFRC2A: PSC 2 Input B Control
PFRC2A_PCAE2A = 0x80 // PSC 2 Capture Enable Input Part A
PFRC2A_PISEL2A = 0x40 // PSC 2 Input Select for Part A
PFRC2A_PELEV2A = 0x20 // PSC 2 Edge Level Selector on Input Part A
PFRC2A_PFLTE2A = 0x10 // PSC 2 Filter Enable on Input Part A
PFRC2A_PRFM2A = 0xf // PSC 2 Retrigger and Fault Mode for Part A
// PCTL2: PSC 2 Control Register
PCTL2_PPRE2 = 0xc0 // PSC 2 Prescaler Selects
PCTL2_PBFM2 = 0x20 // Balance Flank Width Modulation
PCTL2_PAOC2B = 0x10 // PSC 2 Asynchronous Output Control B
PCTL2_PAOC2A = 0x8 // PSC 2 Asynchronous Output Control A
PCTL2_PARUN2 = 0x4 // PSC2 Auto Run
PCTL2_PCCYC2 = 0x2 // PSC2 Complete Cycle
PCTL2_PRUN2 = 0x1 // PSC 2 Run
// PCNF2: PSC 2 Configuration Register
PCNF2_PFIFTY2 = 0x80 // PSC 2 Fifty
PCNF2_PALOCK2 = 0x40 // PSC 2 Autolock
PCNF2_PLOCK2 = 0x20 // PSC 2 Lock
PCNF2_PMODE2 = 0x18 // PSC 2 Mode
PCNF2_POP2 = 0x4 // PSC 2 Output Polarity
PCNF2_PCLKSEL2 = 0x2 // PSC 2 Input Clock Select
PCNF2_POME2 = 0x1 // PSC 2 Output Matrix Enable
// PCNFE2: PSC 2 Enhanced Configuration Register
PCNFE2_PASDLK2 = 0xe0
PCNFE2_PBFM21 = 0x10
PCNFE2_PELEV2A1 = 0x8
PCNFE2_PELEV2B1 = 0x4
PCNFE2_PISEL2A1 = 0x2
PCNFE2_PISEL2B1 = 0x1
// POM2: PSC 2 Output Matrix
POM2_POMV2B = 0xf0 // Output Matrix Output B Ramps
POM2_POMV2A = 0xf // Output Matrix Output A Ramps
// PSOC2: PSC2 Synchro and Output Configuration
PSOC2_POS2 = 0xc0 // PSC 2 Output 23 Select
PSOC2_PSYNC2 = 0x30 // Synchronization Out for ADC Selection
PSOC2_POEN2D = 0x8 // PSCOUT23 Output Enable
PSOC2_POEN2B = 0x4 // PSCOUT21 Output Enable
PSOC2_POEN2C = 0x2 // PSCOUT22 Output Enable
PSOC2_POEN2A = 0x1 // PSCOUT20 Output Enable
// PIM2: PSC2 Interrupt Mask Register
PIM2_PSEIE2 = 0x20 // PSC 2 Synchro Error Interrupt Enable
PIM2_PEVE2B = 0x10 // External Event B Interrupt Enable
PIM2_PEVE2A = 0x8 // External Event A Interrupt Enable
PIM2_PEOEPE2 = 0x2 // End of Enhanced Cycle Interrupt Enable
PIM2_PEOPE2 = 0x1 // End of Cycle Interrupt Enable
// PIFR2: PSC2 Interrupt Flag Register
PIFR2_POAC2B = 0x80 // PSC 2 Output A Activity
PIFR2_POAC2A = 0x40 // PSC 2 Output A Activity
PIFR2_PSEI2 = 0x20 // PSC 2 Synchro Error Interrupt
PIFR2_PEV2B = 0x10 // External Event B Interrupt
PIFR2_PEV2A = 0x8 // External Event A Interrupt
PIFR2_PRN2 = 0x6 // Ramp Number
PIFR2_PEOP2 = 0x1 // End of PSC2 Interrupt
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM13 = 0x10 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM161.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 20;

Просмотреть файл

@ -1,934 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90PWM216.atdf, see http://packs.download.atmel.com/
// +build avr,at90pwm216
// Device information for the AT90PWM216.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90PWM216"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_PSC2_CAPT = 1 // PSC2 Capture Event
IRQ_PSC2_EC = 2 // PSC2 End Cycle
IRQ_PSC1_CAPT = 3 // PSC1 Capture Event
IRQ_PSC1_EC = 4 // PSC1 End Cycle
IRQ_PSC0_CAPT = 5 // PSC0 Capture Event
IRQ_PSC0_EC = 6 // PSC0 End Cycle
IRQ_ANALOG_COMP_0 = 7 // Analog Comparator 0
IRQ_ANALOG_COMP_1 = 8 // Analog Comparator 1
IRQ_ANALOG_COMP_2 = 9 // Analog Comparator 2
IRQ_INT0 = 10 // External Interrupt Request 0
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 12 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 13 // Timer/Counter Compare Match B
IRQ_RESERVED15 = 14 //
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP_A = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_OVF = 17 // Timer/Counter0 Overflow
IRQ_ADC = 18 // ADC Conversion Complete
IRQ_INT1 = 19 // External Interrupt Request 1
IRQ_SPI_STC = 20 // SPI Serial Transfer Complete
IRQ_USART_RX = 21 // USART, Rx Complete
IRQ_USART_UDRE = 22 // USART Data Register Empty
IRQ_USART_TX = 23 // USART, Tx Complete
IRQ_INT2 = 24 // External Interrupt Request 2
IRQ_WDT = 25 // Watchdog Timeout Interrupt
IRQ_EE_READY = 26 // EEPROM Ready
IRQ_TIMER0_COMPB = 27 // Timer Counter 0 Compare Match B
IRQ_INT3 = 28 // External Interrupt Request 3
IRQ_RESERVED30 = 29 //
IRQ_RESERVED31 = 30 //
IRQ_SPM_READY = 31 // Store Program Memory Read
IRQ_max = 31 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// Extended USART
EUSART = struct {
EUDR __reg
EUCSRA __reg
EUCSRB __reg
EUCSRC __reg
MUBRRH __reg
MUBRRL __reg
}{
EUDR: 0xce, // EUSART I/O Data Register
EUCSRA: 0xc8, // EUSART Control and Status Register A
EUCSRB: 0xc9, // EUSART Control Register B
EUCSRC: 0xca, // EUSART Status Register C
MUBRRH: 0xcd, // Manchester Receiver Baud Rate Register High Byte
MUBRRL: 0xcc, // Manchester Receiver Baud Rate Register Low Byte
}
// Analog Comparator
AC = struct {
AC0CON __reg
AC1CON __reg
AC2CON __reg
ACSR __reg
}{
AC0CON: 0xad, // Analog Comparator 0 Control Register
AC1CON: 0xae, // Analog Comparator 1 Control Register
AC2CON: 0xaf, // Analog Comparator 2 Control Register
ACSR: 0x50, // Analog Comparator Status Register
}
// Digital-to-Analog Converter
DAC = struct {
DACL __reg
DACH __reg
DACON __reg
}{
DACL: 0xab, // DAC Data Register Bytes
DACH: 0xab, // DAC Data Register Bytes
DACON: 0xaa, // DAC Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR3 __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PLLCSR __reg
PRR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR3: 0x3b, // General Purpose IO Register 3
GPIOR2: 0x3a, // General Purpose IO Register 2
GPIOR1: 0x39, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PLLCSR: 0x49, // PLL Control And Status Register
PRR: 0x64, // Power Reduction Register
}
// Timer/Counter, 8-bit
TC8 = struct {
TIMSK0 __reg
TIFR0 __reg
TCCR0A __reg
TCCR0B __reg
TCNT0 __reg
OCR0A __reg
OCR0B __reg
}{
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
TCCR0A: 0x44, // Timer/Counter Control Register A
TCCR0B: 0x45, // Timer/Counter Control Register B
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
ADCSRB __reg
DIDR0 __reg
DIDR1 __reg
AMP0CSR __reg
AMP1CSR __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRB: 0x7b, // ADC Control and Status Register B
DIDR0: 0x7e, // Digital Input Disable Register 0
DIDR1: 0x7f, // Digital Input Disable Register 1
AMP0CSR: 0x76,
AMP1CSR: 0x77,
}
// USART
USART = struct {
UDR __reg
UCSRA __reg
UCSRB __reg
UCSRC __reg
UBRRH __reg
UBRRL __reg
}{
UDR: 0xc6, // USART I/O Data Register
UCSRA: 0xc0, // USART Control and Status register A
UCSRB: 0xc1, // USART Control an Status register B
UCSRC: 0xc2, // USART Control an Status register C
UBRRH: 0xc5, // USART Baud Rate Register High Byte
UBRRL: 0xc4, // USART Baud Rate Register Low Byte
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Read/Write Access Bytes
EEARH: 0x41, // EEPROM Read/Write Access Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Power Stage Controller
PSC = struct {
PICR0L __reg
PICR0H __reg
PFRC0B __reg
PFRC0A __reg
PCTL0 __reg
PCNF0 __reg
OCR0RBL __reg
OCR0RBH __reg
OCR0SBL __reg
OCR0SBH __reg
OCR0RAL __reg
OCR0RAH __reg
OCR0SAL __reg
OCR0SAH __reg
PSOC0 __reg
PIM0 __reg
PIFR0 __reg
PICR2L __reg
PICR2H __reg
PFRC2B __reg
PFRC2A __reg
PCTL2 __reg
PCNF2 __reg
OCR2RBL __reg
OCR2RBH __reg
OCR2SBL __reg
OCR2SBH __reg
OCR2RAL __reg
OCR2RAH __reg
OCR2SAL __reg
OCR2SAH __reg
POM2 __reg
PSOC2 __reg
PIM2 __reg
PIFR2 __reg
}{
PICR0L: 0xde, // PSC 0 Input Capture Register
PICR0H: 0xde, // PSC 0 Input Capture Register
PFRC0B: 0xdd, // PSC 0 Input B Control
PFRC0A: 0xdc, // PSC 0 Input A Control
PCTL0: 0xdb, // PSC 0 Control Register
PCNF0: 0xda, // PSC 0 Configuration Register
OCR0RBL: 0xd8, // Output Compare RB Register
OCR0RBH: 0xd8, // Output Compare RB Register
OCR0SBL: 0xd6, // Output Compare SB Register
OCR0SBH: 0xd6, // Output Compare SB Register
OCR0RAL: 0xd4, // Output Compare RA Register
OCR0RAH: 0xd4, // Output Compare RA Register
OCR0SAL: 0xd2, // Output Compare SA Register
OCR0SAH: 0xd2, // Output Compare SA Register
PSOC0: 0xd0, // PSC0 Synchro and Output Configuration
PIM0: 0xa1, // PSC0 Interrupt Mask Register
PIFR0: 0xa0, // PSC0 Interrupt Flag Register
PICR2L: 0xfe, // PSC 2 Input Capture Register
PICR2H: 0xfe, // PSC 2 Input Capture Register
PFRC2B: 0xfd, // PSC 2 Input B Control
PFRC2A: 0xfc, // PSC 2 Input B Control
PCTL2: 0xfb, // PSC 2 Control Register
PCNF2: 0xfa, // PSC 2 Configuration Register
OCR2RBL: 0xf8, // Output Compare RB Register
OCR2RBH: 0xf8, // Output Compare RB Register
OCR2SBL: 0xf6, // Output Compare SB Register
OCR2SBH: 0xf6, // Output Compare SB Register
OCR2RAL: 0xf4, // Output Compare RA Register
OCR2RAH: 0xf4, // Output Compare RA Register
OCR2SAL: 0xf2, // Output Compare SA Register
OCR2SAH: 0xf2, // Output Compare SA Register
POM2: 0xf1, // PSC 2 Output Matrix
PSOC2: 0xf0, // PSC2 Synchro and Output Configuration
PIM2: 0xa5, // PSC2 Interrupt Mask Register
PIFR2: 0xa4, // PSC2 Interrupt Flag Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_PSC2RB = 0x80 // PSC2 Reset Behavior
EXTENDED_PSC1RB = 0x40 // PSC1 Reset Behavior
EXTENDED_PSC0RB = 0x20 // PSC0 Reset Behavior
EXTENDED_PSCRV = 0x10 // PSCOUT Reset Value
EXTENDED_BOOTSZ = 0x6 // Select Boot Size
EXTENDED_BOOTRST = 0x1 // Select Reset Vector
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector Trigger Level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EUSART: Extended USART
const (
// EUCSRA: EUSART Control and Status Register A
EUCSRA_UTxS = 0xf0 // EUSART Control and Status Register A Bits
EUCSRA_URxS = 0xf // EUSART Control and Status Register A Bits
// EUCSRB: EUSART Control Register B
EUCSRB_EUSART = 0x10 // EUSART Enable Bit
EUCSRB_EUSBS = 0x8 // EUSBS Enable Bit
EUCSRB_EMCH = 0x2 // Manchester Mode Bit
EUCSRB_BODR = 0x1 // Order Bit
// EUCSRC: EUSART Status Register C
EUCSRC_FEM = 0x8 // Frame Error Manchester Bit
EUCSRC_F1617 = 0x4 // F1617 Bit
EUCSRC_STP = 0x3 // Stop Bits
// MUBRRH: Manchester Receiver Baud Rate Register High Byte
MUBRRH_MUBRR = 0xff // Manchester Receiver Baud Rate Register Bits
// MUBRRL: Manchester Receiver Baud Rate Register Low Byte
MUBRRL_MUBRR = 0xff // Manchester Receiver Baud Rate Register Bits
)
// Bitfields for AC: Analog Comparator
const (
// AC0CON: Analog Comparator 0 Control Register
AC0CON_AC0EN = 0x80 // Analog Comparator 0 Enable Bit
AC0CON_AC0IE = 0x40 // Analog Comparator 0 Interrupt Enable Bit
AC0CON_AC0IS = 0x30 // Analog Comparator 0 Interrupt Select Bit
AC0CON_AC0M = 0x7 // Analog Comparator 0 Multiplexer Register
// AC1CON: Analog Comparator 1 Control Register
AC1CON_AC1EN = 0x80 // Analog Comparator 1 Enable Bit
AC1CON_AC1IE = 0x40 // Analog Comparator 1 Interrupt Enable Bit
AC1CON_AC1IS = 0x30 // Analog Comparator 1 Interrupt Select Bit
AC1CON_AC1ICE = 0x8 // Analog Comparator 1 Interrupt Capture Enable Bit
AC1CON_AC1M = 0x7 // Analog Comparator 1 Multiplexer Register
// AC2CON: Analog Comparator 2 Control Register
AC2CON_AC2EN = 0x80 // Analog Comparator 2 Enable Bit
AC2CON_AC2IE = 0x40 // Analog Comparator 2 Interrupt Enable Bit
AC2CON_AC2IS = 0x30 // Analog Comparator 2 Interrupt Select Bit
AC2CON_AC2M = 0x7 // Analog Comparator 2 Multiplexer Register
// ACSR: Analog Comparator Status Register
ACSR_ACCKDIV = 0x80 // Analog Comparator Clock Divider
ACSR_AC2IF = 0x40 // Analog Comparator 2 Interrupt Flag Bit
ACSR_AC1IF = 0x20 // Analog Comparator 1 Interrupt Flag Bit
ACSR_AC0IF = 0x10 // Analog Comparator 0 Interrupt Flag Bit
ACSR_AC2O = 0x4 // Analog Comparator 2 Output Bit
ACSR_AC1O = 0x2 // Analog Comparator 1 Output Bit
ACSR_AC0O = 0x1 // Analog Comparator 0 Output Bit
)
// Bitfields for DAC: Digital-to-Analog Converter
const (
// DACL: DAC Data Register Bytes
// DACH: DAC Data Register Bytes
DAC_DAC = 0xffff // DAC Data Register Bits
// DACON: DAC Control Register
DACON_DAATE = 0x80 // DAC Auto Trigger Enable Bit
DACON_DATS = 0x70 // DAC Trigger Selection Bits
DACON_DALA = 0x4 // DAC Left Adjust
DACON_DAOE = 0x2 // DAC Output Enable
DACON_DAEN = 0x1 // DAC Enable Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_SPIPS = 0x80 // SPI Pin Select
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR3: General Purpose IO Register 3
GPIOR3_GPIOR = 0xff // General Purpose IO Register 3 bis
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PLLCSR: PLL Control And Status Register
PLLCSR_PLLF = 0x4 // PLL Factor
PLLCSR_PLLE = 0x2 // PLL Enable
PLLCSR_PLOCK = 0x1 // PLL Lock Detector
// PRR: Power Reduction Register
PRR_PRPSC2 = 0x80 // Power Reduction PSC2
PRR_PRPSC1 = 0x40 // Power Reduction PSC1
PRR_PRPSC0 = 0x20 // Power Reduction PSC0
PRR_PRTIM1 = 0x10 // Power Reduction Timer/Counter1
PRR_PRTIM0 = 0x8 // Power Reduction Timer/Counter0
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer Counter 0 value
// OCR0A: Timer/Counter0 Output Compare Register
OCR0A_OCR0A = 0xff // Output Compare A value
// OCR0B: Timer/Counter0 Output Compare Register
OCR0B_OCR0B = 0xff // Output Compare B value
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1
// OCR1AL: Timer/Counter1 Output Compare Register Bytes
// OCR1AH: Timer/Counter1 Output Compare Register Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A Register
// OCR1BL: Timer/Counter1 Output Compare Register Bytes
// OCR1BH: Timer/Counter1 Output Compare Register Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B Register
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter Input Capture
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: ADC Control and Status Register B
ADCSRB_ADHSM = 0x80 // ADC High Speed Mode
ADCSRB_ADTS3 = 0x8 // ADC Auto Trigger Source Selection 3
ADCSRB_ADTS2 = 0x4 // ADC Auto Trigger Source Selection 2
ADCSRB_ADTS1 = 0x2 // ADC Auto Trigger Source Selection 1
ADCSRB_ADTS0 = 0x1 // ADC Auto Trigger Source Selection 0
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
// DIDR1: Digital Input Disable Register 1
DIDR1_ACMP0D = 0x20
DIDR1_AMP0PD = 0x10
DIDR1_AMP0ND = 0x8
DIDR1_ADC10D = 0x4
DIDR1_ADC9D = 0x2
DIDR1_ADC8D = 0x1
// AMP0CSR
AMP0CSR_AMP0EN = 0x80
AMP0CSR_AMP0IS = 0x40
AMP0CSR_AMP0G = 0x30
AMP0CSR_AMP0TS = 0x3
// AMP1CSR
AMP1CSR_AMP1EN = 0x80
AMP1CSR_AMP1IS = 0x40
AMP1CSR_AMP1G = 0x30
AMP1CSR_AMP1TS = 0x3
)
// Bitfields for USART: USART
const (
// UCSRA: USART Control and Status register A
UCSRA_RXC = 0x80 // USART Receive Complete
UCSRA_TXC = 0x40 // USART Transmitt Complete
UCSRA_UDRE = 0x20 // USART Data Register Empty
UCSRA_FE = 0x10 // Framing Error
UCSRA_DOR = 0x8 // Data Overrun
UCSRA_UPE = 0x4 // USART Parity Error
UCSRA_U2X = 0x2 // Double USART Transmission Bit
UCSRA_MPCM = 0x1 // Multi-processor Communication Mode
// UCSRB: USART Control an Status register B
UCSRB_RXCIE = 0x80 // RX Complete Interrupt Enable
UCSRB_TXCIE = 0x40 // TX Complete Interrupt Enable
UCSRB_UDRIE = 0x20 // USART Data Register Empty Interrupt Enable
UCSRB_RXEN = 0x10 // Receiver Enable
UCSRB_TXEN = 0x8 // Transmitter Enable
UCSRB_UCSZ2 = 0x4 // Character Size
UCSRB_RXB8 = 0x2 // Receive Data Bit 8
UCSRB_TXB8 = 0x1 // Transmit Data Bit 8
// UCSRC: USART Control an Status register C
UCSRC_UMSEL0 = 0x40 // USART Mode Select
UCSRC_UPM = 0x30 // Parity Mode Bits
UCSRC_USBS = 0x8 // Stop Bit Select
UCSRC_UCSZ = 0x6 // Character Size Bits
UCSRC_UCPOL = 0x1 // Clock Polarity
// UBRRH: USART Baud Rate Register High Byte
UBRRH_UBRR = 0xf // USART Baud Rate Register Bits
// UBRRL: USART Baud Rate Register Low Byte
UBRRL_UBRR = 0xff // USART Baud Rate Register bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPD = 0xff // SPI Data
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xf // External Interrupt Mask
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xf // External Interrupt Flags
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access Bytes
// EEARH: EEPROM Read/Write Access Bytes
EEAR_EEAR = 0xfff // EEPROM Address bytes
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data Bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for PSC: Power Stage Controller
const (
// PICR0L: PSC 0 Input Capture Register
// PICR0H: PSC 0 Input Capture Register
PICR0_PCST0 = 0x8000 // PSC 0 Input Capture Software Trig
PICR0_PICR0 = 0xfff // PSC 0 Input Capture Bytes
// PFRC0B: PSC 0 Input B Control
PFRC0B_PCAE0B = 0x80 // PSC 0 Capture Enable Input Part B
PFRC0B_PISEL0B = 0x40 // PSC 0 Input Select for Part B
PFRC0B_PELEV0B = 0x20 // PSC 0 Edge Level Selector on Input Part B
PFRC0B_PFLTE0B = 0x10 // PSC 0 Filter Enable on Input Part B
PFRC0B_PRFM0B = 0xf // PSC 0 Retrigger and Fault Mode for Part B
// PFRC0A: PSC 0 Input A Control
PFRC0A_PCAE0A = 0x80 // PSC 0 Capture Enable Input Part A
PFRC0A_PISEL0A = 0x40 // PSC 0 Input Select for Part A
PFRC0A_PELEV0A = 0x20 // PSC 0 Edge Level Selector on Input Part A
PFRC0A_PFLTE0A = 0x10 // PSC 0 Filter Enable on Input Part A
PFRC0A_PRFM0A = 0xf // PSC 0 Retrigger and Fault Mode for Part A
// PCTL0: PSC 0 Control Register
PCTL0_PPRE0 = 0xc0 // PSC 0 Prescaler Selects
PCTL0_PBFM0 = 0x20 // PSC 0 Balance Flank Width Modulation
PCTL0_PAOC0B = 0x10 // PSC 0 Asynchronous Output Control B
PCTL0_PAOC0A = 0x8 // PSC 0 Asynchronous Output Control A
PCTL0_PARUN0 = 0x4 // PSC0 Auto Run
PCTL0_PCCYC0 = 0x2 // PSC0 Complete Cycle
PCTL0_PRUN0 = 0x1 // PSC 0 Run
// PCNF0: PSC 0 Configuration Register
PCNF0_PFIFTY0 = 0x80 // PSC 0 Fifty
PCNF0_PALOCK0 = 0x40 // PSC 0 Autolock
PCNF0_PLOCK0 = 0x20 // PSC 0 Lock
PCNF0_PMODE0 = 0x18 // PSC 0 Mode
PCNF0_POP0 = 0x4 // PSC 0 Output Polarity
PCNF0_PCLKSEL0 = 0x2 // PSC 0 Input Clock Select
// PSOC0: PSC0 Synchro and Output Configuration
PSOC0_PSYNC0 = 0x30 // Synchronization Out for ADC Selection
PSOC0_POEN0B = 0x4 // PSCOUT01 Output Enable
PSOC0_POEN0A = 0x1 // PSCOUT00 Output Enable
// PIM0: PSC0 Interrupt Mask Register
PIM0_PSEIE0 = 0x20 // PSC 0 Synchro Error Interrupt Enable
PIM0_PEVE0B = 0x10 // External Event B Interrupt Enable
PIM0_PEVE0A = 0x8 // External Event A Interrupt Enable
PIM0_PEOPE0 = 0x1 // End of Cycle Interrupt Enable
// PIFR0: PSC0 Interrupt Flag Register
PIFR0_POAC0B = 0x80 // PSC 0 Output A Activity
PIFR0_POAC0A = 0x40 // PSC 0 Output A Activity
PIFR0_PSEI0 = 0x20 // PSC 0 Synchro Error Interrupt
PIFR0_PEV0B = 0x10 // External Event B Interrupt
PIFR0_PEV0A = 0x8 // External Event A Interrupt
PIFR0_PRN0 = 0x6 // Ramp Number
PIFR0_PEOP0 = 0x1 // End of PSC0 Interrupt
// PICR2L: PSC 2 Input Capture Register
// PICR2H: PSC 2 Input Capture Register
PICR2_PCST2 = 0x8000 // PSC 2 Input Capture Software Trig
PICR2_PICR2 = 0xfff // PSC 2 Input Capture Bytes
// PFRC2B: PSC 2 Input B Control
PFRC2B_PCAE2B = 0x80 // PSC 2 Capture Enable Input Part B
PFRC2B_PISEL2B = 0x40 // PSC 2 Input Select for Part B
PFRC2B_PELEV2B = 0x20 // PSC 2 Edge Level Selector on Input Part B
PFRC2B_PFLTE2B = 0x10 // PSC 2 Filter Enable on Input Part B
PFRC2B_PRFM2B = 0xf // PSC 2 Retrigger and Fault Mode for Part B
// PFRC2A: PSC 2 Input B Control
PFRC2A_PCAE2A = 0x80 // PSC 2 Capture Enable Input Part A
PFRC2A_PISEL2A = 0x40 // PSC 2 Input Select for Part A
PFRC2A_PELEV2A = 0x20 // PSC 2 Edge Level Selector on Input Part A
PFRC2A_PFLTE2A = 0x10 // PSC 2 Filter Enable on Input Part A
PFRC2A_PRFM2A = 0xf // PSC 2 Retrigger and Fault Mode for Part A
// PCTL2: PSC 2 Control Register
PCTL2_PPRE2 = 0xc0 // PSC 2 Prescaler Selects
PCTL2_PBFM2 = 0x20 // Balance Flank Width Modulation
PCTL2_PAOC2B = 0x10 // PSC 2 Asynchronous Output Control B
PCTL2_PAOC2A = 0x8 // PSC 2 Asynchronous Output Control A
PCTL2_PARUN2 = 0x4 // PSC2 Auto Run
PCTL2_PCCYC2 = 0x2 // PSC2 Complete Cycle
PCTL2_PRUN2 = 0x1 // PSC 2 Run
// PCNF2: PSC 2 Configuration Register
PCNF2_PFIFTY2 = 0x80 // PSC 2 Fifty
PCNF2_PALOCK2 = 0x40 // PSC 2 Autolock
PCNF2_PLOCK2 = 0x20 // PSC 2 Lock
PCNF2_PMODE2 = 0x18 // PSC 2 Mode
PCNF2_POP2 = 0x4 // PSC 2 Output Polarity
PCNF2_PCLKSEL2 = 0x2 // PSC 2 Input Clock Select
PCNF2_POME2 = 0x1 // PSC 2 Output Matrix Enable
// POM2: PSC 2 Output Matrix
POM2_POMV2B = 0xf0 // Output Matrix Output B Ramps
POM2_POMV2A = 0xf // Output Matrix Output A Ramps
// PSOC2: PSC2 Synchro and Output Configuration
PSOC2_POS2 = 0xc0 // PSC 2 Output 23 Select
PSOC2_PSYNC2 = 0x30 // Synchronization Out for ADC Selection
PSOC2_POEN2D = 0x8 // PSCOUT23 Output Enable
PSOC2_POEN2B = 0x4 // PSCOUT21 Output Enable
PSOC2_POEN2C = 0x2 // PSCOUT22 Output Enable
PSOC2_POEN2A = 0x1 // PSCOUT20 Output Enable
// PIM2: PSC2 Interrupt Mask Register
PIM2_PSEIE2 = 0x20 // PSC 2 Synchro Error Interrupt Enable
PIM2_PEVE2B = 0x10 // External Event B Interrupt Enable
PIM2_PEVE2A = 0x8 // External Event A Interrupt Enable
PIM2_PEOPE2 = 0x1 // End of Cycle Interrupt Enable
// PIFR2: PSC2 Interrupt Flag Register
PIFR2_POAC2B = 0x80 // PSC 2 Output A Activity
PIFR2_POAC2A = 0x40 // PSC 2 Output A Activity
PIFR2_PSEI2 = 0x20 // PSC 2 Synchro Error Interrupt
PIFR2_PEV2B = 0x10 // External Event B Interrupt
PIFR2_PEV2A = 0x8 // External Event A Interrupt
PIFR2_PRN2 = 0x6 // Ramp Number
PIFR2_PEOP2 = 0x1 // End of PSC2 Interrupt
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM216.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 32;

Просмотреть файл

@ -1,970 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90PWM2B.atdf, see http://packs.download.atmel.com/
// +build avr,at90pwm2b
// Device information for the AT90PWM2B.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90PWM2B"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_PSC2_CAPT = 1 // PSC2 Capture Event
IRQ_PSC2_EC = 2 // PSC2 End Cycle
IRQ_PSC1_CAPT = 3 // PSC1 Capture Event
IRQ_PSC1_EC = 4 // PSC1 End Cycle
IRQ_PSC0_CAPT = 5 // PSC0 Capture Event
IRQ_PSC0_EC = 6 // PSC0 End Cycle
IRQ_ANALOG_COMP_0 = 7 // Analog Comparator 0
IRQ_ANALOG_COMP_1 = 8 // Analog Comparator 1
IRQ_ANALOG_COMP_2 = 9 // Analog Comparator 2
IRQ_INT0 = 10 // External Interrupt Request 0
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 12 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 13 // Timer/Counter Compare Match B
IRQ_RESERVED15 = 14 //
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_OVF = 17 // Timer/Counter0 Overflow
IRQ_ADC = 18 // ADC Conversion Complete
IRQ_INT1 = 19 // External Interrupt Request 1
IRQ_SPI_STC = 20 // SPI Serial Transfer Complete
IRQ_USART_RX = 21 // USART, Rx Complete
IRQ_USART_UDRE = 22 // USART Data Register Empty
IRQ_USART_TX = 23 // USART, Tx Complete
IRQ_INT2 = 24 // External Interrupt Request 2
IRQ_WDT = 25 // Watchdog Timeout Interrupt
IRQ_EE_READY = 26 // EEPROM Ready
IRQ_TIMER0_COMPB = 27 // Timer Counter 0 Compare Match B
IRQ_INT3 = 28 // External Interrupt Request 3
IRQ_RESERVED30 = 29 //
IRQ_RESERVED31 = 30 //
IRQ_SPM_READY = 31 // Store Program Memory Read
IRQ_max = 31 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// Extended USART
EUSART = struct {
EUDR __reg
EUCSRA __reg
EUCSRB __reg
EUCSRC __reg
MUBRRL __reg
MUBRRH __reg
}{
EUDR: 0xce, // EUSART I/O Data Register
EUCSRA: 0xc8, // EUSART Control and Status Register A
EUCSRB: 0xc9, // EUSART Control Register B
EUCSRC: 0xca, // EUSART Status Register C
MUBRRL: 0xcc, // Manchester Receiver Baud Rate Register
MUBRRH: 0xcc, // Manchester Receiver Baud Rate Register
}
// Analog Comparator
AC = struct {
AC0CON __reg
AC1CON __reg
AC2CON __reg
ACSR __reg
}{
AC0CON: 0xad, // Analog Comparator 0 Control Register
AC1CON: 0xae, // Analog Comparator 1 Control Register
AC2CON: 0xaf, // Analog Comparator 2 Control Register
ACSR: 0x50, // Analog Comparator Status Register
}
// Digital-to-Analog Converter
DAC = struct {
DACL __reg
DACH __reg
DACON __reg
}{
DACL: 0xab, // DAC Data Register
DACH: 0xab, // DAC Data Register
DACON: 0xaa, // DAC Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR3 __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PLLCSR __reg
PRR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR3: 0x3b, // General Purpose IO Register 3
GPIOR2: 0x3a, // General Purpose IO Register 2
GPIOR1: 0x39, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PLLCSR: 0x49, // PLL Control And Status Register
PRR: 0x64, // Power Reduction Register
}
// Timer/Counter, 8-bit
TC8 = struct {
TIMSK0 __reg
TIFR0 __reg
TCCR0A __reg
TCCR0B __reg
TCNT0 __reg
OCR0A __reg
OCR0B __reg
}{
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
TCCR0A: 0x44, // Timer/Counter Control Register A
TCCR0B: 0x45, // Timer/Counter Control Register B
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
ADCSRB __reg
DIDR0 __reg
DIDR1 __reg
AMP0CSR __reg
AMP1CSR __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRB: 0x7b, // ADC Control and Status Register B
DIDR0: 0x7e, // Digital Input Disable Register 0
DIDR1: 0x7f, // Digital Input Disable Register 1
AMP0CSR: 0x76,
AMP1CSR: 0x77,
}
// USART
USART = struct {
UDR __reg
UCSRA __reg
UCSRB __reg
UCSRC __reg
UBRRL __reg
UBRRH __reg
}{
UDR: 0xc6, // USART I/O Data Register
UCSRA: 0xc0, // USART Control and Status register A
UCSRB: 0xc1, // USART Control an Status register B
UCSRC: 0xc2, // USART Control an Status register C
UBRRL: 0xc4, // USART Baud Rate Register
UBRRH: 0xc4, // USART Baud Rate Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Read/Write Access Bytes
EEARH: 0x41, // EEPROM Read/Write Access Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Power Stage Controller
PSC = struct {
PICR0L __reg
PICR0H __reg
PFRC0B __reg
PFRC0A __reg
PCTL0 __reg
PCNF0 __reg
OCR0RBL __reg
OCR0RBH __reg
OCR0SBL __reg
OCR0SBH __reg
OCR0RAL __reg
OCR0RAH __reg
OCR0SAL __reg
OCR0SAH __reg
PSOC0 __reg
PIM0 __reg
PIFR0 __reg
PICR2L __reg
PICR2H __reg
PFRC2B __reg
PFRC2A __reg
PCTL2 __reg
PCNF2 __reg
OCR2RBL __reg
OCR2RBH __reg
OCR2SBL __reg
OCR2SBH __reg
OCR2RAL __reg
OCR2RAH __reg
OCR2SAL __reg
OCR2SAH __reg
POM2 __reg
PSOC2 __reg
PIM2 __reg
PIFR2 __reg
}{
PICR0L: 0xde, // PSC 0 Input Capture Register
PICR0H: 0xde, // PSC 0 Input Capture Register
PFRC0B: 0xdd, // PSC 0 Input B Control
PFRC0A: 0xdc, // PSC 0 Input A Control
PCTL0: 0xdb, // PSC 0 Control Register
PCNF0: 0xda, // PSC 0 Configuration Register
OCR0RBL: 0xd8, // Output Compare 0 RB Register
OCR0RBH: 0xd8, // Output Compare 0 RB Register
OCR0SBL: 0xd6, // Output Compare 0 SB Register
OCR0SBH: 0xd6, // Output Compare 0 SB Register
OCR0RAL: 0xd4, // Output Compare 0 RA Register
OCR0RAH: 0xd4, // Output Compare 0 RA Register
OCR0SAL: 0xd2, // Output Compare 0 SA Register
OCR0SAH: 0xd2, // Output Compare 0 SA Register
PSOC0: 0xd0, // PSC0 Synchro and Output Configuration
PIM0: 0xa1, // PSC0 Interrupt Mask Register
PIFR0: 0xa0, // PSC0 Interrupt Flag Register
PICR2L: 0xfe, // PSC 2 Input Capture Register
PICR2H: 0xfe, // PSC 2 Input Capture Register
PFRC2B: 0xfd, // PSC 2 Input B Control
PFRC2A: 0xfc, // PSC 2 Input B Control
PCTL2: 0xfb, // PSC 2 Control Register
PCNF2: 0xfa, // PSC 2 Configuration Register
OCR2RBL: 0xf8, // Output Compare 2 RB Register
OCR2RBH: 0xf8, // Output Compare 2 RB Register
OCR2SBL: 0xf6, // Output Compare 2 SB Register
OCR2SBH: 0xf6, // Output Compare 2 SB Register
OCR2RAL: 0xf4, // Output Compare 2 RA Register
OCR2RAH: 0xf4, // Output Compare 2 RA Register
OCR2SAL: 0xf2, // Output Compare 2 SA Register
OCR2SAH: 0xf2, // Output Compare 2 SA Register
POM2: 0xf1, // PSC 2 Output Matrix
PSOC2: 0xf0, // PSC2 Synchro and Output Configuration
PIM2: 0xa5, // PSC2 Interrupt Mask Register
PIFR2: 0xa4, // PSC2 Interrupt Flag Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_PSC2RB = 0x80 // PSC2 Reset Behavior
EXTENDED_PSC1RB = 0x40 // PSC1 Reset Behavior
EXTENDED_PSC0RB = 0x20 // PSC0 Reset Behavior
EXTENDED_PSCRV = 0x10 // PSCOUT Reset Value
EXTENDED_BOOTSZ = 0x6 // Select Boot Size
EXTENDED_BOOTRST = 0x1 // Select Reset Vector
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector Trigger Level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EUSART: Extended USART
const (
// EUDR: EUSART I/O Data Register
EUDR_EUDR = 0xff // EUSART Extended data bits
// EUCSRA: EUSART Control and Status Register A
EUCSRA_UTxS = 0xf0 // EUSART Control and Status Register A Bits
EUCSRA_URxS = 0xf // EUSART Control and Status Register A Bits
// EUCSRB: EUSART Control Register B
EUCSRB_EUSART = 0x10 // EUSART Enable Bit
EUCSRB_EUSBS = 0x8 // EUSBS Enable Bit
EUCSRB_EMCH = 0x2 // Manchester Mode Bit
EUCSRB_BODR = 0x1 // Order Bit
// EUCSRC: EUSART Status Register C
EUCSRC_FEM = 0x8 // Frame Error Manchester Bit
EUCSRC_F1617 = 0x4 // F1617 Bit
EUCSRC_STP = 0x3 // Stop Bits
// MUBRRL: Manchester Receiver Baud Rate Register
// MUBRRH: Manchester Receiver Baud Rate Register
MUBRR_MUBRR = 0xffff // Manchester Receiver Baud Rate Register Bits
)
// Bitfields for AC: Analog Comparator
const (
// AC0CON: Analog Comparator 0 Control Register
AC0CON_AC0EN = 0x80 // Analog Comparator 0 Enable Bit
AC0CON_AC0IE = 0x40 // Analog Comparator 0 Interrupt Enable Bit
AC0CON_AC0IS = 0x30 // Analog Comparator 0 Interrupt Select Bit
AC0CON_AC0M = 0x7 // Analog Comparator 0 Multiplexer Register
// AC1CON: Analog Comparator 1 Control Register
AC1CON_AC1EN = 0x80 // Analog Comparator 1 Enable Bit
AC1CON_AC1IE = 0x40 // Analog Comparator 1 Interrupt Enable Bit
AC1CON_AC1IS = 0x30 // Analog Comparator 1 Interrupt Select Bit
AC1CON_AC1ICE = 0x8 // Analog Comparator 1 Interrupt Capture Enable Bit
AC1CON_AC1M = 0x7 // Analog Comparator 1 Multiplexer Register
// AC2CON: Analog Comparator 2 Control Register
AC2CON_AC2EN = 0x80 // Analog Comparator 2 Enable Bit
AC2CON_AC2IE = 0x40 // Analog Comparator 2 Interrupt Enable Bit
AC2CON_AC2IS = 0x30 // Analog Comparator 2 Interrupt Select Bit
AC2CON_AC2M = 0x7 // Analog Comparator 2 Multiplexer Register
// ACSR: Analog Comparator Status Register
ACSR_ACCKDIV = 0x80 // Analog Comparator Clock Divider
ACSR_AC2IF = 0x40 // Analog Comparator 2 Interrupt Flag Bit
ACSR_AC1IF = 0x20 // Analog Comparator 1 Interrupt Flag Bit
ACSR_AC0IF = 0x10 // Analog Comparator 0 Interrupt Flag Bit
ACSR_AC2O = 0x4 // Analog Comparator 2 Output Bit
ACSR_AC1O = 0x2 // Analog Comparator 1 Output Bit
ACSR_AC0O = 0x1 // Analog Comparator 0 Output Bit
)
// Bitfields for DAC: Digital-to-Analog Converter
const (
// DACL: DAC Data Register
// DACH: DAC Data Register
DAC_DAC = 0xffff // DAC Data Register Bits
// DACON: DAC Control Register
DACON_DAATE = 0x80 // DAC Auto Trigger Enable Bit
DACON_DATS = 0x70 // DAC Trigger Selection Bits
DACON_DALA = 0x4 // DAC Left Adjust
DACON_DAOE = 0x2 // DAC Output Enable
DACON_DAEN = 0x1 // DAC Enable Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_SPIPS = 0x80 // SPI Pin Select
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR3: General Purpose IO Register 3
GPIOR3_GPIOR = 0xff // General Purpose IO Register 3 bis
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PLLCSR: PLL Control And Status Register
PLLCSR_PLLF = 0x4 // PLL Factor
PLLCSR_PLLE = 0x2 // PLL Enable
PLLCSR_PLOCK = 0x1 // PLL Lock Detector
// PRR: Power Reduction Register
PRR_PRPSC2 = 0x80 // Power Reduction PSC2
PRR_PRPSC1 = 0x40 // Power Reduction PSC1
PRR_PRPSC0 = 0x20 // Power Reduction PSC0
PRR_PRTIM1 = 0x10 // Power Reduction Timer/Counter1
PRR_PRTIM0 = 0x8 // Power Reduction Timer/Counter0
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer Counter 0 value
// OCR0A: Timer/Counter0 Output Compare Register
OCR0A_OCR0A = 0xff // Timer/Counter0 Output Compare A
// OCR0B: Timer/Counter0 Output Compare Register
OCR0B_OCR0B = 0xff // Timer/Counter0 Output Compare B
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCL: ADC Data Register Bytes
// ADCH: ADC Data Register Bytes
ADC_ADC = 0xffff // ADC Data Register
// ADCSRB: ADC Control and Status Register B
ADCSRB_ADHSM = 0x80 // ADC High Speed Mode
ADCSRB_ADTS = 0xf // ADC Auto Trigger Source
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
// DIDR1: Digital Input Disable Register 1
DIDR1_ACMP0D = 0x20
DIDR1_AMP0PD = 0x10
DIDR1_AMP0ND = 0x8
DIDR1_ADC10D = 0x4
DIDR1_ADC9D = 0x2
DIDR1_ADC8D = 0x1
// AMP0CSR
AMP0CSR_AMP0EN = 0x80
AMP0CSR_AMP0IS = 0x40
AMP0CSR_AMP0G = 0x30
AMP0CSR_AMP0TS = 0x3
// AMP1CSR
AMP1CSR_AMP1EN = 0x80
AMP1CSR_AMP1IS = 0x40
AMP1CSR_AMP1G = 0x30
AMP1CSR_AMP1TS = 0x3
)
// Bitfields for USART: USART
const (
// UDR: USART I/O Data Register
UDR_UDR = 0xff // USART I/O Data
// UCSRA: USART Control and Status register A
UCSRA_RXC = 0x80 // USART Receive Complete
UCSRA_TXC = 0x40 // USART Transmitt Complete
UCSRA_UDRE = 0x20 // USART Data Register Empty
UCSRA_FE = 0x10 // Framing Error
UCSRA_DOR = 0x8 // Data Overrun
UCSRA_UPE = 0x4 // USART Parity Error
UCSRA_U2X = 0x2 // Double USART Transmission Bit
UCSRA_MPCM = 0x1 // Multi-processor Communication Mode
// UCSRB: USART Control an Status register B
UCSRB_RXCIE = 0x80 // RX Complete Interrupt Enable
UCSRB_TXCIE = 0x40 // TX Complete Interrupt Enable
UCSRB_UDRIE = 0x20 // USART Data Register Empty Interrupt Enable
UCSRB_RXEN = 0x10 // Receiver Enable
UCSRB_TXEN = 0x8 // Transmitter Enable
UCSRB_UCSZ2 = 0x4 // Character Size
UCSRB_RXB8 = 0x2 // Receive Data Bit 8
UCSRB_TXB8 = 0x1 // Transmit Data Bit 8
// UCSRC: USART Control an Status register C
UCSRC_UMSEL0 = 0x40 // USART Mode Select
UCSRC_UPM = 0x30 // Parity Mode Bits
UCSRC_USBS = 0x8 // Stop Bit Select
UCSRC_UCSZ = 0x6 // Character Size Bits
UCSRC_UCPOL = 0x1 // Clock Polarity
// UBRRL: USART Baud Rate Register
// UBRRH: USART Baud Rate Register
UBRR_UBRR = 0xfff // USART Baud Rate Register Bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPD = 0xff // SPI Data bits
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access Bytes
// EEARH: EEPROM Read/Write Access Bytes
EEAR_EEAR = 0xfff // EEPROM Address bytes
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data Bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for PSC: Power Stage Controller
const (
// PICR0L: PSC 0 Input Capture Register
// PICR0H: PSC 0 Input Capture Register
PICR0_PCST0 = 0x8000 // PSC 0 Input Capture Software Trig
PICR0_PICR0 = 0xfff // PSC 0 Input Capture Bytes
// PFRC0B: PSC 0 Input B Control
PFRC0B_PCAE0B = 0x80 // PSC 0 Capture Enable Input Part B
PFRC0B_PISEL0B = 0x40 // PSC 0 Input Select for Part B
PFRC0B_PELEV0B = 0x20 // PSC 0 Edge Level Selector on Input Part B
PFRC0B_PFLTE0B = 0x10 // PSC 0 Filter Enable on Input Part B
PFRC0B_PRFM0B = 0xf // PSC 0 Retrigger and Fault Mode for Part B
// PFRC0A: PSC 0 Input A Control
PFRC0A_PCAE0A = 0x80 // PSC 0 Capture Enable Input Part A
PFRC0A_PISEL0A = 0x40 // PSC 0 Input Select for Part A
PFRC0A_PELEV0A = 0x20 // PSC 0 Edge Level Selector on Input Part A
PFRC0A_PFLTE0A = 0x10 // PSC 0 Filter Enable on Input Part A
PFRC0A_PRFM0A = 0xf // PSC 0 Retrigger and Fault Mode for Part A
// PCTL0: PSC 0 Control Register
PCTL0_PPRE0 = 0xc0 // PSC 0 Prescaler Selects
PCTL0_PBFM0 = 0x20 // PSC 0 Balance Flank Width Modulation
PCTL0_PAOC0B = 0x10 // PSC 0 Asynchronous Output Control B
PCTL0_PAOC0A = 0x8 // PSC 0 Asynchronous Output Control A
PCTL0_PARUN0 = 0x4 // PSC0 Auto Run
PCTL0_PCCYC0 = 0x2 // PSC0 Complete Cycle
PCTL0_PRUN0 = 0x1 // PSC 0 Run
// PCNF0: PSC 0 Configuration Register
PCNF0_PFIFTY0 = 0x80 // PSC 0 Fifty
PCNF0_PALOCK0 = 0x40 // PSC 0 Autolock
PCNF0_PLOCK0 = 0x20 // PSC 0 Lock
PCNF0_PMODE0 = 0x18 // PSC 0 Mode
PCNF0_POP0 = 0x4 // PSC 0 Output Polarity
PCNF0_PCLKSEL0 = 0x2 // PSC 0 Input Clock Select
// OCR0RBL: Output Compare 0 RB Register
// OCR0RBH: Output Compare 0 RB Register
OCR0RB_OCR0RB = 0xffff // Output Compare RB
// OCR0SBL: Output Compare 0 SB Register
// OCR0SBH: Output Compare 0 SB Register
OCR0SB_OCR0SB = 0xfff // Output Compare SB
// OCR0RAL: Output Compare 0 RA Register
// OCR0RAH: Output Compare 0 RA Register
OCR0RA_OCR0RA = 0xfff // Output Compare RA
// OCR0SAL: Output Compare 0 SA Register
// OCR0SAH: Output Compare 0 SA Register
OCR0SA_OCR0SA = 0xfff // Output Compare SA
// PSOC0: PSC0 Synchro and Output Configuration
PSOC0_PSYNC0 = 0x30 // Synchronization Out for ADC Selection
PSOC0_POEN0B = 0x4 // PSCOUT01 Output Enable
PSOC0_POEN0A = 0x1 // PSCOUT00 Output Enable
// PIM0: PSC0 Interrupt Mask Register
PIM0_PSEIE0 = 0x20 // PSC 0 Synchro Error Interrupt Enable
PIM0_PEVE0B = 0x10 // External Event B Interrupt Enable
PIM0_PEVE0A = 0x8 // External Event A Interrupt Enable
PIM0_PEOPE0 = 0x1 // End of Cycle Interrupt Enable
// PIFR0: PSC0 Interrupt Flag Register
PIFR0_POAC0B = 0x80 // PSC 0 Output A Activity
PIFR0_POAC0A = 0x40 // PSC 0 Output A Activity
PIFR0_PSEI0 = 0x20 // PSC 0 Synchro Error Interrupt
PIFR0_PEV0B = 0x10 // External Event B Interrupt
PIFR0_PEV0A = 0x8 // External Event A Interrupt
PIFR0_PRN0 = 0x6 // Ramp Number
PIFR0_PEOP0 = 0x1 // End of PSC0 Interrupt
// PICR2L: PSC 2 Input Capture Register
// PICR2H: PSC 2 Input Capture Register
PICR2_PCST2 = 0x8000 // PSC 2 Input Capture Software Trig
PICR2_PICR2 = 0xfff // PSC 2 Input Capture Bytes
// PFRC2B: PSC 2 Input B Control
PFRC2B_PCAE2B = 0x80 // PSC 2 Capture Enable Input Part B
PFRC2B_PISEL2B = 0x40 // PSC 2 Input Select for Part B
PFRC2B_PELEV2B = 0x20 // PSC 2 Edge Level Selector on Input Part B
PFRC2B_PFLTE2B = 0x10 // PSC 2 Filter Enable on Input Part B
PFRC2B_PRFM2B = 0xf // PSC 2 Retrigger and Fault Mode for Part B
// PFRC2A: PSC 2 Input B Control
PFRC2A_PCAE2A = 0x80 // PSC 2 Capture Enable Input Part A
PFRC2A_PISEL2A = 0x40 // PSC 2 Input Select for Part A
PFRC2A_PELEV2A = 0x20 // PSC 2 Edge Level Selector on Input Part A
PFRC2A_PFLTE2A = 0x10 // PSC 2 Filter Enable on Input Part A
PFRC2A_PRFM2A = 0xf // PSC 2 Retrigger and Fault Mode for Part A
// PCTL2: PSC 2 Control Register
PCTL2_PPRE2 = 0xc0 // PSC 2 Prescaler Selects
PCTL2_PBFM2 = 0x20 // Balance Flank Width Modulation
PCTL2_PAOC2B = 0x10 // PSC 2 Asynchronous Output Control B
PCTL2_PAOC2A = 0x8 // PSC 2 Asynchronous Output Control A
PCTL2_PARUN2 = 0x4 // PSC2 Auto Run
PCTL2_PCCYC2 = 0x2 // PSC2 Complete Cycle
PCTL2_PRUN2 = 0x1 // PSC 2 Run
// PCNF2: PSC 2 Configuration Register
PCNF2_PFIFTY2 = 0x80 // PSC 2 Fifty
PCNF2_PALOCK2 = 0x40 // PSC 2 Autolock
PCNF2_PLOCK2 = 0x20 // PSC 2 Lock
PCNF2_PMODE2 = 0x18 // PSC 2 Mode
PCNF2_POP2 = 0x4 // PSC 2 Output Polarity
PCNF2_PCLKSEL2 = 0x2 // PSC 2 Input Clock Select
PCNF2_POME2 = 0x1 // PSC 2 Output Matrix Enable
// OCR2RBL: Output Compare 2 RB Register
// OCR2RBH: Output Compare 2 RB Register
OCR2RB_OCR2RB = 0xffff // Output Compare RB
// OCR2SBL: Output Compare 2 SB Register
// OCR2SBH: Output Compare 2 SB Register
OCR2SB_OCR2SB = 0xfff // Output Compare SB
// OCR2RAL: Output Compare 2 RA Register
// OCR2RAH: Output Compare 2 RA Register
OCR2RA_OCR2RA = 0xfff // Output Compare RA
// OCR2SAL: Output Compare 2 SA Register
// OCR2SAH: Output Compare 2 SA Register
OCR2SA_OCR2SA = 0xfff // Output Compare SA
// POM2: PSC 2 Output Matrix
POM2_POMV2B = 0xf0 // Output Matrix Output B Ramps
POM2_POMV2A = 0xf // Output Matrix Output A Ramps
// PSOC2: PSC2 Synchro and Output Configuration
PSOC2_POS2 = 0xc0 // PSC 2 Output 23 Select
PSOC2_PSYNC2_ = 0x30 // Synchronization Out for ADC Selection
PSOC2_POEN2D = 0x8 // PSCOUT23 Output Enable
PSOC2_POEN2B = 0x4 // PSCOUT21 Output Enable
PSOC2_POEN2C = 0x2 // PSCOUT22 Output Enable
PSOC2_POEN2A = 0x1 // PSCOUT20 Output Enable
// PIM2: PSC2 Interrupt Mask Register
PIM2_PSEIE2 = 0x20 // PSC 2 Synchro Error Interrupt Enable
PIM2_PEVE2B = 0x10 // External Event B Interrupt Enable
PIM2_PEVE2A = 0x8 // External Event A Interrupt Enable
PIM2_PEOPE2 = 0x1 // End of Cycle Interrupt Enable
// PIFR2: PSC2 Interrupt Flag Register
PIFR2_POAC2B = 0x80 // PSC 2 Output A Activity
PIFR2_POAC2A = 0x40 // PSC 2 Output A Activity
PIFR2_PSEI2 = 0x20 // PSC 2 Synchro Error Interrupt
PIFR2_PEV2B = 0x10 // External Event B Interrupt
PIFR2_PEV2A = 0x8 // External Event A Interrupt
PIFR2_PRN2 = 0x6 // Ramp Number
PIFR2_PEOP2 = 0x1 // End of PSC2 Interrupt
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM2B.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x2000;
__ram_size = 0x200;
__num_isrs = 32;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM316.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 32;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM3B.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x2000;
__ram_size = 0x200;
__num_isrs = 32;

Просмотреть файл

@ -1,832 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90PWM81.atdf, see http://packs.download.atmel.com/
// +build avr,at90pwm81
// Device information for the AT90PWM81.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90PWM81"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_PSC2_CAPT = 1 // PSC2 Capture Event
IRQ_PSC2_EC = 2 // PSC2 End Cycle
IRQ_PSC2_EEC = 3 // PSC2 End Of Enhanced Cycle
IRQ_PSC0_CAPT = 4 // PSC0 Capture Event
IRQ_PSC0_EC = 5 // PSC0 End Cycle
IRQ_PSC0_EEC = 6 // PSC0 End Of Enhanced Cycle
IRQ_ANALOG_COMP_1 = 7 // Analog Comparator 1
IRQ_ANALOG_COMP_2 = 8 // Analog Comparator 2
IRQ_ANALOG_COMP_3 = 9 // Analog Comparator 3
IRQ_INT0 = 10 // External Interrupt Request 0
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_OVF = 12 // Timer/Counter1 Overflow
IRQ_ADC = 13 // ADC Conversion Complete
IRQ_INT1 = 14 // External Interrupt Request 1
IRQ_SPI_STC = 15 // SPI Serial Transfer Complet
IRQ_INT2 = 16 // External Interrupt Request 2
IRQ_WDT = 17 // Watchdog Timeout Interrupt
IRQ_EE_READY = 18 // EEPROM Ready
IRQ_SPM_READY = 19 // Store Program Memory Read
IRQ_max = 19 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Digital-to-Analog Converter
DAC = struct {
DACL __reg
DACH __reg
DACON __reg
}{
DACL: 0x58, // DAC Data Register
DACH: 0x58, // DAC Data Register
DACON: 0x76, // DAC Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x37, // SPI Control Register
SPSR: 0x38, // SPI Status Register
SPDR: 0x56, // SPI Data Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x82, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x89, // External Interrupt Control Register A
EIMSK: 0x41, // External Interrupt Mask Register
EIFR: 0x40, // External Interrupt Flag Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
ADCSRB __reg
DIDR0 __reg
DIDR1 __reg
AMP0CSR __reg
}{
ADMUX: 0x28, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x4c, // ADC Data Register Bytes
ADCH: 0x4c, // ADC Data Register Bytes
ADCSRB: 0x27, // ADC Control and Status Register B
DIDR0: 0x77, // Digital Input Disable Register 0
DIDR1: 0x78, // Digital Input Disable Register 1
AMP0CSR: 0x79,
}
// Analog Comparator
AC = struct {
AC3CON __reg
AC1CON __reg
AC2CON __reg
ACSR __reg
AC3ECON __reg
AC2ECON __reg
AC1ECON __reg
}{
AC3CON: 0x7f, // Analog Comparator3 Control Register
AC1CON: 0x7d, // Analog Comparator 1 Control Register
AC2CON: 0x7e, // Analog Comparator 2 Control Register
ACSR: 0x20, // Analog Comparator Status Register
AC3ECON: 0x7c,
AC2ECON: 0x7b,
AC1ECON: 0x7a,
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PLLCSR __reg
PRR __reg
CLKCSR __reg
CLKSELR __reg
BGCCR __reg
BGCRR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x88, // Oscillator Calibration Value
CLKPR: 0x83,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x3b, // General Purpose IO Register 2
GPIOR1: 0x3a, // General Purpose IO Register 1
GPIOR0: 0x39, // General Purpose IO Register 0
PLLCSR: 0x87, // PLL Control And Status Register
PRR: 0x86, // Power Reduction Register
CLKCSR: 0x84,
CLKSELR: 0x85,
BGCCR: 0x81, // BandGap Current Calibration Register
BGCRR: 0x80, // BandGap Resistor Calibration Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Read/Write Access Bytes
EEARH: 0x3e, // EEPROM Read/Write Access Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// Power Stage Controller
PSC = struct {
PICR0L __reg
PICR0H __reg
PFRC0B __reg
PFRC0A __reg
PCTL0 __reg
PCNF0 __reg
OCR0RBL __reg
OCR0RBH __reg
OCR0SBL __reg
OCR0SBH __reg
OCR0RAL __reg
OCR0RAH __reg
OCR0SAL __reg
OCR0SAH __reg
PSOC0 __reg
PIM0 __reg
PIFR0 __reg
PICR2L __reg
PICR2H __reg
PFRC2B __reg
PFRC2A __reg
PCTL2 __reg
PCNF2 __reg
PCNFE2 __reg
OCR2RBL __reg
OCR2RBH __reg
OCR2SBL __reg
OCR2SBH __reg
OCR2RAL __reg
OCR2RAH __reg
OCR2SAL __reg
OCR2SAH __reg
POM2 __reg
PSOC2 __reg
PIM2 __reg
PIFR2 __reg
PASDLY2 __reg
}{
PICR0L: 0x68, // PSC 0 Input Capture Register
PICR0H: 0x68, // PSC 0 Input Capture Register
PFRC0B: 0x63, // PSC 0 Input B Control
PFRC0A: 0x62, // PSC 0 Input A Control
PCTL0: 0x32, // PSC 0 Control Register
PCNF0: 0x31, // PSC 0 Configuration Register
OCR0RBL: 0x44, // Output Compare RB Register
OCR0RBH: 0x44, // Output Compare RB Register
OCR0SBL: 0x42, // Output Compare SB Register
OCR0SBH: 0x42, // Output Compare SB Register
OCR0RAL: 0x4a, // Output Compare RA Register
OCR0RAH: 0x4a, // Output Compare RA Register
OCR0SAL: 0x60, // Output Compare SA Register
OCR0SAH: 0x60, // Output Compare SA Register
PSOC0: 0x6a, // PSC0 Synchro and Output Configuration
PIM0: 0x2f, // PSC0 Interrupt Mask Register
PIFR0: 0x30, // PSC0 Interrupt Flag Register
PICR2L: 0x6c, // PSC 2 Input Capture Register
PICR2H: 0x6c, // PSC 2 Input Capture Register
PFRC2B: 0x67, // PSC 2 Input B Control
PFRC2A: 0x66, // PSC 2 Input B Control
PCTL2: 0x36, // PSC 2 Control Register
PCNF2: 0x35, // PSC 2 Configuration Register
PCNFE2: 0x70, // PSC 2 Enhanced Configuration Register
OCR2RBL: 0x48, // Output Compare RB Register
OCR2RBH: 0x48, // Output Compare RB Register
OCR2SBL: 0x46, // Output Compare SB Register
OCR2SBH: 0x46, // Output Compare SB Register
OCR2RAL: 0x4e, // Output Compare RA Register
OCR2RAH: 0x4e, // Output Compare RA Register
OCR2SAL: 0x64, // Output Compare SA Register
OCR2SAH: 0x64, // Output Compare SA Register
POM2: 0x6f, // PSC 2 Output Matrix
PSOC2: 0x6e, // PSC2 Synchro and Output Configuration
PIM2: 0x33, // PSC2 Interrupt Mask Register
PIFR2: 0x34, // PSC2 Interrupt Flag Register
PASDLY2: 0x71, // Analog Synchronization Delay Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1B __reg
TCNT1L __reg
TCNT1H __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x21, // Timer/Counter Interrupt Mask Register
TIFR1: 0x22, // Timer/Counter Interrupt Flag register
TCCR1B: 0x8a, // Timer/Counter1 Control Register B
TCNT1L: 0x5a, // Timer/Counter1 Bytes
TCNT1H: 0x5a, // Timer/Counter1 Bytes
ICR1L: 0x8c, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x8c, // Timer/Counter1 Input Capture Register Bytes
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_PSC2RB = 0x80 // PSC2 Reset Behavior
EXTENDED_PSC2RBA = 0x40 // PSC2 Reset Behavior for 22 and 23
EXTENDED_PSC0RB = 0x20 // PSC0 Reset Behavior
EXTENDED_PSCRV = 0x10 // PSC Reset Value
EXTENDED_PSCINRB = 0x8 // PSC2 and PSC0 input Reset Behavior
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector Trigger Level
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PE0 as I/O pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Select Reset Vector
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTD1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for DAC: Digital-to-Analog Converter
const (
// DACL: DAC Data Register
// DACH: DAC Data Register
DAC_DACH = 0x3ff // DAC Data Register Bits
// DACON: DAC Control Register
DACON_DAATE = 0x80 // DAC Auto Trigger Enable Bit
DACON_DATS = 0x70 // DAC Trigger Selection Bits
DACON_DALA = 0x4 // DAC Left Adjust
DACON_DAEN = 0x1 // DAC Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPD = 0xff // SPI Data bits
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCL: ADC Data Register Bytes
// ADCH: ADC Data Register Bytes
ADC_ADC = 0xffff // ADC Data Register
// ADCSRB: ADC Control and Status Register B
ADCSRB_ADHSM = 0x80 // ADC High Speed Mode
ADCSRB_ADNCDIS = 0x40 // ADC Noise Canceller Disable
ADCSRB_ADSSEN = 0x10 // ADC Single Shot Enable on PSC's Synchronisation Signals
ADCSRB_ADTS = 0xf // ADC Auto Trigger Sources
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC8D = 0x80 // ADC8 Digital input Disable
DIDR0_ADC7D = 0x40 // ADC7 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
// DIDR1: Digital Input Disable Register 1
DIDR1_ACMP1MD = 0x8
DIDR1_AMP0PD = 0x4
DIDR1_ADC10D = 0x2 // ADC10 Digital input Disable
DIDR1_ADC9D = 0x1 // ADC9 Digital input Disable
// AMP0CSR
AMP0CSR_AMP0EN = 0x80
AMP0CSR_AMP0IS = 0x40
AMP0CSR_AMP0G = 0x30
AMP0CSR_AMP0GS = 0x8
AMP0CSR_AMP0TS = 0x3
)
// Bitfields for AC: Analog Comparator
const (
// AC3CON: Analog Comparator3 Control Register
AC3CON_AC3EN = 0x80 // Analog Comparator3 Enable Bit
AC3CON_AC3IE = 0x40 // Analog Comparator 3 Interrupt Enable Bit
AC3CON_AC3IS = 0x30 // Analog Comparator 3 Interrupt Select Bit
AC3CON_AC3OEA = 0x8 // Analog Comparator 3 Alternate Output Enable
AC3CON_AC3M = 0x7 // Analog Comparator 3 Multiplexer Register
// AC1CON: Analog Comparator 1 Control Register
AC1CON_AC1EN = 0x80 // Analog Comparator 1 Enable Bit
AC1CON_AC1IE = 0x40 // Analog Comparator 1 Interrupt Enable Bit
AC1CON_AC1IS = 0x30 // Analog Comparator 1 Interrupt Select Bit
AC1CON_AC1M = 0x7 // Analog Comparator 1 Multiplexer Register
// AC2CON: Analog Comparator 2 Control Register
AC2CON_AC2EN = 0x80 // Analog Comparator 2 Enable Bit
AC2CON_AC2IE = 0x40 // Analog Comparator 2 Interrupt Enable Bit
AC2CON_AC2IS = 0x30 // Analog Comparator 2 Interrupt Select Bit
AC2CON_AC2M = 0x7 // Analog Comparator 2 Multiplexer Register
// ACSR: Analog Comparator Status Register
ACSR_AC3IF = 0x80 // Analog Comparator 3 Interrupt Flag Bit
ACSR_AC2IF = 0x40 // Analog Comparator 2 Interrupt Flag Bit
ACSR_AC1IF = 0x20 // Analog Comparator 1 Interrupt Flag Bit
ACSR_AC3O = 0x8 // Analog Comparator 3 Output Bit
ACSR_AC2O = 0x4 // Analog Comparator 2 Output Bit
ACSR_AC1O = 0x2 // Analog Comparator 1 Output Bit
// AC3ECON
AC3ECON_AC3OI = 0x20 // Analog Comparator Ouput Invert
AC3ECON_AC3OE = 0x10 // Analog Comparator Ouput Enable
AC3ECON_AC3H = 0x7 // Analog Comparator Hysteresis Select
// AC2ECON
AC2ECON_AC2OI = 0x20 // Analog Comparator Ouput Invert
AC2ECON_AC2OE = 0x10 // Analog Comparator Ouput Enable
AC2ECON_AC2H = 0x7 // Analog Comparator Hysteresis Select
// AC1ECON
AC1ECON_AC1OI = 0x20 // Analog Comparator Ouput Invert
AC1ECON_AC1OE = 0x10 // Analog Comparator Ouput Enable
AC1ECON_AC1ICE = 0x8 // Analog Comparator Interrupt Capture Enable
AC1ECON_AC1H = 0x7 // Analog Comparator Hysteresis Select
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_RSTDIS = 0x8 // Reset Pin Disable
MCUCR_CKRC81 = 0x4 // Frequency Selection of the Calibrated RC Oscillator
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PLLCSR: PLL Control And Status Register
PLLCSR_PLLF = 0x3c
PLLCSR_PLLE = 0x2 // PLL Enable
PLLCSR_PLOCK = 0x1 // PLL Lock Detector
// PRR: Power Reduction Register
PRR_PRPSC2 = 0x80 // Power Reduction PSC2
PRR_PRPSCR = 0x20 // Power Reduction PSC0
PRR_PRTIM1 = 0x10 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRADC = 0x1 // Power Reduction ADC
// CLKCSR
CLKCSR_CLKCCE = 0x80 // Clock Control Change Enable
CLKCSR_CLKRDY = 0x10 // Clock Ready Flag
CLKCSR_CLKC = 0xf // Clock Control
// CLKSELR
CLKSELR_COUT = 0x40 // Clock OUT
CLKSELR_CSUT = 0x30 // Clock Start up Time
CLKSELR_CKSEL = 0xf // Clock Source Select
// BGCCR: BandGap Current Calibration Register
BGCCR_BGCC = 0xf
// BGCRR: BandGap Resistor Calibration Register
BGCRR_BGCR = 0xf
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access Bytes
// EEARH: EEPROM Read/Write Access Bytes
EEAR_EEAR = 0x1ff // EEPROM Address bytes
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_NVMBSY = 0x80 // None Volatile Busy Memory Busy
EECR_EEPAGE = 0x40 // EEPROM Page Access
EECR_EEPM = 0x30 // EEPROM Programming Mode
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for PSC: Power Stage Controller
const (
// PICR0L: PSC 0 Input Capture Register
// PICR0H: PSC 0 Input Capture Register
PICR0_PCST0 = 0x8000 // PSC 0 Capture Software Trigger Bit
PICR0_PICR0 = 0xfff // PSC 0 Input Capture Bytes
// PFRC0B: PSC 0 Input B Control
PFRC0B_PCAE0B = 0x80 // PSC 0 Capture Enable Input Part B
PFRC0B_PISEL0B = 0x40 // PSC 0 Input Select for Part B
PFRC0B_PELEV0B = 0x20 // PSC 0 Edge Level Selector on Input Part B
PFRC0B_PFLTE0B = 0x10 // PSC 0 Filter Enable on Input Part B
PFRC0B_PRFM0B = 0xf // PSC 0 Retrigger and Fault Mode for Part B
// PFRC0A: PSC 0 Input A Control
PFRC0A_PCAE0A = 0x80 // PSC 0 Capture Enable Input Part A
PFRC0A_PISEL0A = 0x40 // PSC 0 Input Select for Part A
PFRC0A_PELEV0A = 0x20 // PSC 0 Edge Level Selector on Input Part A
PFRC0A_PFLTE0A = 0x10 // PSC 0 Filter Enable on Input Part A
PFRC0A_PRFM0A = 0xf // PSC 0 Retrigger and Fault Mode for Part A
// PCTL0: PSC 0 Control Register
PCTL0_PPRE0 = 0xc0 // PSC 0 Prescaler Selects
PCTL0_PBFM0 = 0x24 // PSC 0 Balance Flank Width Modulation
PCTL0_PAOC0B = 0x10 // PSC 0 Asynchronous Output Control B
PCTL0_PAOC0A = 0x8 // PSC 0 Asynchronous Output Control A
PCTL0_PCCYC0 = 0x2 // PSC0 Complete Cycle
PCTL0_PRUN0 = 0x1 // PSC 0 Run
// PCNF0: PSC 0 Configuration Register
PCNF0_PFIFTY0 = 0x80 // PSC 0 Fifty
PCNF0_PALOCK0 = 0x40 // PSC 0 Autolock
PCNF0_PLOCK0 = 0x20 // PSC 0 Lock
PCNF0_PMODE0 = 0x18 // PSC 0 Mode
PCNF0_POP0 = 0x4 // PSC 0 Output Polarity
PCNF0_PCLKSEL0 = 0x2 // PSC 0 Input Clock Select
// OCR0RBL: Output Compare RB Register
// OCR0RBH: Output Compare RB Register
OCR0RB_OCR0RB = 0xffff // Output Compare 0 RB
// OCR0SBL: Output Compare SB Register
// OCR0SBH: Output Compare SB Register
OCR0SB_OCR0SB = 0xfff // Output Compare 0 SB
// OCR0RAL: Output Compare RA Register
// OCR0RAH: Output Compare RA Register
OCR0RA_OCR0RA = 0xfff // Output Compare 0 RA
// OCR0SAL: Output Compare SA Register
// OCR0SAH: Output Compare SA Register
OCR0SA_OCR0SA = 0xfff // Output Compare 0 SA
// PSOC0: PSC0 Synchro and Output Configuration
PSOC0_PISEL0A1 = 0x80 // PSC Input Select
PSOC0_PISEL0B1 = 0x40 // PSC Input Select
PSOC0_PSYNC0 = 0x30 // Synchronisation out for ADC selection
PSOC0_POEN0B = 0x4 // PSCOUT01 Output Enable
PSOC0_POEN0A = 0x1 // PSCOUT00 Output Enable
// PIM0: PSC0 Interrupt Mask Register
PIM0_PEVE0B = 0x10 // External Event B Interrupt Enable
PIM0_PEVE0A = 0x8 // External Event A Interrupt Enable
PIM0_PEOEPE0 = 0x2 // End of Enhanced Cycle Enable
PIM0_PEOPE0 = 0x1 // End of Cycle Interrupt Enable
// PIFR0: PSC0 Interrupt Flag Register
PIFR0_POAC0B = 0x80 // PSC 0 Output A Activity
PIFR0_POAC0A = 0x40 // PSC 0 Output A Activity
PIFR0_PEV0B = 0x10 // External Event B Interrupt
PIFR0_PEV0A = 0x8 // External Event A Interrupt
PIFR0_PRN0 = 0x6 // Ramp Number
PIFR0_PEOP0 = 0x1 // End of PSC0 Interrupt
// PICR2L: PSC 2 Input Capture Register
// PICR2H: PSC 2 Input Capture Register
PICR2_PCST2 = 0x8000 // PSC 2 Capture Software Trigger Bit
PICR2_PICR2 = 0xfff // PSC 2 Input Capture Bytes
// PFRC2B: PSC 2 Input B Control
PFRC2B_PCAE2B = 0x80 // PSC 2 Capture Enable Input Part B
PFRC2B_PISEL2B = 0x40 // PSC 2 Input Select for Part B
PFRC2B_PELEV2B = 0x20 // PSC 2 Edge Level Selector on Input Part B
PFRC2B_PFLTE2B = 0x10 // PSC 2 Filter Enable on Input Part B
PFRC2B_PRFM2B = 0xf // PSC 2 Retrigger and Fault Mode for Part B
// PFRC2A: PSC 2 Input B Control
PFRC2A_PCAE2A = 0x80 // PSC 2 Capture Enable Input Part A
PFRC2A_PISEL2A = 0x40 // PSC 2 Input Select for Part A
PFRC2A_PELEV2A = 0x20 // PSC 2 Edge Level Selector on Input Part A
PFRC2A_PFLTE2A = 0x10 // PSC 2 Filter Enable on Input Part A
PFRC2A_PRFM2A = 0xf // PSC 2 Retrigger and Fault Mode for Part A
// PCTL2: PSC 2 Control Register
PCTL2_PPRE2 = 0xc0 // PSC 2 Prescaler Selects
PCTL2_PBFM2 = 0x20 // Balance Flank Width Modulation
PCTL2_PAOC2B = 0x10 // PSC 2 Asynchronous Output Control B
PCTL2_PAOC2A = 0x8 // PSC 2 Asynchronous Output Control A
PCTL2_PARUN2 = 0x4 // PSC2 Auto Run
PCTL2_PCCYC2 = 0x2 // PSC2 Complete Cycle
PCTL2_PRUN2 = 0x1 // PSC 2 Run
// PCNF2: PSC 2 Configuration Register
PCNF2_PFIFTY2 = 0x80 // PSC 2 Fifty
PCNF2_PALOCK2 = 0x40 // PSC 2 Autolock
PCNF2_PLOCK2 = 0x20 // PSC 2 Lock
PCNF2_PMODE2 = 0x18 // PSC 2 Mode
PCNF2_POP2 = 0x4 // PSC 2 Output Polarity
PCNF2_PCLKSEL2 = 0x2 // PSC 2 Input Clock Select
PCNF2_POME2 = 0x1 // PSC 2 Output Matrix Enable
// PCNFE2: PSC 2 Enhanced Configuration Register
PCNFE2_PASDLK2 = 0xe0
PCNFE2_PBFM21 = 0x10
PCNFE2_PELEV2A1 = 0x8
PCNFE2_PELEV2B1 = 0x4
PCNFE2_PISEL2A1 = 0x2
PCNFE2_PISEL2B1 = 0x1
// OCR2RBL: Output Compare RB Register
// OCR2RBH: Output Compare RB Register
OCR2RB_OCR2RB = 0xffff // Output Compare 2 RB
// OCR2SBL: Output Compare SB Register
// OCR2SBH: Output Compare SB Register
OCR2SB_OCR2SB = 0xfff // Output Compare 2 SB
// OCR2RAL: Output Compare RA Register
// OCR2RAH: Output Compare RA Register
OCR2RA_OCR2RA = 0xfff // Output Compare 2 RA
// OCR2SAL: Output Compare SA Register
// OCR2SAH: Output Compare SA Register
OCR2SA_OCR2SA = 0xfff // Output Compare 2 SA
// POM2: PSC 2 Output Matrix
POM2_POMV2B = 0xf0 // Output Matrix Output B Ramps
POM2_POMV2A = 0xf // Output Matrix Output A Ramps
// PSOC2: PSC2 Synchro and Output Configuration
PSOC2_POS2 = 0xc0 // PSC 2 Output 23 Select
PSOC2_PSYNC2 = 0x30 // Synchronization Out for ADC Selection
PSOC2_POEN2D = 0x8 // PSCOUT23 Output Enable
PSOC2_POEN2B = 0x4 // PSCOUT21 Output Enable
PSOC2_POEN2C = 0x2 // PSCOUT22 Output Enable
PSOC2_POEN2A = 0x1 // PSCOUT20 Output Enable
// PIM2: PSC2 Interrupt Mask Register
PIM2_PSEIE2 = 0x20 // PSC 2 Synchro Error Interrupt Enable
PIM2_PEVE2B = 0x10 // External Event B Interrupt Enable
PIM2_PEVE2A = 0x8 // External Event A Interrupt Enable
PIM2_PEOEPE2 = 0x2 // End of Enhanced Cycle Interrupt Enable
PIM2_PEOPE2 = 0x1 // End of Cycle Interrupt Enable
// PIFR2: PSC2 Interrupt Flag Register
PIFR2_POAC2B = 0x80 // PSC 2 Output A Activity
PIFR2_POAC2A = 0x40 // PSC 2 Output A Activity
PIFR2_PSEI2 = 0x20 // PSC 2 Synchro Error Interrupt
PIFR2_PEV2B = 0x10 // External Event B Interrupt
PIFR2_PEV2A = 0x8 // External Event A Interrupt
PIFR2_PRN2 = 0x6 // Ramp Number
PIFR2_PEOP2 = 0x1 // End of PSC2 Interrupt
// PASDLY2: Analog Synchronization Delay Register
PASDLY2_PASDLY2 = 0xff // Analog Synchronization Delay bits
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM13 = 0x10 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter 1 bits
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90PWM81.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x2000;
__ram_size = 0x100;
__num_isrs = 20;

Просмотреть файл

@ -1,952 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90USB1286.atdf, see http://packs.download.atmel.com/
// +build avr,at90usb1286
// Device information for the AT90USB1286.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90USB1286"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_PCINT0 = 9 // Pin Change Interrupt Request 0
IRQ_USB_GEN = 10 // USB General Interrupt Request
IRQ_USB_COM = 11 // USB Endpoint/Pipe Interrupt Communication Request
IRQ_WDT = 12 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 13 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 14 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 15 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 16 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 17 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 18 // Timer/Counter1 Compare Match B
IRQ_TIMER1_COMPC = 19 // Timer/Counter1 Compare Match C
IRQ_TIMER1_OVF = 20 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 21 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 22 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 23 // Timer/Counter0 Overflow
IRQ_SPI_STC = 24 // SPI Serial Transfer Complete
IRQ_USART1_RX = 25 // USART1, Rx Complete
IRQ_USART1_UDRE = 26 // USART1 Data register Empty
IRQ_USART1_TX = 27 // USART1, Tx Complete
IRQ_ANALOG_COMP = 28 // Analog Comparator
IRQ_ADC = 29 // ADC Conversion Complete
IRQ_EE_READY = 30 // EEPROM Ready
IRQ_TIMER3_CAPT = 31 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 32 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 33 // Timer/Counter3 Compare Match B
IRQ_TIMER3_COMPC = 34 // Timer/Counter3 Compare Match C
IRQ_TIMER3_OVF = 35 // Timer/Counter3 Overflow
IRQ_TWI = 36 // 2-wire Serial Interface
IRQ_SPM_READY = 37 // Store Program Memory Read
IRQ_max = 37 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
XMCRA __reg
XMCRB __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
EIND __reg
RAMPZ __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR1 __reg
PRR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
XMCRA: 0x74, // External Memory Control Register A
XMCRB: 0x75, // External Memory Control Register B
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
EIND: 0x5c, // Extended Indirect Register
RAMPZ: 0x5b, // RAM Page Z Select Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR1: 0x65, // Power Reduction Register1
PRR0: 0x64, // Power Reduction Register0
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// USART
USART = struct {
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// USB Device Registers
USB_DEVICE = struct {
UEINT __reg
UEBCHX __reg
UEBCLX __reg
UEDATX __reg
UEIENX __reg
UESTA1X __reg
UESTA0X __reg
UECFG1X __reg
UECFG0X __reg
UECONX __reg
UERST __reg
UENUM __reg
UEINTX __reg
UDMFN __reg
UDFNUML __reg
UDFNUMH __reg
UDADDR __reg
UDIEN __reg
UDINT __reg
UDCON __reg
}{
UEINT: 0xf4,
UEBCHX: 0xf3,
UEBCLX: 0xf2,
UEDATX: 0xf1,
UEIENX: 0xf0,
UESTA1X: 0xef,
UESTA0X: 0xee,
UECFG1X: 0xed,
UECFG0X: 0xec,
UECONX: 0xeb,
UERST: 0xea,
UENUM: 0xe9,
UEINTX: 0xe8,
UDMFN: 0xe6,
UDFNUML: 0xe4,
UDFNUMH: 0xe4,
UDADDR: 0xe3,
UDIEN: 0xe2,
UDINT: 0xe1,
UDCON: 0xe0,
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
OCR3CL __reg
OCR3CH __reg
ICR3L __reg
ICR3H __reg
TIMSK3 __reg
TIFR3 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR3A: 0x90, // Timer/Counter3 Control Register A
TCCR3B: 0x91, // Timer/Counter3 Control Register B
TCCR3C: 0x92, // Timer/Counter 3 Control Register C
TCNT3L: 0x94, // Timer/Counter3 Bytes
TCNT3H: 0x94, // Timer/Counter3 Bytes
OCR3AL: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3CL: 0x9c, // Timer/Counter3 Output Compare Register B Bytes
OCR3CH: 0x9c, // Timer/Counter3 Output Compare Register B Bytes
ICR3L: 0x96, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x96, // Timer/Counter3 Input Capture Register Bytes
TIMSK3: 0x71, // Timer/Counter3 Interrupt Mask Register
TIFR3: 0x38, // Timer/Counter3 Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1CL: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
OCR1CH: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EICRB: 0x6a, // External Interrupt Control Register B
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 1
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f,
}
// Phase Locked Loop
PLL = struct {
PLLCSR __reg
}{
PLLCSR: 0x49, // PLL Status and Control register
}
// USB Controller
USB_GLOBAL = struct {
USBINT __reg
USBSTA __reg
USBCON __reg
UHWCON __reg
}{
USBINT: 0xda,
USBSTA: 0xd9,
USBCON: 0xd8, // USB General Control Register
UHWCON: 0xd7, // USB Hardware Configuration Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
EXTENDED_HWBE = 0x8 // Hardware Boot Enable
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTC7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// XMCRA: External Memory Control Register A
XMCRA_SRE = 0x80 // External SRAM Enable
XMCRA_SRL = 0x70 // Wait state page limit
XMCRA_SRW1 = 0xc // Wait state select bit upper page
XMCRA_SRW0 = 0x3 // Wait state select bit lower page
// XMCRB: External Memory Control Register B
XMCRB_XMBK = 0x80 // External Memory Bus Keeper Enable
XMCRB_XMM = 0x7 // External Memory High Mask
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR1: Power Reduction Register1
PRR1_PRUSB = 0x80 // Power Reduction USB
PRR1_PRTIM3 = 0x8 // Power Reduction Timer/Counter3
PRR1_PRUSART1 = 0x1 // Power Reduction USART1
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRADC = 0x1 // Power Reduction ADC
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for USART: USART
const (
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for USB_DEVICE: USB Device Registers
const (
// UEIENX
UEIENX_FLERRE = 0x80
UEIENX_NAKINE = 0x40
UEIENX_NAKOUTE = 0x10
UEIENX_RXSTPE = 0x8
UEIENX_RXOUTE = 0x4
UEIENX_STALLEDE = 0x2
UEIENX_TXINE = 0x1
// UESTA1X
UESTA1X_CTRLDIR = 0x4
UESTA1X_CURRBK = 0x3
// UESTA0X
UESTA0X_CFGOK = 0x80
UESTA0X_OVERFI = 0x40
UESTA0X_UNDERFI = 0x20
UESTA0X_DTSEQ = 0xc
UESTA0X_NBUSYBK = 0x3
// UECFG1X
UECFG1X_EPSIZE = 0x70
UECFG1X_EPBK = 0xc
UECFG1X_ALLOC = 0x2
// UECFG0X
UECFG0X_EPTYPE = 0xc0
UECFG0X_EPDIR = 0x1
// UECONX
UECONX_STALLRQ = 0x20
UECONX_STALLRQC = 0x10
UECONX_RSTDT = 0x8
UECONX_EPEN = 0x1
// UERST
UERST_EPRST = 0x7f
// UEINTX
UEINTX_FIFOCON = 0x80
UEINTX_NAKINI = 0x40
UEINTX_RWAL = 0x20
UEINTX_NAKOUTI = 0x10
UEINTX_RXSTPI = 0x8
UEINTX_RXOUTI = 0x4
UEINTX_STALLEDI = 0x2
UEINTX_TXINI = 0x1
// UDMFN
UDMFN_FNCERR = 0x10
// UDADDR
UDADDR_ADDEN = 0x80
UDADDR_UADD = 0x7f
// UDIEN
UDIEN_UPRSME = 0x40
UDIEN_EORSME = 0x20
UDIEN_WAKEUPE = 0x10
UDIEN_EORSTE = 0x8
UDIEN_SOFE = 0x4
UDIEN_SUSPE = 0x1
// UDINT
UDINT_UPRSMI = 0x40
UDINT_EORSMI = 0x20
UDINT_WAKEUPI = 0x10
UDINT_EORSTI = 0x8
UDINT_SOFI = 0x4
UDINT_SUSPI = 0x1
// UDCON
UDCON_LSM = 0x4
UDCON_RMWKUP = 0x2
UDCON_DETACH = 0x1
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 1A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_COM3C = 0xc // Compare Output Mode 3C, bits
TCCR3A_WGM3 = 0x3 // Waveform Generation Mode
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode
TCCR3B_CS3 = 0x7 // Prescaler source of Timer/Counter 3
// TCCR3C: Timer/Counter 3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare 3A
TCCR3C_FOC3B = 0x40 // Force Output Compare 3B
TCCR3C_FOC3C = 0x20 // Force Output Compare 3C
// TIMSK3: Timer/Counter3 Interrupt Mask Register
TIMSK3_ICIE3 = 0x20 // Timer/Counter3 Input Capture Interrupt Enable
TIMSK3_OCIE3C = 0x8 // Timer/Counter3 Output Compare C Match Interrupt Enable
TIMSK3_OCIE3B = 0x4 // Timer/Counter3 Output Compare B Match Interrupt Enable
TIMSK3_OCIE3A = 0x2 // Timer/Counter3 Output Compare A Match Interrupt Enable
TIMSK3_TOIE3 = 0x1 // Timer/Counter3 Overflow Interrupt Enable
// TIFR3: Timer/Counter3 Interrupt Flag register
TIFR3_ICF3 = 0x20 // Input Capture Flag 3
TIFR3_OCF3C = 0x8 // Output Compare Flag 3C
TIFR3_OCF3B = 0x4 // Output Compare Flag 3B
TIFR3_OCF3A = 0x2 // Output Compare Flag 3A
TIFR3_TOV3 = 0x1 // Timer/Counter3 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
TCCR1C_FOC1C = 0x20 // Force Output Compare 1C
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1C = 0x8 // Timer/Counter1 Output Compare C Match Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1C = 0x8 // Output Compare Flag 1C
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF0 = 0x1 // Pin Change Interrupt Flag 0
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE0 = 0x1 // Pin Change Interrupt Enable 0
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 1
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for PLL: Phase Locked Loop
const (
// PLLCSR: PLL Status and Control register
PLLCSR_PLLP = 0x1c // PLL prescaler Bits
PLLCSR_PLLE = 0x2 // PLL Enable Bit
PLLCSR_PLOCK = 0x1 // PLL Lock Status Bit
)
// Bitfields for USB_GLOBAL: USB Controller
const (
// USBINT
USBINT_IDTI = 0x2
USBINT_VBUSTI = 0x1
// USBSTA
USBSTA_SPEED = 0x8
USBSTA_ID = 0x2
USBSTA_VBUS = 0x1
// USBCON: USB General Control Register
USBCON_USBE = 0x80
USBCON_HOST = 0x40
USBCON_FRZCLK = 0x20
USBCON_OTGPADE = 0x10
USBCON_IDTE = 0x2
USBCON_VBUSTE = 0x1
// UHWCON: USB Hardware Configuration Register
UHWCON_UIMOD = 0x80
UHWCON_UIDE = 0x40
UHWCON_UVCONE = 0x10
UHWCON_UVREGE = 0x1
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB1286.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x2000;
__num_isrs = 38;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB1287.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x2000;
__num_isrs = 38;

Просмотреть файл

@ -1,776 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90USB162.atdf, see http://packs.download.atmel.com/
// +build avr,at90usb162
// Device information for the AT90USB162.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90USB162"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_PCINT0 = 9 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 10 // Pin Change Interrupt Request 1
IRQ_USB_GEN = 11 // USB General Interrupt Request
IRQ_USB_COM = 12 // USB Endpoint/Pipe Interrupt Communication Request
IRQ_WDT = 13 // Watchdog Time-out Interrupt
IRQ_TIMER1_CAPT = 14 // Timer/Counter2 Capture Event
IRQ_TIMER1_COMPA = 15 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPB = 16 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPC = 17 // Timer/Counter2 Compare Match C
IRQ_TIMER1_OVF = 18 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 19 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 20 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 21 // Timer/Counter0 Overflow
IRQ_SPI_STC = 22 // SPI Serial Transfer Complete
IRQ_USART1_RX = 23 // USART1, Rx Complete
IRQ_USART1_UDRE = 24 // USART1 Data register Empty
IRQ_USART1_TX = 25 // USART1, Tx Complete
IRQ_ANALOG_COMP = 26 // Analog Comparator
IRQ_EE_READY = 27 // EEPROM Ready
IRQ_SPM_READY = 28 // Store Program Memory Read
IRQ_max = 28 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTC __reg
DDRC __reg
PINC __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
GTCCR __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
GTCCR: 0x43, // General Timer/Counter Control Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1CL: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
OCR1CH: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Phase Locked Loop
PLL = struct {
PLLCSR __reg
}{
PLLCSR: 0x49, // PLL Status and Control register
}
// USB Device Registers
USB_DEVICE = struct {
UEINT __reg
UEBCLX __reg
UEDATX __reg
UEIENX __reg
UESTA1X __reg
UESTA0X __reg
UECFG1X __reg
UECFG0X __reg
UECONX __reg
UERST __reg
UENUM __reg
UEINTX __reg
UDMFN __reg
UDFNUML __reg
UDFNUMH __reg
UDADDR __reg
UDIEN __reg
UDINT __reg
UDCON __reg
USBCON __reg
REGCR __reg
}{
UEINT: 0xf4,
UEBCLX: 0xf2,
UEDATX: 0xf1,
UEIENX: 0xf0,
UESTA1X: 0xef,
UESTA0X: 0xee,
UECFG1X: 0xed,
UECFG0X: 0xec,
UECONX: 0xeb,
UERST: 0xea,
UENUM: 0xe9,
UEINTX: 0xe8,
UDMFN: 0xe6,
UDFNUML: 0xe4,
UDFNUMH: 0xe4,
UDADDR: 0xe3,
UDIEN: 0xe2,
UDINT: 0xe1,
UDCON: 0xe0,
USBCON: 0xd8, // USB General Control Register
REGCR: 0x63, // Regulator Control Register
}
// PS/2 Controller
PS2 = struct {
UPOE __reg
PS2CON __reg
}{
UPOE: 0xfb,
PS2CON: 0xfa, // PS2 Pad Enable register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
EIND __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR1 __reg
PRR0 __reg
CLKSTA __reg
CLKSEL1 __reg
CLKSEL0 __reg
DWDR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
EIND: 0x5c, // Extended Indirect Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR1: 0x65, // Power Reduction Register1
PRR0: 0x64, // Power Reduction Register0
CLKSTA: 0xd2,
CLKSEL1: 0xd1,
CLKSEL0: 0xd0,
DWDR: 0x51, // debugWire communication register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
PCMSK0 __reg
PCMSK1 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EICRB: 0x6a, // External Interrupt Control Register B
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// USART
USART = struct {
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UCSR1D __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UCSR1D: 0xcb, // USART Control and Status Register D
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
WDTCKD __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
WDTCKD: 0x62, // Watchdog Timer Clock Divider
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f,
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
EXTENDED_HWBE = 0x8 // Hardware Boot Enable
// HIGH
HIGH_DWEN = 0x80 // Debug Wire enable
HIGH_RSTDISBL = 0x40 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTC7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for PORT: I/O Port
const (
// PORTC: Port C Data Register
PORTC_PORTC = 0xf0 // Port C Data Register bits
PORTC_PORTC = 0x7 // Port C Data Register bits
// DDRC: Port C Data Direction Register
DDRC_DDC = 0xf0 // Port C Data Direction Register bits
DDRC_DDC = 0x7 // Port C Data Direction Register bits
// PINC: Port C Input Pins
PINC_PINC = 0xf0 // Port C Input Pins bits
PINC_PINC = 0x7 // Port C Input Pins bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// GTCCR: General Timer/Counter Control Register
GTCCR_TSM = 0x80 // Timer/Counter Synchronization Mode
GTCCR_PSRSYNC = 0x1 // Prescaler Reset Timer/Counter1 and Timer/Counter0
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
TCCR1C_FOC1C = 0x20 // Force Output Compare 1C
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1C = 0x8 // Timer/Counter1 Output Compare C Match Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1C = 0x8 // Output Compare Flag 1C
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for PLL: Phase Locked Loop
const (
// PLLCSR: PLL Status and Control register
PLLCSR_PLLP = 0x1c // PLL prescaler Bits
PLLCSR_PLLE = 0x2 // PLL Enable Bit
PLLCSR_PLOCK = 0x1 // PLL Lock Status Bit
)
// Bitfields for USB_DEVICE: USB Device Registers
const (
// UEIENX
UEIENX_FLERRE = 0x80
UEIENX_NAKINE = 0x40
UEIENX_NAKOUTE = 0x10
UEIENX_RXSTPE = 0x8
UEIENX_RXOUTE = 0x4
UEIENX_STALLEDE = 0x2
UEIENX_TXINE = 0x1
// UESTA1X
UESTA1X_CTRLDIR = 0x4
UESTA1X_CURRBK = 0x3
// UESTA0X
UESTA0X_CFGOK = 0x80
UESTA0X_OVERFI = 0x40
UESTA0X_UNDERFI = 0x20
UESTA0X_DTSEQ = 0xc
UESTA0X_NBUSYBK = 0x3
// UECFG1X
UECFG1X_EPSIZE = 0x70
UECFG1X_EPBK = 0xc
UECFG1X_ALLOC = 0x2
// UECFG0X
UECFG0X_EPTYPE = 0xc0
UECFG0X_EPDIR = 0x1
// UECONX
UECONX_STALLRQ = 0x20
UECONX_STALLRQC = 0x10
UECONX_RSTDT = 0x8
UECONX_EPEN = 0x1
// UERST
UERST_EPRST = 0x1f
// UEINTX
UEINTX_FIFOCON = 0x80
UEINTX_NAKINI = 0x40
UEINTX_RWAL = 0x20
UEINTX_NAKOUTI = 0x10
UEINTX_RXSTPI = 0x8
UEINTX_RXOUTI = 0x4
UEINTX_STALLEDI = 0x2
UEINTX_TXINI = 0x1
// UDMFN
UDMFN_FNCERR = 0x10
// UDADDR
UDADDR_ADDEN = 0x80
UDADDR_UADD = 0x7f
// UDIEN
UDIEN_UPRSME = 0x40
UDIEN_EORSME = 0x20
UDIEN_WAKEUPE = 0x10
UDIEN_EORSTE = 0x8
UDIEN_SOFE = 0x4
UDIEN_SUSPE = 0x1
// UDINT
UDINT_UPRSMI = 0x40
UDINT_EORSMI = 0x20
UDINT_WAKEUPI = 0x10
UDINT_EORSTI = 0x8
UDINT_SOFI = 0x4
UDINT_SUSPI = 0x1
// UDCON
UDCON_RSTCPU = 0x4
UDCON_RMWKUP = 0x2
UDCON_DETACH = 0x1
// USBCON: USB General Control Register
USBCON_USBE = 0x80
USBCON_FRZCLK = 0x20
// REGCR: Regulator Control Register
REGCR_REGDIS = 0x1
)
// Bitfields for PS2: PS/2 Controller
const (
// UPOE
UPOE_UPWE = 0xc0
UPOE_UPDRV = 0x30
UPOE_SCKI = 0x8
UPOE_DATAI = 0x4
UPOE_DPI = 0x2
UPOE_DMI = 0x1
// PS2CON: PS2 Pad Enable register
PS2CON_PS2EN = 0x1 // Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_USBRF = 0x20 // USB reset flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR1: Power Reduction Register1
PRR1_PRUSB = 0x80 // Power Reduction USB
PRR1_PRUSART1 = 0x1 // Power Reduction USART1
// PRR0: Power Reduction Register0
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
// CLKSTA
CLKSTA_RCON = 0x2
CLKSTA_EXTON = 0x1
// CLKSEL1
CLKSEL1_RCCKSEL = 0xf0
CLKSEL1_EXCKSEL = 0xf
// CLKSEL0
CLKSEL0_RCSUT = 0xc0
CLKSEL0_EXSUT = 0x30
CLKSEL0_RCE = 0x8
CLKSEL0_EXTE = 0x4
CLKSEL0_CLKS = 0x1
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x1f
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x3 // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x3 // Pin Change Interrupt Enables
)
// Bitfields for USART: USART
const (
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
// UCSR1D: USART Control and Status Register D
UCSR1D_CTSEN = 0x2 // CTS Enable
UCSR1D_RTSEN = 0x1 // RTS Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
// WDTCKD: Watchdog Timer Clock Divider
WDTCKD_WDEWIF = 0x8 // Watchdog Early Warning Interrupt Flag
WDTCKD_WDEWIE = 0x4 // Watchdog Early Warning Interrupt Enable
WDTCKD_WCLKD = 0x3 // Watchdog Timer Clock Dividers
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB162.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x200;
__num_isrs = 29;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB646.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x10000;
__ram_size = 0x1000;
__num_isrs = 38;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB647.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x10000;
__ram_size = 0x1000;
__num_isrs = 38;

Просмотреть файл

@ -1,776 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from AT90USB82.atdf, see http://packs.download.atmel.com/
// +build avr,at90usb82
// Device information for the AT90USB82.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "AT90USB82"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_PCINT0 = 9 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 10 // Pin Change Interrupt Request 1
IRQ_USB_GEN = 11 // USB General Interrupt Request
IRQ_USB_COM = 12 // USB Endpoint/Pipe Interrupt Communication Request
IRQ_WDT = 13 // Watchdog Time-out Interrupt
IRQ_TIMER1_CAPT = 14 // Timer/Counter2 Capture Event
IRQ_TIMER1_COMPA = 15 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPB = 16 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPC = 17 // Timer/Counter2 Compare Match C
IRQ_TIMER1_OVF = 18 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 19 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 20 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 21 // Timer/Counter0 Overflow
IRQ_SPI_STC = 22 // SPI Serial Transfer Complete
IRQ_USART1_RX = 23 // USART1, Rx Complete
IRQ_USART1_UDRE = 24 // USART1 Data register Empty
IRQ_USART1_TX = 25 // USART1, Tx Complete
IRQ_ANALOG_COMP = 26 // Analog Comparator
IRQ_EE_READY = 27 // EEPROM Ready
IRQ_SPM_READY = 28 // Store Program Memory Read
IRQ_max = 28 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTC __reg
DDRC __reg
PINC __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
GTCCR __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
GTCCR: 0x43, // General Timer/Counter Control Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1CL: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
OCR1CH: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Phase Locked Loop
PLL = struct {
PLLCSR __reg
}{
PLLCSR: 0x49, // PLL Status and Control register
}
// USB Device Registers
USB_DEVICE = struct {
UEINT __reg
UEBCLX __reg
UEDATX __reg
UEIENX __reg
UESTA1X __reg
UESTA0X __reg
UECFG1X __reg
UECFG0X __reg
UECONX __reg
UERST __reg
UENUM __reg
UEINTX __reg
UDMFN __reg
UDFNUML __reg
UDFNUMH __reg
UDADDR __reg
UDIEN __reg
UDINT __reg
UDCON __reg
USBCON __reg
REGCR __reg
}{
UEINT: 0xf4,
UEBCLX: 0xf2,
UEDATX: 0xf1,
UEIENX: 0xf0,
UESTA1X: 0xef,
UESTA0X: 0xee,
UECFG1X: 0xed,
UECFG0X: 0xec,
UECONX: 0xeb,
UERST: 0xea,
UENUM: 0xe9,
UEINTX: 0xe8,
UDMFN: 0xe6,
UDFNUML: 0xe4,
UDFNUMH: 0xe4,
UDADDR: 0xe3,
UDIEN: 0xe2,
UDINT: 0xe1,
UDCON: 0xe0,
USBCON: 0xd8, // USB General Control Register
REGCR: 0x63, // Regulator Control Register
}
// PS/2 Controller
PS2 = struct {
UPOE __reg
PS2CON __reg
}{
UPOE: 0xfb,
PS2CON: 0xfa, // PS2 Pad Enable register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
EIND __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR1 __reg
PRR0 __reg
CLKSTA __reg
CLKSEL1 __reg
CLKSEL0 __reg
DWDR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
EIND: 0x5c, // Extended Indirect Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR1: 0x65, // Power Reduction Register1
PRR0: 0x64, // Power Reduction Register0
CLKSTA: 0xd2,
CLKSEL1: 0xd1,
CLKSEL0: 0xd0,
DWDR: 0x51, // debugWire communication register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
PCMSK0 __reg
PCMSK1 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EICRB: 0x6a, // External Interrupt Control Register B
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// USART
USART = struct {
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UCSR1D __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UCSR1D: 0xcb, // USART Control and Status Register D
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
WDTCKD __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
WDTCKD: 0x62, // Watchdog Timer Clock Divider
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f,
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
EXTENDED_HWBE = 0x8 // Hardware Boot Enable
// HIGH
HIGH_DWEN = 0x80 // Debug Wire enable
HIGH_RSTDISBL = 0x40 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTC7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for PORT: I/O Port
const (
// PORTC: Port C Data Register
PORTC_PORTC = 0xf0 // Port C Data Register bits
PORTC_PORTC = 0x7 // Port C Data Register bits
// DDRC: Port C Data Direction Register
DDRC_DDC = 0xf0 // Port C Data Direction Register bits
DDRC_DDC = 0x7 // Port C Data Direction Register bits
// PINC: Port C Input Pins
PINC_PINC = 0xf0 // Port C Input Pins bits
PINC_PINC = 0x7 // Port C Input Pins bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// GTCCR: General Timer/Counter Control Register
GTCCR_TSM = 0x80 // Timer/Counter Synchronization Mode
GTCCR_PSRSYNC = 0x1 // Prescaler Reset Timer/Counter1 and Timer/Counter0
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
TCCR1C_FOC1C = 0x20 // Force Output Compare 1C
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1C = 0x8 // Timer/Counter1 Output Compare C Match Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1C = 0x8 // Output Compare Flag 1C
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for PLL: Phase Locked Loop
const (
// PLLCSR: PLL Status and Control register
PLLCSR_PLLP = 0x1c // PLL prescaler Bits
PLLCSR_PLLE = 0x2 // PLL Enable Bit
PLLCSR_PLOCK = 0x1 // PLL Lock Status Bit
)
// Bitfields for USB_DEVICE: USB Device Registers
const (
// UEIENX
UEIENX_FLERRE = 0x80
UEIENX_NAKINE = 0x40
UEIENX_NAKOUTE = 0x10
UEIENX_RXSTPE = 0x8
UEIENX_RXOUTE = 0x4
UEIENX_STALLEDE = 0x2
UEIENX_TXINE = 0x1
// UESTA1X
UESTA1X_CTRLDIR = 0x4
UESTA1X_CURRBK = 0x3
// UESTA0X
UESTA0X_CFGOK = 0x80
UESTA0X_OVERFI = 0x40
UESTA0X_UNDERFI = 0x20
UESTA0X_DTSEQ = 0xc
UESTA0X_NBUSYBK = 0x3
// UECFG1X
UECFG1X_EPSIZE = 0x70
UECFG1X_EPBK = 0xc
UECFG1X_ALLOC = 0x2
// UECFG0X
UECFG0X_EPTYPE = 0xc0
UECFG0X_EPDIR = 0x1
// UECONX
UECONX_STALLRQ = 0x20
UECONX_STALLRQC = 0x10
UECONX_RSTDT = 0x8
UECONX_EPEN = 0x1
// UERST
UERST_EPRST = 0x1f
// UEINTX
UEINTX_FIFOCON = 0x80
UEINTX_NAKINI = 0x40
UEINTX_RWAL = 0x20
UEINTX_NAKOUTI = 0x10
UEINTX_RXSTPI = 0x8
UEINTX_RXOUTI = 0x4
UEINTX_STALLEDI = 0x2
UEINTX_TXINI = 0x1
// UDMFN
UDMFN_FNCERR = 0x10
// UDADDR
UDADDR_ADDEN = 0x80
UDADDR_UADD = 0x7f
// UDIEN
UDIEN_UPRSME = 0x40
UDIEN_EORSME = 0x20
UDIEN_WAKEUPE = 0x10
UDIEN_EORSTE = 0x8
UDIEN_SOFE = 0x4
UDIEN_SUSPE = 0x1
// UDINT
UDINT_UPRSMI = 0x40
UDINT_EORSMI = 0x20
UDINT_WAKEUPI = 0x10
UDINT_EORSTI = 0x8
UDINT_SOFI = 0x4
UDINT_SUSPI = 0x1
// UDCON
UDCON_RSTCPU = 0x4
UDCON_RMWKUP = 0x2
UDCON_DETACH = 0x1
// USBCON: USB General Control Register
USBCON_USBE = 0x80
USBCON_FRZCLK = 0x20
// REGCR: Regulator Control Register
REGCR_REGDIS = 0x1
)
// Bitfields for PS2: PS/2 Controller
const (
// UPOE
UPOE_UPWE = 0xc0
UPOE_UPDRV = 0x30
UPOE_SCKI = 0x8
UPOE_DATAI = 0x4
UPOE_DPI = 0x2
UPOE_DMI = 0x1
// PS2CON: PS2 Pad Enable register
PS2CON_PS2EN = 0x1 // Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_USBRF = 0x20 // USB reset flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR1: Power Reduction Register1
PRR1_PRUSB = 0x80 // Power Reduction USB
PRR1_PRUSART1 = 0x1 // Power Reduction USART1
// PRR0: Power Reduction Register0
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
// CLKSTA
CLKSTA_RCON = 0x2
CLKSTA_EXTON = 0x1
// CLKSEL1
CLKSEL1_RCCKSEL = 0xf0
CLKSEL1_EXCKSEL = 0xf
// CLKSEL0
CLKSEL0_RCSUT = 0xc0
CLKSEL0_EXSUT = 0x30
CLKSEL0_RCE = 0x8
CLKSEL0_EXTE = 0x4
CLKSEL0_CLKS = 0x1
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x1f
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x3 // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x3 // Pin Change Interrupt Enables
)
// Bitfields for USART: USART
const (
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
// UCSR1D: USART Control and Status Register D
UCSR1D_CTSEN = 0x2 // CTS Enable
UCSR1D_RTSEN = 0x1 // RTS Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
// WDTCKD: Watchdog Timer Clock Divider
WDTCKD_WDEWIF = 0x8 // Watchdog Early Warning Interrupt Flag
WDTCKD_WDEWIE = 0x4 // Watchdog Early Warning Interrupt Enable
WDTCKD_WCLKD = 0x3 // Watchdog Timer Clock Dividers
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from AT90USB82.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x2000;
__ram_size = 0x200;
__num_isrs = 29;

Просмотреть файл

@ -1,676 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega128.atdf, see http://packs.download.atmel.com/
// +build avr,atmega128
// Device information for the ATmega128.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega128"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_TIMER2_COMP = 9 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 10 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 12 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 13 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 14 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 15 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 16 // Timer/Counter0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART0_RX = 18 // USART0, Rx Complete
IRQ_USART0_UDRE = 19 // USART0 Data Register Empty
IRQ_USART0_TX = 20 // USART0, Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TIMER1_COMPC = 24 // Timer/Counter1 Compare Match C
IRQ_TIMER3_CAPT = 25 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 26 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 27 // Timer/Counter3 Compare Match B
IRQ_TIMER3_COMPC = 28 // Timer/Counter3 Compare Match C
IRQ_TIMER3_OVF = 29 // Timer/Counter3 Overflow
IRQ_USART1_RX = 30 // USART1, Rx Complete
IRQ_USART1_UDRE = 31 // USART1, Data Register Empty
IRQ_USART1_TX = 32 // USART1, Tx Complete
IRQ_TWI = 33 // 2-wire Serial Interface
IRQ_SPM_READY = 34 // Store Program Memory Read
IRQ_max = 34 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
}{
ACSR: 0x28, // Analog Comparator Control And Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x2f, // SPI Data Register
SPSR: 0x2e, // SPI Status Register
SPCR: 0x2d, // SPI Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBR: 0x70, // TWI Bit Rate register
TWCR: 0x74, // TWI Control Register
TWSR: 0x71, // TWI Status Register
TWDR: 0x73, // TWI Data register
TWAR: 0x72, // TWI (Slave) Address register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0H __reg
UBRR0L __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1H __reg
UBRR1L __reg
}{
UDR0: 0x2c, // USART I/O Data Register
UCSR0A: 0x2b, // USART Control and Status Register A
UCSR0B: 0x2a, // USART Control and Status Register B
UCSR0C: 0x95, // USART Control and Status Register C
UBRR0H: 0x90, // USART Baud Rate Register Hight Byte
UBRR0L: 0x29, // USART Baud Rate Register Low Byte
UDR1: 0x9c, // USART I/O Data Register
UCSR1A: 0x9b, // USART Control and Status Register A
UCSR1B: 0x9a, // USART Control and Status Register B
UCSR1C: 0x9d, // USART Control and Status Register C
UBRR1H: 0x98, // USART Baud Rate Register Hight Byte
UBRR1L: 0x99, // USART Baud Rate Register Low Byte
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
XDIV __reg
XMCRA __reg
XMCRB __reg
OSCCAL __reg
RAMPZ __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
XDIV: 0x5c, // XTAL Divide Control Register
XMCRA: 0x6d, // External Memory Control Register A
XMCRB: 0x6c, // External Memory Control Register B
OSCCAL: 0x6f, // Oscillator Calibration Value
RAMPZ: 0x5b, // RAM Page Z Select Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x68, // Store Program Memory Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x42, // On-Chip Debug Related Register in I/O Memory
}
// Other Registers
MISC = struct {
}{}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x6a, // External Interrupt Control Register A
EICRB: 0x5a, // External Interrupt Control Register B
EIMSK: 0x59, // External Interrupt Mask Register
EIFR: 0x58, // External Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Read/Write Access Bytes
EEARH: 0x3e, // EEPROM Read/Write Access Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x3b, // Port A Data Register
DDRA: 0x3a, // Port A Data Direction Register
PINA: 0x39, // Port A Input Pins
PORTB: 0x38, // Port B Data Register
DDRB: 0x37, // Port B Data Direction Register
PINB: 0x36, // Port B Input Pins
PORTC: 0x35, // Port C Data Register
DDRC: 0x34, // Port C Data Direction Register
PINC: 0x33, // Port C Input Pins
PORTD: 0x32, // Port D Data Register
DDRD: 0x31, // Port D Data Direction Register
PIND: 0x30, // Port D Input Pins
PORTE: 0x23, // Data Register, Port E
DDRE: 0x22, // Data Direction Register, Port E
PINE: 0x21, // Input Pins, Port E
PORTF: 0x62, // Data Register, Port F
DDRF: 0x61, // Data Direction Register, Port F
PINF: 0x20, // Input Pins, Port F
PORTG: 0x65, // Data Register, Port G
DDRG: 0x64, // Data Direction Register, Port G
PING: 0x63, // Input Pins, Port G
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR0 __reg
TCNT0 __reg
OCR0 __reg
ASSR __reg
}{
TCCR0: 0x53, // Timer/Counter Control Register
TCNT0: 0x52, // Timer/Counter Register
OCR0: 0x51, // Output Compare Register
ASSR: 0x50, // Asynchronus Status Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
OCR3CL __reg
OCR3CH __reg
ICR3L __reg
ICR3H __reg
}{
TCCR1A: 0x4f, // Timer/Counter1 Control Register A
TCCR1B: 0x4e, // Timer/Counter1 Control Register B
TCCR1C: 0x7a, // Timer/Counter1 Control Register C
TCNT1L: 0x4c, // Timer/Counter1 Bytes
TCNT1H: 0x4c, // Timer/Counter1 Bytes
OCR1AL: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1CL: 0x78, // Timer/Counter1 Output Compare Register Bytes
OCR1CH: 0x78, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x46, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x46, // Timer/Counter1 Input Capture Register Bytes
TCCR3A: 0x8b, // Timer/Counter3 Control Register A
TCCR3B: 0x8a, // Timer/Counter3 Control Register B
TCCR3C: 0x8c, // Timer/Counter3 Control Register C
TCNT3L: 0x88, // Timer/Counter3 Bytes
TCNT3H: 0x88, // Timer/Counter3 Bytes
OCR3AL: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x84, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x84, // Timer/Counter3 Output Compare Register B Bytes
OCR3CL: 0x82, // Timer/Counter3 Output compare Register C Bytes
OCR3CH: 0x82, // Timer/Counter3 Output compare Register C Bytes
ICR3L: 0x80, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x80, // Timer/Counter3 Input Capture Register Bytes
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR2 __reg
TCNT2 __reg
OCR2 __reg
}{
TCCR2: 0x45, // Timer/Counter Control Register
TCNT2: 0x44, // Timer/Counter Register
OCR2: 0x43, // Output Compare Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x41, // Watchdog Timer Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
}{
ADMUX: 0x27, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x24, // ADC Data Register Bytes
ADCH: 0x24, // ADC Data Register Bytes
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_M103C = 0x2 // ATmega103 Compatibility Mode
EXTENDED_WDTON = 0x1 // Watchdog Timer always on
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
HIGH_CKOPT = 0x10 // CKOPT fuse (operation dependent of CKSEL fuses)
// LOW
LOW_BODLEVEL = 0x80 // Brownout detector trigger level
LOW_BODEN = 0x40 // Brown-out detection enabled
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0x40 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_SRE = 0x80 // External SRAM Enable
MCUCR_SRW10 = 0x40 // External SRAM Wait State Select
MCUCR_SE = 0x20 // Sleep Enable
MCUCR_SM = 0x18 // Sleep Mode Select
MCUCR_SM2 = 0x4 // Sleep Mode Select
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// XDIV: XTAL Divide Control Register
XDIV_XDIVEN = 0x80 // XTAL Divide Enable
XDIV_XDIV6 = 0x40 // XTAL Divide Select Bit 6
XDIV_XDIV5 = 0x20 // XTAL Divide Select Bit 5
XDIV_XDIV4 = 0x10 // XTAL Divide Select Bit 4
XDIV_XDIV3 = 0x8 // XTAL Divide Select Bit 3
XDIV_XDIV2 = 0x4 // XTAL Divide Select Bit 2
XDIV_XDIV1 = 0x2 // XTAL Divide Select Bit 1
XDIV_XDIV0 = 0x1 // XTAL Divide Select Bit 0
// XMCRA: External Memory Control Register A
XMCRA_SRL = 0x70 // Wait state page limit
XMCRA_SRW0 = 0xc // Wait state select bit lower page
XMCRA_SRW11 = 0x2 // Wait state select bit upper page
// XMCRB: External Memory Control Register B
XMCRB_XMBK = 0x80 // External Memory Bus Keeper Enable
XMCRB_XMM = 0x7 // External Memory High Mask
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// RAMPZ: RAM Page Z Select Register
RAMPZ_RAMPZ0 = 0x1 // RAM Page Z Select Register Bit 0
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for JTAG: JTAG Interface
const (
// OCDR: On-Chip Debug Related Register in I/O Memory
OCDR_OCDR = 0xff // On-Chip Debug Register Bits
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR0: Timer/Counter Control Register
TCCR0_FOC0 = 0x80 // Force Output Compare
TCCR0_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0_COM0 = 0x30 // Compare Match Output Modes
TCCR0_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0_CS0 = 0x7 // Clock Selects
// ASSR: Asynchronus Status Register
ASSR_AS0 = 0x8 // Asynchronus Timer/Counter 0
ASSR_TCN0UB = 0x4 // Timer/Counter0 Update Busy
ASSR_OCR0UB = 0x2 // Output Compare register 0 Busy
ASSR_TCR0UB = 0x1 // Timer/Counter Control Register 0 Update Busy
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for channel B
TCCR1C_FOC1C = 0x20 // Force Output Compare for channel C
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 3A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_COM3C = 0xc // Compare Output Mode 3C, bits
TCCR3A_WGM3 = 0x3 // Waveform Generation Mode Bits
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode
TCCR3B_CS3 = 0x7 // Clock Select3 bits
// TCCR3C: Timer/Counter3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare for channel A
TCCR3C_FOC3B = 0x40 // Force Output Compare for channel B
TCCR3C_FOC3C = 0x20 // Force Output Compare for channel C
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR2: Timer/Counter Control Register
TCCR2_FOC2 = 0x80 // Force Output Compare
TCCR2_WGM20 = 0x40 // Wafeform Generation Mode
TCCR2_COM2 = 0x30 // Compare Match Output Mode
TCCR2_WGM21 = 0x8 // Waveform Generation Mode
TCCR2_CS2 = 0x7 // Clock Select
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADFR = 0x20 // ADC Free Running Select
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega128.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x1000;
__num_isrs = 35;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega1280.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x2000;
__num_isrs = 57;

Просмотреть файл

@ -1,986 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega1281.atdf, see http://packs.download.atmel.com/
// +build avr,atmega1281
// Device information for the ATmega1281.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega1281"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_PCINT0 = 9 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 10 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 11 // Pin Change Interrupt Request 2
IRQ_WDT = 12 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 13 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 14 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 15 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 16 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 17 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 18 // Timer/Counter1 Compare Match B
IRQ_TIMER1_COMPC = 19 // Timer/Counter1 Compare Match C
IRQ_TIMER1_OVF = 20 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 21 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 22 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 23 // Timer/Counter0 Overflow
IRQ_SPI_STC = 24 // SPI Serial Transfer Complete
IRQ_USART0_RX = 25 // USART0, Rx Complete
IRQ_USART0_UDRE = 26 // USART0 Data register Empty
IRQ_USART0_TX = 27 // USART0, Tx Complete
IRQ_ANALOG_COMP = 28 // Analog Comparator
IRQ_ADC = 29 // ADC Conversion Complete
IRQ_EE_READY = 30 // EEPROM Ready
IRQ_TIMER3_CAPT = 31 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 32 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 33 // Timer/Counter3 Compare Match B
IRQ_TIMER3_COMPC = 34 // Timer/Counter3 Compare Match C
IRQ_TIMER3_OVF = 35 // Timer/Counter3 Overflow
IRQ_USART1_RX = 36 // USART1, Rx Complete
IRQ_USART1_UDRE = 37 // USART1 Data register Empty
IRQ_USART1_TX = 38 // USART1, Tx Complete
IRQ_TWI = 39 // 2-wire Serial Interface
IRQ_SPM_READY = 40 // Store Program Memory Read
IRQ_TIMER4_CAPT = 41 // Timer/Counter4 Capture Event
IRQ_TIMER4_COMPA = 42 // Timer/Counter4 Compare Match A
IRQ_TIMER4_COMPB = 43 // Timer/Counter4 Compare Match B
IRQ_TIMER4_COMPC = 44 // Timer/Counter4 Compare Match C
IRQ_TIMER4_OVF = 45 // Timer/Counter4 Overflow
IRQ_TIMER5_CAPT = 46 // Timer/Counter5 Capture Event
IRQ_TIMER5_COMPA = 47 // Timer/Counter5 Compare Match A
IRQ_TIMER5_COMPB = 48 // Timer/Counter5 Compare Match B
IRQ_TIMER5_COMPC = 49 // Timer/Counter5 Compare Match C
IRQ_TIMER5_OVF = 50 // Timer/Counter5 Overflow
IRQ_USART2_RX = 51 // USART2, Rx Complete
IRQ_USART2_UDRE = 52 // USART2 Data register Empty
IRQ_USART2_TX = 53 // USART2, Tx Complete
IRQ_USART3_RX = 54 // USART3, Rx Complete
IRQ_USART3_UDRE = 55 // USART3 Data register Empty
IRQ_USART3_TX = 56 // USART3, Tx Complete
IRQ_max = 56 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Data Register, Port G
DDRG: 0x33, // Data Direction Register, Port G
PING: 0x32, // Input Pins, Port G
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR5A __reg
TCCR5B __reg
TCCR5C __reg
TCNT5L __reg
TCNT5H __reg
OCR5AL __reg
OCR5AH __reg
OCR5BL __reg
OCR5BH __reg
OCR5CL __reg
OCR5CH __reg
ICR5L __reg
ICR5H __reg
TIMSK5 __reg
TIFR5 __reg
TCCR4A __reg
TCCR4B __reg
TCCR4C __reg
TCNT4L __reg
TCNT4H __reg
OCR4AL __reg
OCR4AH __reg
OCR4BL __reg
OCR4BH __reg
OCR4CL __reg
OCR4CH __reg
ICR4L __reg
ICR4H __reg
TIMSK4 __reg
TIFR4 __reg
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
OCR3CL __reg
OCR3CH __reg
ICR3L __reg
ICR3H __reg
TIMSK3 __reg
TIFR3 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR5A: 0x120, // Timer/Counter5 Control Register A
TCCR5B: 0x121, // Timer/Counter5 Control Register B
TCCR5C: 0x122, // Timer/Counter 5 Control Register C
TCNT5L: 0x124, // Timer/Counter5 Bytes
TCNT5H: 0x124, // Timer/Counter5 Bytes
OCR5AL: 0x128, // Timer/Counter5 Output Compare Register A Bytes
OCR5AH: 0x128, // Timer/Counter5 Output Compare Register A Bytes
OCR5BL: 0x12a, // Timer/Counter5 Output Compare Register B Bytes
OCR5BH: 0x12a, // Timer/Counter5 Output Compare Register B Bytes
OCR5CL: 0x12c, // Timer/Counter5 Output Compare Register B Bytes
OCR5CH: 0x12c, // Timer/Counter5 Output Compare Register B Bytes
ICR5L: 0x126, // Timer/Counter5 Input Capture Register Bytes
ICR5H: 0x126, // Timer/Counter5 Input Capture Register Bytes
TIMSK5: 0x73, // Timer/Counter5 Interrupt Mask Register
TIFR5: 0x3a, // Timer/Counter5 Interrupt Flag register
TCCR4A: 0xa0, // Timer/Counter4 Control Register A
TCCR4B: 0xa1, // Timer/Counter4 Control Register B
TCCR4C: 0xa2, // Timer/Counter 4 Control Register C
TCNT4L: 0xa4, // Timer/Counter4 Bytes
TCNT4H: 0xa4, // Timer/Counter4 Bytes
OCR4AL: 0xa8, // Timer/Counter4 Output Compare Register A Bytes
OCR4AH: 0xa8, // Timer/Counter4 Output Compare Register A Bytes
OCR4BL: 0xaa, // Timer/Counter4 Output Compare Register B Bytes
OCR4BH: 0xaa, // Timer/Counter4 Output Compare Register B Bytes
OCR4CL: 0xac, // Timer/Counter4 Output Compare Register B Bytes
OCR4CH: 0xac, // Timer/Counter4 Output Compare Register B Bytes
ICR4L: 0xa6, // Timer/Counter4 Input Capture Register Bytes
ICR4H: 0xa6, // Timer/Counter4 Input Capture Register Bytes
TIMSK4: 0x72, // Timer/Counter4 Interrupt Mask Register
TIFR4: 0x39, // Timer/Counter4 Interrupt Flag register
TCCR3A: 0x90, // Timer/Counter3 Control Register A
TCCR3B: 0x91, // Timer/Counter3 Control Register B
TCCR3C: 0x92, // Timer/Counter 3 Control Register C
TCNT3L: 0x94, // Timer/Counter3 Bytes
TCNT3H: 0x94, // Timer/Counter3 Bytes
OCR3AL: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3CL: 0x9c, // Timer/Counter3 Output Compare Register B Bytes
OCR3CH: 0x9c, // Timer/Counter3 Output Compare Register B Bytes
ICR3L: 0x96, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x96, // Timer/Counter3 Input Capture Register Bytes
TIMSK3: 0x71, // Timer/Counter3 Interrupt Mask Register
TIFR3: 0x38, // Timer/Counter3 Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1CL: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
OCR1CH: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EICRB: 0x6a, // External Interrupt Control Register B
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR2 __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR2: 0x7d, // Digital Input Disable Register
DIDR0: 0x7e, // Digital Input Disable Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
XMCRA __reg
XMCRB __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
RAMPZ __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR1 __reg
PRR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
XMCRA: 0x74, // External Memory Control Register A
XMCRB: 0x75, // External Memory Control Register B
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
RAMPZ: 0x5b, // RAM Page Z Select Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR1: 0x65, // Power Reduction Register1
PRR0: 0x64, // Power Reduction Register0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR5A: Timer/Counter5 Control Register A
TCCR5A_COM5A = 0xc0 // Compare Output Mode 1A, bits
TCCR5A_COM5B = 0x30 // Compare Output Mode 5B, bits
TCCR5A_COM5C = 0xc // Compare Output Mode 5C, bits
TCCR5A_WGM5 = 0x3 // Waveform Generation Mode
// TCCR5B: Timer/Counter5 Control Register B
TCCR5B_ICNC5 = 0x80 // Input Capture 5 Noise Canceler
TCCR5B_ICES5 = 0x40 // Input Capture 5 Edge Select
TCCR5B_WGM5 = 0x18 // Waveform Generation Mode
TCCR5B_CS5 = 0x7 // Prescaler source of Timer/Counter 5
// TCCR5C: Timer/Counter 5 Control Register C
TCCR5C_FOC5A = 0x80 // Force Output Compare 5A
TCCR5C_FOC5B = 0x40 // Force Output Compare 5B
TCCR5C_FOC5C = 0x20 // Force Output Compare 5C
// TIMSK5: Timer/Counter5 Interrupt Mask Register
TIMSK5_ICIE5 = 0x20 // Timer/Counter5 Input Capture Interrupt Enable
TIMSK5_OCIE5C = 0x8 // Timer/Counter5 Output Compare C Match Interrupt Enable
TIMSK5_OCIE5B = 0x4 // Timer/Counter5 Output Compare B Match Interrupt Enable
TIMSK5_OCIE5A = 0x2 // Timer/Counter5 Output Compare A Match Interrupt Enable
TIMSK5_TOIE5 = 0x1 // Timer/Counter5 Overflow Interrupt Enable
// TIFR5: Timer/Counter5 Interrupt Flag register
TIFR5_ICF5 = 0x20 // Input Capture Flag 5
TIFR5_OCF5C = 0x8 // Output Compare Flag 5C
TIFR5_OCF5B = 0x4 // Output Compare Flag 5B
TIFR5_OCF5A = 0x2 // Output Compare Flag 5A
TIFR5_TOV5 = 0x1 // Timer/Counter5 Overflow Flag
// TCCR4A: Timer/Counter4 Control Register A
TCCR4A_COM4A = 0xc0 // Compare Output Mode 1A, bits
TCCR4A_COM4B = 0x30 // Compare Output Mode 4B, bits
TCCR4A_COM4C = 0xc // Compare Output Mode 4C, bits
TCCR4A_WGM4 = 0x3 // Waveform Generation Mode
// TCCR4B: Timer/Counter4 Control Register B
TCCR4B_ICNC4 = 0x80 // Input Capture 4 Noise Canceler
TCCR4B_ICES4 = 0x40 // Input Capture 4 Edge Select
TCCR4B_WGM4 = 0x18 // Waveform Generation Mode
TCCR4B_CS4 = 0x7 // Prescaler source of Timer/Counter 4
// TCCR4C: Timer/Counter 4 Control Register C
TCCR4C_FOC4A = 0x80 // Force Output Compare 4A
TCCR4C_FOC4B = 0x40 // Force Output Compare 4B
TCCR4C_FOC4C = 0x20 // Force Output Compare 4C
// TIMSK4: Timer/Counter4 Interrupt Mask Register
TIMSK4_ICIE4 = 0x20 // Timer/Counter4 Input Capture Interrupt Enable
TIMSK4_OCIE4C = 0x8 // Timer/Counter4 Output Compare C Match Interrupt Enable
TIMSK4_OCIE4B = 0x4 // Timer/Counter4 Output Compare B Match Interrupt Enable
TIMSK4_OCIE4A = 0x2 // Timer/Counter4 Output Compare A Match Interrupt Enable
TIMSK4_TOIE4 = 0x1 // Timer/Counter4 Overflow Interrupt Enable
// TIFR4: Timer/Counter4 Interrupt Flag register
TIFR4_ICF4 = 0x20 // Input Capture Flag 4
TIFR4_OCF4C = 0x8 // Output Compare Flag 4C
TIFR4_OCF4B = 0x4 // Output Compare Flag 4B
TIFR4_OCF4A = 0x2 // Output Compare Flag 4A
TIFR4_TOV4 = 0x1 // Timer/Counter4 Overflow Flag
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 1A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_COM3C = 0xc // Compare Output Mode 3C, bits
TCCR3A_WGM3 = 0x3 // Waveform Generation Mode
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode
TCCR3B_CS3 = 0x7 // Prescaler source of Timer/Counter 3
// TCCR3C: Timer/Counter 3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare 3A
TCCR3C_FOC3B = 0x40 // Force Output Compare 3B
TCCR3C_FOC3C = 0x20 // Force Output Compare 3C
// TIMSK3: Timer/Counter3 Interrupt Mask Register
TIMSK3_ICIE3 = 0x20 // Timer/Counter3 Input Capture Interrupt Enable
TIMSK3_OCIE3C = 0x8 // Timer/Counter3 Output Compare C Match Interrupt Enable
TIMSK3_OCIE3B = 0x4 // Timer/Counter3 Output Compare B Match Interrupt Enable
TIMSK3_OCIE3A = 0x2 // Timer/Counter3 Output Compare A Match Interrupt Enable
TIMSK3_TOIE3 = 0x1 // Timer/Counter3 Overflow Interrupt Enable
// TIFR3: Timer/Counter3 Interrupt Flag register
TIFR3_ICF3 = 0x20 // Input Capture Flag 3
TIFR3_OCF3C = 0x8 // Output Compare Flag 3C
TIFR3_OCF3B = 0x4 // Output Compare Flag 3B
TIFR3_OCF3A = 0x2 // Output Compare Flag 3A
TIFR3_TOV3 = 0x1 // Timer/Counter3 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
TCCR1C_FOC1C = 0x20 // Force Output Compare 1C
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1C = 0x8 // Timer/Counter1 Output Compare C Match Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1C = 0x8 // Output Compare Flag 1C
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable mask
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable mask
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable mask
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR2: Digital Input Disable Register
DIDR2_ADC15D = 0x80
DIDR2_ADC14D = 0x40
DIDR2_ADC13D = 0x20
DIDR2_ADC12D = 0x10
DIDR2_ADC11D = 0x8
DIDR2_ADC10D = 0x4
DIDR2_ADC9D = 0x2
DIDR2_ADC8D = 0x1
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// XMCRA: External Memory Control Register A
XMCRA_SRE = 0x80 // External SRAM Enable
XMCRA_SRL = 0x70 // Wait state page limit
XMCRA_SRW1 = 0xc // Wait state select bit upper page
XMCRA_SRW0 = 0x3 // Wait state select bit lower page
// XMCRB: External Memory Control Register B
XMCRB_XMBK = 0x80 // External Memory Bus Keeper Enable
XMCRB_XMM = 0x7 // External Memory High Mask
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR1: Power Reduction Register1
PRR1_PRTIM5 = 0x20 // Power Reduction Timer/Counter5
PRR1_PRTIM4 = 0x10 // Power Reduction Timer/Counter4
PRR1_PRTIM3 = 0x8 // Power Reduction Timer/Counter3
PRR1_PRUSART3 = 0x4 // Power Reduction USART3
PRR1_PRUSART2 = 0x2 // Power Reduction USART2
PRR1_PRUSART1 = 0x1 // Power Reduction USART1
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega1281.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x2000;
__num_isrs = 57;

Просмотреть файл

@ -1,774 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega1284.atdf, see http://packs.download.atmel.com/
// +build avr,atmega1284
// Device information for the ATmega1284.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega1284"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 6 // Pin Change Interrupt Request 2
IRQ_PCINT3 = 7 // Pin Change Interrupt Request 3
IRQ_WDT = 8 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 9 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 10 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 17 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 18 // Timer/Counter0 Overflow
IRQ_SPI_STC = 19 // SPI Serial Transfer Complete
IRQ_USART0_RX = 20 // USART0, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART0_TX = 22 // USART0, Tx Complete
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_ADC = 24 // ADC Conversion Complete
IRQ_EE_READY = 25 // EEPROM Ready
IRQ_TWI = 26 // 2-wire Serial Interface
IRQ_SPM_READY = 27 // Store Program Memory Read
IRQ_USART1_RX = 28 // USART1 RX complete
IRQ_USART1_UDRE = 29 // USART1 Data Register Empty
IRQ_USART1_TX = 30 // USART1 TX complete
IRQ_TIMER3_CAPT = 31 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 32 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 33 // Timer/Counter3 Compare Match B
IRQ_TIMER3_OVF = 34 // Timer/Counter3 Overflow
IRQ_max = 34 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK3 __reg
TIFR3 __reg
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
ICR3L __reg
ICR3H __reg
}{
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK3: 0x71, // Timer/Counter3 Interrupt Mask Register
TIFR3: 0x38, // Timer/Counter Interrupt Flag register
TCCR3A: 0x90, // Timer/Counter3 Control Register A
TCCR3B: 0x91, // Timer/Counter3 Control Register B
TCCR3C: 0x92, // Timer/Counter3 Control Register C
TCNT3L: 0x94, // Timer/Counter3 Bytes
TCNT3H: 0x94, // Timer/Counter3 Bytes
OCR3AL: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
ICR3L: 0x96, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x96, // Timer/Counter3 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK3 __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK3: 0x73, // Pin Change Mask Register 3
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR0: 0x7e, // Digital Input Disable Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
RAMPZ __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR0 __reg
PRR1 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
RAMPZ: 0x5b, // RAM Page Z Select Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR0: 0x64, // Power Reduction Register0
PRR1: 0x65, // Power Reduction Register1
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Timer/Counter1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare B Match Flag
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare A Match Flag
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for Channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for Channel B
// TIMSK3: Timer/Counter3 Interrupt Mask Register
TIMSK3_ICIE3 = 0x20 // Timer/Counter3 Input Capture Interrupt Enable
TIMSK3_OCIE3B = 0x4 // Timer/Counter3 Output Compare B Match Interrupt Enable
TIMSK3_OCIE3A = 0x2 // Timer/Counter3 Output Compare A Match Interrupt Enable
TIMSK3_TOIE3 = 0x1 // Timer/Counter3 Overflow Interrupt Enable
// TIFR3: Timer/Counter Interrupt Flag register
TIFR3_ICF3 = 0x20 // Timer/Counter3 Input Capture Flag
TIFR3_OCF3B = 0x4 // Timer/Counter3 Output Compare B Match Flag
TIFR3_OCF3A = 0x2 // Timer/Counter3 Output Compare A Match Flag
TIFR3_TOV3 = 0x1 // Timer/Counter3 Overflow Flag
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 3A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_WGM3 = 0x3 // Pulse Width Modulator Select Bits
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode Bits
TCCR3B_CS3 = 0x7 // Clock Select3 bits
// TCCR3C: Timer/Counter3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare for Channel A
TCCR3C_FOC3B = 0x40 // Force Output Compare for Channel B
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
// PCMSK3: Pin Change Mask Register 3
PCMSK3_PCINT = 0xff // Pin Change Enable Masks
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0xf // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0xf // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRUSART1 = 0x10 // Power Reduction USART1
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
// PRR1: Power Reduction Register1
PRR1_PRTIM3 = 0x1 // Power Reduction Timer/Counter3
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega1284.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x4000;
__num_isrs = 35;

Просмотреть файл

@ -1,870 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega1284P.atdf, see http://packs.download.atmel.com/
// +build avr,atmega1284p
// Device information for the ATmega1284P.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega1284P"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 6 // Pin Change Interrupt Request 2
IRQ_PCINT3 = 7 // Pin Change Interrupt Request 3
IRQ_WDT = 8 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 9 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 10 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 17 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 18 // Timer/Counter0 Overflow
IRQ_SPI_STC = 19 // SPI Serial Transfer Complete
IRQ_USART0_RX = 20 // USART0, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART0_TX = 22 // USART0, Tx Complete
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_ADC = 24 // ADC Conversion Complete
IRQ_EE_READY = 25 // EEPROM Ready
IRQ_TWI = 26 // 2-wire Serial Interface
IRQ_SPM_READY = 27 // Store Program Memory Read
IRQ_USART1_RX = 28 // USART1 RX complete
IRQ_USART1_UDRE = 29 // USART1 Data Register Empty
IRQ_USART1_TX = 30 // USART1 TX complete
IRQ_TIMER3_CAPT = 31 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 32 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 33 // Timer/Counter3 Compare Match B
IRQ_TIMER3_OVF = 34 // Timer/Counter3 Overflow
IRQ_max = 34 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register B
OCR0A: 0x47, // Timer/Counter0 Output Compare Register A
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK3 __reg
TIFR3 __reg
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
ICR3L __reg
ICR3H __reg
}{
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK3: 0x71, // Timer/Counter3 Interrupt Mask Register
TIFR3: 0x38, // Timer/Counter Interrupt Flag register
TCCR3A: 0x90, // Timer/Counter3 Control Register A
TCCR3B: 0x91, // Timer/Counter3 Control Register B
TCCR3C: 0x92, // Timer/Counter3 Control Register C
TCNT3L: 0x94, // Timer/Counter3 Bytes
TCNT3H: 0x94, // Timer/Counter3 Bytes
OCR3AL: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x98, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x9a, // Timer/Counter3 Output Compare Register B Bytes
ICR3L: 0x96, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x96, // Timer/Counter3 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK3 __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK3: 0x73, // Pin Change Mask Register 3
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR0: 0x7e, // Digital Input Disable Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
RAMPZ __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR0 __reg
PRR1 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
RAMPZ: 0x5b, // RAM Page Z Select Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR0: 0x64, // Power Reduction Register0
PRR1: 0x65, // Power Reduction Register1
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UDR0: USART I/O Data Register
UDR0_UDR0 = 0xff // USART I/O Data bits
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UBRR0L: USART Baud Rate Register Bytes
// UBRR0H: USART Baud Rate Register Bytes
UBRR0_UBRR0 = 0xfff // USART Baud Rate Register
// UDR1: USART I/O Data Register
UDR1_UDR1 = 0xff // USART I/O Data bits
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
// UBRR1L: USART Baud Rate Register Bytes
// UBRR1H: USART Baud Rate Register Bytes
UBRR1_UBRR1 = 0xfff // USART Baud Rate Register
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// OCR0B: Timer/Counter0 Output Compare Register B
OCR0B_OCR0B = 0xff // Timer/Counter0 Output Compare B bits
// OCR0A: Timer/Counter0 Output Compare Register A
OCR0A_OCR0A = 0xff // Timer/Counter0 Output Compare A bits
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer/Counter0 bits
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Timer/Counter1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare B Match Flag
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare A Match Flag
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for Channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for Channel B
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1 bits
// OCR1AL: Timer/Counter1 Output Compare Register A Bytes
// OCR1AH: Timer/Counter1 Output Compare Register A Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A bits
// OCR1BL: Timer/Counter1 Output Compare Register B Bytes
// OCR1BH: Timer/Counter1 Output Compare Register B Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B bits
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture bits
// TIMSK3: Timer/Counter3 Interrupt Mask Register
TIMSK3_ICIE3 = 0x20 // Timer/Counter3 Input Capture Interrupt Enable
TIMSK3_OCIE3B = 0x4 // Timer/Counter3 Output Compare B Match Interrupt Enable
TIMSK3_OCIE3A = 0x2 // Timer/Counter3 Output Compare A Match Interrupt Enable
TIMSK3_TOIE3 = 0x1 // Timer/Counter3 Overflow Interrupt Enable
// TIFR3: Timer/Counter Interrupt Flag register
TIFR3_ICF3 = 0x20 // Timer/Counter3 Input Capture Flag
TIFR3_OCF3B = 0x4 // Timer/Counter3 Output Compare B Match Flag
TIFR3_OCF3A = 0x2 // Timer/Counter3 Output Compare A Match Flag
TIFR3_TOV3 = 0x1 // Timer/Counter3 Overflow Flag
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 3A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_WGM3 = 0x3 // Pulse Width Modulator Select Bits
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode Bits
TCCR3B_CS3 = 0x7 // Clock Select3 bits
// TCCR3C: Timer/Counter3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare for Channel A
TCCR3C_FOC3B = 0x40 // Force Output Compare for Channel B
// TCNT3L: Timer/Counter3 Bytes
// TCNT3H: Timer/Counter3 Bytes
TCNT3_TCNT3 = 0xffff // Timer/Counter3 bits
// OCR3AL: Timer/Counter3 Output Compare Register A Bytes
// OCR3AH: Timer/Counter3 Output Compare Register A Bytes
OCR3A_OCR3A = 0xffff // Timer/Counter3 Output Compare A bits
// OCR3BL: Timer/Counter3 Output Compare Register B Bytes
// OCR3BH: Timer/Counter3 Output Compare Register B Bytes
OCR3B_OCR3B = 0xffff // Timer/Counter3 Output Compare B bits
// ICR3L: Timer/Counter3 Input Capture Register Bytes
// ICR3H: Timer/Counter3 Input Capture Register Bytes
ICR3_ICR3 = 0xffff // Timer/Counter3 Input Capture bits
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// TCNT2: Timer/Counter2
TCNT2_TCNT2 = 0xff // Timer/Counter2 bits
// OCR2B: Timer/Counter2 Output Compare Register B
OCR2B_OCR2B = 0xff // Timer/Counter2 Output Compare B bits
// OCR2A: Timer/Counter2 Output Compare Register A
OCR2A_OCR2A = 0xff // Timer/Counter2 Output Compare A bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
// PCMSK3: Pin Change Mask Register 3
PCMSK3_PCINT = 0xff // Pin Change Enable Masks
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0xf // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0xf // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCL: ADC Data Register Bytes
// ADCH: ADC Data Register Bytes
ADC_ADC = 0xffff // ADC Data bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Address Register Low Bytes
// EEARH: EEPROM Address Register Low Bytes
EEAR_EEAR = 0xfff // EEPROM Address bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWBR: TWI Bit Rate register
TWBR_TWBR = 0xff // TWI Bit Rate bits
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWDR: TWI Data register
TWDR_TWD = 0xff // TWI Data bits
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPDR: SPI Data Register
SPDR_SPD = 0xff // SPI Data bits
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRUSART1 = 0x10 // Power Reduction USART1
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
// PRR1: Power Reduction Register1
PRR1_PRTIM3 = 0x1 // Power Reduction Timer/Counter3
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega1284P.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x4000;
__num_isrs = 35;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega1284RFR2.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x4000;
__num_isrs = 71;

Просмотреть файл

@ -1,666 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega128A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega128a
// Device information for the ATmega128A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega128A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_TIMER2_COMP = 9 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 10 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 11 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 12 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 13 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 14 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 15 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 16 // Timer/Counter0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART0_RX = 18 // USART0, Rx Complete
IRQ_USART0_UDRE = 19 // USART0 Data Register Empty
IRQ_USART0_TX = 20 // USART0, Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TIMER1_COMPC = 24 // Timer/Counter1 Compare Match C
IRQ_TIMER3_CAPT = 25 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 26 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 27 // Timer/Counter3 Compare Match B
IRQ_TIMER3_COMPC = 28 // Timer/Counter3 Compare Match C
IRQ_TIMER3_OVF = 29 // Timer/Counter3 Overflow
IRQ_USART1_RX = 30 // USART1, Rx Complete
IRQ_USART1_UDRE = 31 // USART1, Data Register Empty
IRQ_USART1_TX = 32 // USART1, Tx Complete
IRQ_TWI = 33 // 2-wire Serial Interface
IRQ_SPM_READY = 34 // Store Program Memory Read
IRQ_max = 34 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
}{
ACSR: 0x28, // Analog Comparator Control And Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x2f, // SPI Data Register
SPSR: 0x2e, // SPI Status Register
SPCR: 0x2d, // SPI Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBR: 0x70, // TWI Bit Rate register
TWCR: 0x74, // TWI Control Register
TWSR: 0x71, // TWI Status Register
TWDR: 0x73, // TWI Data register
TWAR: 0x72, // TWI (Slave) Address register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0H __reg
UBRR0L __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1H __reg
UBRR1L __reg
}{
UDR0: 0x2c, // USART I/O Data Register
UCSR0A: 0x2b, // USART Control and Status Register A
UCSR0B: 0x2a, // USART Control and Status Register B
UCSR0C: 0x95, // USART Control and Status Register C
UBRR0H: 0x90, // USART Baud Rate Register Hight Byte
UBRR0L: 0x29, // USART Baud Rate Register Low Byte
UDR1: 0x9c, // USART I/O Data Register
UCSR1A: 0x9b, // USART Control and Status Register A
UCSR1B: 0x9a, // USART Control and Status Register B
UCSR1C: 0x9d, // USART Control and Status Register C
UBRR1H: 0x98, // USART Baud Rate Register Hight Byte
UBRR1L: 0x99, // USART Baud Rate Register Low Byte
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
XMCRA __reg
XMCRB __reg
OSCCAL __reg
XDIV __reg
RAMPZ __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
XMCRA: 0x6d, // External Memory Control Register A
XMCRB: 0x6c, // External Memory Control Register B
OSCCAL: 0x6f, // Oscillator Calibration Value
XDIV: 0x5c, // XTAL Divide Control Register
RAMPZ: 0x5b, // RAM Page Z Select Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x68, // Store Program Memory Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x42, // On-Chip Debug Related Register in I/O Memory
}
// Other Registers
MISC = struct {
}{}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x6a, // External Interrupt Control Register A
EICRB: 0x5a, // External Interrupt Control Register B
EIMSK: 0x59, // External Interrupt Mask Register
EIFR: 0x58, // External Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Read/Write Access Bytes
EEARH: 0x3e, // EEPROM Read/Write Access Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x3b, // Port A Data Register
DDRA: 0x3a, // Port A Data Direction Register
PINA: 0x39, // Port A Input Pins
PORTB: 0x38, // Port B Data Register
DDRB: 0x37, // Port B Data Direction Register
PINB: 0x36, // Port B Input Pins
PORTC: 0x35, // Port C Data Register
DDRC: 0x34, // Port C Data Direction Register
PINC: 0x33, // Port C Input Pins
PORTD: 0x32, // Port D Data Register
DDRD: 0x31, // Port D Data Direction Register
PIND: 0x30, // Port D Input Pins
PORTE: 0x23, // Data Register, Port E
DDRE: 0x22, // Data Direction Register, Port E
PINE: 0x21, // Input Pins, Port E
PORTF: 0x62, // Data Register, Port F
DDRF: 0x61, // Data Direction Register, Port F
PINF: 0x20, // Input Pins, Port F
PORTG: 0x65, // Data Register, Port G
DDRG: 0x64, // Data Direction Register, Port G
PING: 0x63, // Input Pins, Port G
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR0 __reg
TCNT0 __reg
OCR0 __reg
ASSR __reg
}{
TCCR0: 0x53, // Timer/Counter Control Register
TCNT0: 0x52, // Timer/Counter Register
OCR0: 0x51, // Output Compare Register
ASSR: 0x50, // Asynchronus Status Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TCCR3A __reg
TCCR3B __reg
TCCR3C __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
OCR3CL __reg
OCR3CH __reg
ICR3L __reg
ICR3H __reg
}{
TCCR1A: 0x4f, // Timer/Counter1 Control Register A
TCCR1B: 0x4e, // Timer/Counter1 Control Register B
TCCR1C: 0x7a, // Timer/Counter1 Control Register C
TCNT1L: 0x4c, // Timer/Counter1 Bytes
TCNT1H: 0x4c, // Timer/Counter1 Bytes
OCR1AL: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1CL: 0x78, // Timer/Counter1 Output Compare Register Bytes
OCR1CH: 0x78, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x46, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x46, // Timer/Counter1 Input Capture Register Bytes
TCCR3A: 0x8b, // Timer/Counter3 Control Register A
TCCR3B: 0x8a, // Timer/Counter3 Control Register B
TCCR3C: 0x8c, // Timer/Counter3 Control Register C
TCNT3L: 0x88, // Timer/Counter3 Bytes
TCNT3H: 0x88, // Timer/Counter3 Bytes
OCR3AL: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x84, // Timer/Counter3 Output Compare Register B Bytes
OCR3BH: 0x84, // Timer/Counter3 Output Compare Register B Bytes
OCR3CL: 0x82, // Timer/Counter3 Output compare Register C Bytes
OCR3CH: 0x82, // Timer/Counter3 Output compare Register C Bytes
ICR3L: 0x80, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x80, // Timer/Counter3 Input Capture Register Bytes
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR2 __reg
TCNT2 __reg
OCR2 __reg
}{
TCCR2: 0x45, // Timer/Counter Control Register
TCNT2: 0x44, // Timer/Counter Register
OCR2: 0x43, // Output Compare Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x41, // Watchdog Timer Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
}{
ADMUX: 0x27, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x24, // ADC Data Register Bytes
ADCH: 0x24, // ADC Data Register Bytes
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_M103C = 0x2 // ATmega103 Compatibility Mode
EXTENDED_WDTON = 0x1 // Watchdog Timer always on
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
HIGH_CKOPT = 0x10 // CKOPT fuse (operation dependent of CKSEL fuses)
// LOW
LOW_BODLEVEL = 0x80 // Brownout detector trigger level
LOW_BODEN = 0x40 // Brown-out detection enabled
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0x40 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_SRE = 0x80 // External SRAM Enable
MCUCR_SRW10 = 0x40 // External SRAM Wait State Select
MCUCR_SE = 0x20 // Sleep Enable
MCUCR_SM = 0x18 // Sleep Mode Select
MCUCR_SM2 = 0x4 // Sleep Mode Select
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// XMCRA: External Memory Control Register A
XMCRA_SRL = 0x70 // Wait state page limit
XMCRA_SRW0 = 0xc // Wait state select bit lower page
XMCRA_SRW11 = 0x2 // Wait state select bit upper page
// XMCRB: External Memory Control Register B
XMCRB_XMBK = 0x80 // External Memory Bus Keeper Enable
XMCRB_XMM = 0x7 // External Memory High Mask
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// RAMPZ: RAM Page Z Select Register
RAMPZ_RAMPZ0 = 0x1 // RAM Page Z Select Register Bit 0
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for JTAG: JTAG Interface
const (
// OCDR: On-Chip Debug Related Register in I/O Memory
OCDR_OCDR = 0xff // On-Chip Debug Register Bits
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR0: Timer/Counter Control Register
TCCR0_FOC0 = 0x80 // Force Output Compare
TCCR0_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0_COM0 = 0x30 // Compare Match Output Modes
TCCR0_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0_CS0 = 0x7 // Clock Selects
// ASSR: Asynchronus Status Register
ASSR_AS0 = 0x8 // Asynchronus Timer/Counter 0
ASSR_TCN0UB = 0x4 // Timer/Counter0 Update Busy
ASSR_OCR0UB = 0x2 // Output Compare register 0 Busy
ASSR_TCR0UB = 0x1 // Timer/Counter Control Register 0 Update Busy
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for channel B
TCCR1C_FOC1C = 0x20 // Force Output Compare for channel C
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 3A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_COM3C = 0xc // Compare Output Mode 3C, bits
TCCR3A_WGM3 = 0x3 // Waveform Generation Mode Bits
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Waveform Generation Mode
TCCR3B_CS3 = 0x7 // Clock Select3 bits
// TCCR3C: Timer/Counter3 Control Register C
TCCR3C_FOC3A = 0x80 // Force Output Compare for channel A
TCCR3C_FOC3B = 0x40 // Force Output Compare for channel B
TCCR3C_FOC3C = 0x20 // Force Output Compare for channel C
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR2: Timer/Counter Control Register
TCCR2_FOC2 = 0x80 // Force Output Compare
TCCR2_WGM20 = 0x40 // Wafeform Generation Mode
TCCR2_COM2 = 0x30 // Compare Match Output Mode
TCCR2_WGM21 = 0x8 // Waveform Generation Mode
TCCR2_CS2 = 0x7 // Clock Select
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADFR = 0x20 // ADC Free Running Select
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega128A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x1000;
__num_isrs = 35;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega128RFA1.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x4000;
__num_isrs = 72;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega128RFR2.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x20000;
__ram_size = 0x4000;
__num_isrs = 71;

Просмотреть файл

@ -1,491 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16
// Device information for the ATmega16.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_TIMER2_COMP = 3 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 4 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 5 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 6 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 7 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 8 // Timer/Counter1 Overflow
IRQ_TIMER0_OVF = 9 // Timer/Counter0 Overflow
IRQ_SPI_STC = 10 // Serial Transfer Complete
IRQ_USART_RXC = 11 // USART, Rx Complete
IRQ_USART_UDRE = 12 // USART Data Register Empty
IRQ_USART_TXC = 13 // USART, Tx Complete
IRQ_ADC = 14 // ADC Conversion Complete
IRQ_EE_RDY = 15 // EEPROM Ready
IRQ_ANA_COMP = 16 // Analog Comparator
IRQ_TWI = 17 // 2-wire Serial Interface
IRQ_INT2 = 18 // External Interrupt Request 2
IRQ_TIMER0_COMP = 19 // Timer/Counter0 Compare Match
IRQ_SPM_RDY = 20 // Store Program Memory Ready
IRQ_max = 20 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
HIGH __reg
LOW __reg
}{
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0 __reg
TCNT0 __reg
OCR0 __reg
}{
TCCR0: 0x53, // Timer/Counter Control Register
TCNT0: 0x52, // Timer/Counter Register
OCR0: 0x5c, // Output Compare Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TCCR1A: 0x4f, // Timer/Counter1 Control Register A
TCCR1B: 0x4e, // Timer/Counter1 Control Register B
TCNT1L: 0x4c, // Timer/Counter1 Bytes
TCNT1H: 0x4c, // Timer/Counter1 Bytes
OCR1AL: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x48, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x46, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x46, // Timer/Counter1 Input Capture Register Bytes
}
// External Interrupts
EXINT = struct {
GICR __reg
GIFR __reg
}{
GICR: 0x5b, // General Interrupt Control Register
GIFR: 0x5a, // General Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Address Register Bytes
EEARH: 0x3e, // EEPROM Address Register Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x51, // Oscillator Calibration Value
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2 __reg
TCNT2 __reg
OCR2 __reg
ASSR __reg
}{
TCCR2: 0x45, // Timer/Counter2 Control Register
TCNT2: 0x44, // Timer/Counter2
OCR2: 0x43, // Timer/Counter2 Output Compare Register
ASSR: 0x42, // Asynchronous Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x2f, // SPI Data Register
SPSR: 0x2e, // SPI Status Register
SPCR: 0x2d, // SPI Control Register
}
// USART
USART = struct {
UDR __reg
UCSRA __reg
UCSRB __reg
UCSRC __reg
UBRRH __reg
UBRRL __reg
}{
UDR: 0x2c, // USART I/O Data Register
UCSRA: 0x2b, // USART Control and Status Register A
UCSRB: 0x2a, // USART Control and Status Register B
UCSRC: 0x40, // USART Control and Status Register C
UBRRH: 0x40, // USART Baud Rate Register Hight Byte
UBRRL: 0x29, // USART Baud Rate Register Low Byte
}
// Two Wire Serial Interface
TWI = struct {
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBR: 0x20, // TWI Bit Rate register
TWCR: 0x56, // TWI Control Register
TWSR: 0x21, // TWI Status Register
TWDR: 0x23, // TWI Data register
TWAR: 0x22, // TWI (Slave) Address register
}
// Analog Comparator
AC = struct {
ACSR __reg
}{
ACSR: 0x28, // Analog Comparator Control And Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
}{
ADMUX: 0x27, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x24, // ADC Data Register Bytes
ADCH: 0x24, // ADC Data Register Bytes
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x3b, // Port A Data Register
DDRA: 0x3a, // Port A Data Direction Register
PINA: 0x39, // Port A Input Pins
PORTB: 0x38, // Port B Data Register
DDRB: 0x37, // Port B Data Direction Register
PINB: 0x36, // Port B Input Pins
PORTC: 0x35, // Port C Data Register
DDRC: 0x34, // Port C Data Direction Register
PINC: 0x33, // Port C Input Pins
PORTD: 0x32, // Port D Data Register
DDRD: 0x31, // Port D Data Direction Register
PIND: 0x30, // Port D Input Pins
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x41, // Watchdog Timer Control Register
}
)
// Bitfields for FUSE: Fuses
const (
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
HIGH_CKOPT = 0x10 // CKOPT fuse (operation dependent of CKSEL fuses)
// LOW
LOW_BODLEVEL = 0x80 // Brownout detector trigger level
LOW_BODEN = 0x40 // Brown-out detection enabled
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0: Timer/Counter Control Register
TCCR0_FOC0 = 0x80 // Force Output Compare
TCCR0_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0_COM0 = 0x30 // Compare Match Output Modes
TCCR0_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0_CS0 = 0x7 // Clock Selects
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_FOC1A = 0x8 // Force Output Compare 1A
TCCR1A_FOC1B = 0x4 // Force Output Compare 1B
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
)
// Bitfields for EXINT: External Interrupts
const (
// GICR: General Interrupt Control Register
GICR_INT0 = 0x40 // External Interrupt Request 0 Enable
GICR_INT1 = 0x80 // External Interrupt Request 1 Enable
GICR_INT2 = 0x20 // External Interrupt Request 2 Enable
GICR_IVSEL = 0x2 // Interrupt Vector Select
GICR_IVCE = 0x1 // Interrupt Vector Change Enable
// GIFR: General Interrupt Flag Register
GIFR_INTF = 0xc0 // External Interrupt Flags
GIFR_INTF2 = 0x20 // External Interrupt Flag 2
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2: Timer/Counter2 Control Register
TCCR2_FOC2 = 0x80 // Force Output Compare
TCCR2_WGM20 = 0x40 // Waveform Genration Mode
TCCR2_COM2 = 0x30 // Compare Output Mode bits
TCCR2_WGM21 = 0x8 // Waveform Generation Mode
TCCR2_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_AS2 = 0x8 // Asynchronous Timer/counter2
ASSR_TCN2UB = 0x4 // Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // Timer/counter Control Register2 Update Busy
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for USART: USART
const (
// UCSRA: USART Control and Status Register A
UCSRA_RXC = 0x80 // USART Receive Complete
UCSRA_TXC = 0x40 // USART Transmitt Complete
UCSRA_UDRE = 0x20 // USART Data Register Empty
UCSRA_FE = 0x10 // Framing Error
UCSRA_DOR = 0x8 // Data overRun
UCSRA_UPE = 0x4 // Parity Error
UCSRA_U2X = 0x2 // Double the USART transmission speed
UCSRA_MPCM = 0x1 // Multi-processor Communication Mode
// UCSRB: USART Control and Status Register B
UCSRB_RXCIE = 0x80 // RX Complete Interrupt Enable
UCSRB_TXCIE = 0x40 // TX Complete Interrupt Enable
UCSRB_UDRIE = 0x20 // USART Data register Empty Interrupt Enable
UCSRB_RXEN = 0x10 // Receiver Enable
UCSRB_TXEN = 0x8 // Transmitter Enable
UCSRB_UCSZ2 = 0x4 // Character Size
UCSRB_RXB8 = 0x2 // Receive Data Bit 8
UCSRB_TXB8 = 0x1 // Transmit Data Bit 8
// UCSRC: USART Control and Status Register C
UCSRC_URSEL = 0x80 // Register Select
UCSRC_UMSEL = 0x40 // USART Mode Select
UCSRC_UPM = 0x30 // Parity Mode Bits
UCSRC_USBS = 0x8 // Stop Bit Select
UCSRC_UCSZ = 0x6 // Character Size
UCSRC_UCPOL = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
)
// Bitfields for JTAG: JTAG Interface
const (
// OCDR: On-Chip Debug Related Register in I/O Memory
OCDR_OCDR = 0xff // On-Chip Debug Register Bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDTOE = 0x10 // RW
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 21;

Просмотреть файл

@ -1,585 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega162.atdf, see http://packs.download.atmel.com/
// +build avr,atmega162
// Device information for the ATmega162.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega162"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_TIMER3_CAPT = 6 // Timer/Counter3 Capture Event
IRQ_TIMER3_COMPA = 7 // Timer/Counter3 Compare Match A
IRQ_TIMER3_COMPB = 8 // Timer/Counter3 Compare Match B
IRQ_TIMER3_OVF = 9 // Timer/Counter3 Overflow
IRQ_TIMER2_COMP = 10 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 16 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 17 // Timer/Counter0 Overflow
IRQ_SPI_STC = 18 // SPI Serial Transfer Complete
IRQ_USART0_RXC = 19 // USART0, Rx Complete
IRQ_USART1_RXC = 20 // USART1, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART1_UDRE = 22 // USART1, Data register Empty
IRQ_USART0_TXC = 23 // USART0, Tx Complete
IRQ_USART1_TXC = 24 // USART1, Tx Complete
IRQ_EE_RDY = 25 // EEPROM Ready
IRQ_ANA_COMP = 26 // Analog Comparator
IRQ_SPM_RDY = 27 // Store Program Memory Read
IRQ_max = 27 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
ETIMSK __reg
ETIFR __reg
TCCR3A __reg
TCCR3B __reg
TCNT3L __reg
TCNT3H __reg
OCR3AL __reg
OCR3AH __reg
OCR3BL __reg
OCR3BH __reg
ICR3L __reg
ICR3H __reg
}{
TCCR1A: 0x4f, // Timer/Counter1 Control Register A
TCCR1B: 0x4e, // Timer/Counter1 Control Register B
TCNT1L: 0x4c, // Timer/Counter1 Bytes
TCNT1H: 0x4c, // Timer/Counter1 Bytes
OCR1AL: 0x4a, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x4a, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x48, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x48, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x44, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x44, // Timer/Counter1 Input Capture Register Bytes
ETIMSK: 0x7d, // Extended Timer/Counter Interrupt Mask Register
ETIFR: 0x7c, // Extended Timer/Counter Interrupt Flag register
TCCR3A: 0x8b, // Timer/Counter3 Control Register A
TCCR3B: 0x8a, // Timer/Counter3 Control Register B
TCNT3L: 0x88, // Timer/Counter3 Bytes
TCNT3H: 0x88, // Timer/Counter3 Bytes
OCR3AL: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3AH: 0x86, // Timer/Counter3 Output Compare Register A Bytes
OCR3BL: 0x84, // Timer/Counte3 Output Compare Register B Bytes
OCR3BH: 0x84, // Timer/Counte3 Output Compare Register B Bytes
ICR3L: 0x80, // Timer/Counter3 Input Capture Register Bytes
ICR3H: 0x80, // Timer/Counter3 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2 __reg
TCNT2 __reg
OCR2 __reg
ASSR __reg
}{
TCCR2: 0x47, // Timer/Counter Control Register
TCNT2: 0x43, // Timer/Counter Register
OCR2: 0x42, // Output Compare Register
ASSR: 0x46, // Asynchronous Status Register
}
// Analog Comparator
AC = struct {
ACSR __reg
}{
ACSR: 0x28, // Analog Comparator Control And Status Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0H __reg
UBRR0L __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1H __reg
UBRR1L __reg
}{
UDR0: 0x2c, // USART I/O Data Register
UCSR0A: 0x2b, // USART Control and Status Register A
UCSR0B: 0x2a, // USART Control and Status Register B
UCSR0C: 0x40, // USART Control and Status Register C
UBRR0H: 0x40, // USART Baud Rate Register High Byte
UBRR0L: 0x29, // USART Baud Rate Register Low Byte
UDR1: 0x23, // USART I/O Data Register
UCSR1A: 0x22, // USART Control and Status Register A
UCSR1B: 0x21, // USART Control and Status Register B
UCSR1C: 0x5c, // USART Control and Status Register C
UBRR1H: 0x5c, // USART Baud Rate Register Highg Byte
UBRR1L: 0x20, // USART Baud Rate Register Low Byte
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x2d, // SPI Control Register
SPSR: 0x2e, // SPI Status Register
SPDR: 0x2f, // SPI Data Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SFIOR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x24, // Oscillator Calibration Value
CLKPR: 0x61, // Clock prescale register
SFIOR: 0x50, // Special Function IO Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x24, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCR __reg
}{
SPMCR: 0x57, // Store Program Memory Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Address Register Bytes
EEARH: 0x3e, // EEPROM Address Register Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTA: 0x3b, // Port A Data Register
DDRA: 0x3a, // Port A Data Direction Register
PINA: 0x39, // Port A Input Pins
PORTB: 0x38, // Port B Data Register
DDRB: 0x37, // Port B Data Direction Register
PINB: 0x36, // Port B Input Pins
PORTC: 0x35, // Port C Data Register
DDRC: 0x34, // Port C Data Direction Register
PINC: 0x33, // Port C Input Pins
PORTD: 0x32, // Port D Data Register
DDRD: 0x31, // Port D Data Direction Register
PIND: 0x30, // Port D Input Pins
PORTE: 0x27, // Data Register, Port E
DDRE: 0x26, // Data Direction Register, Port E
PINE: 0x25, // Input Pins, Port E
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0 __reg
TCNT0 __reg
OCR0 __reg
}{
TCCR0: 0x53, // Timer/Counter 0 Control Register
TCNT0: 0x52, // Timer/Counter 0 Register
OCR0: 0x51, // Timer/Counter 0 Output Compare Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x41, // Watchdog Timer Control Register
}
// External Interrupts
EXINT = struct {
GICR __reg
GIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
GICR: 0x5b, // General Interrupt Control Register
GIFR: 0x5a, // General Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Enable Mask
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_M161C = 0x10 // ATmega161 compability mode
EXTENDED_BODLEVEL = 0xe // Brownout detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_FOC1A = 0x8 // Force Output Compare for Channel A
TCCR1A_FOC1B = 0x4 // Force Output Compare for Channel B
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Pulse Width Modulator Select Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// ETIMSK: Extended Timer/Counter Interrupt Mask Register
ETIMSK_TICIE3 = 0x20 // Timer/Counter3 Input Capture Interrupt Enable
ETIMSK_OCIE3A = 0x10 // Timer/Counter3 Output CompareA Match Interrupt Enable
ETIMSK_OCIE3B = 0x8 // Timer/Counter3 Output CompareB Match Interrupt Enable
ETIMSK_TOIE3 = 0x4 // Timer/Counter3 Overflow Interrupt Enable
// ETIFR: Extended Timer/Counter Interrupt Flag register
ETIFR_ICF3 = 0x20 // Input Capture Flag 3
ETIFR_OCF3A = 0x10 // Output Compare Flag 3A
ETIFR_OCF3B = 0x8 // Output Compare Flag 3B
ETIFR_TOV3 = 0x4 // Timer/Counter3 Overflow Flag
// TCCR3A: Timer/Counter3 Control Register A
TCCR3A_COM3A = 0xc0 // Compare Output Mode 3A, bits
TCCR3A_COM3B = 0x30 // Compare Output Mode 3B, bits
TCCR3A_FOC3A = 0x8 // Force Output Compare for Channel A
TCCR3A_FOC3B = 0x4 // Force Output Compare for Channel B
TCCR3A_WGM3 = 0x3 // Pulse Width Modulator Select Bits
// TCCR3B: Timer/Counter3 Control Register B
TCCR3B_ICNC3 = 0x80 // Input Capture 3 Noise Canceler
TCCR3B_ICES3 = 0x40 // Input Capture 3 Edge Select
TCCR3B_WGM3 = 0x18 // Pulse Width Modulator Select Bits
TCCR3B_CS3 = 0x7 // Clock Select3 bits
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2: Timer/Counter Control Register
TCCR2_FOC2 = 0x80 // Forde Output Compare
TCCR2_WGM20 = 0x40 // Pulse Width Modulator Select Bit 0
TCCR2_COM2 = 0x30 // Compare Match Output Mode
TCCR2_WGM21 = 0x8 // Pulse Width Modulator Select Bit 1
TCCR2_CS2 = 0x7 // Clock Select
// ASSR: Asynchronous Status Register
ASSR_AS2 = 0x8 // Asynchronous Timer 2
ASSR_TCN2UB = 0x4 // Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_URSEL0 = 0x80 // Register Select
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UBRR0H: USART Baud Rate Register High Byte
UBRR0H_URSEL0 = 0x80 // Register Select
UBRR0H_UBRR0 = 0xf // USART Baud Rate Register High bits
// UBRR0L: USART Baud Rate Register Low Byte
UBRR0L_UBRR0 = 0xff // USART Baud Rate Register Low bits
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_URSEL1 = 0x80 // Register Select
UCSR1C_UMSEL1 = 0x40 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
// UBRR1H: USART Baud Rate Register Highg Byte
UBRR1H_URSEL0 = 0x80 // Register Select
UBRR1H_UBRR1 = 0xf // USART Baud Rate Register High bits
// UBRR1L: USART Baud Rate Register Low Byte
UBRR1L_UBRR1 = 0xff // USART Baud Rate Register Low bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock prescale register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SFIOR: Special Function IO Register
SFIOR_TSM = 0x80 // Timer/Counter Synchronization Mode
SFIOR_XMBK = 0x40 // External Memory Bus Keeper Enable
SFIOR_XMM = 0x38 // External Memory High Mask Bits
SFIOR_PUD = 0x4 // Pull-up Disable
SFIOR_PSR2 = 0x2 // Prescaler Reset Timer/Counter2
SFIOR_PSR310 = 0x1 // Prescaler Reset Timer/Counter3, Timer/Counter1 and Timer/Counter0
)
// Bitfields for JTAG: JTAG Interface
const (
// OCDR: On-Chip Debug Related Register in I/O Memory
OCDR_OCDR = 0xff // On-Chip Debug Register Bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCR: Store Program Memory Control Register
SPMCR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCR_RWWSB = 0x40 // Read While Write Section Busy
SPMCR_RWWSRE = 0x10 // Read While Write secion read enable
SPMCR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCR_PGWRT = 0x4 // Page Write
SPMCR_PGERS = 0x2 // Page Erase
SPMCR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Address Register Bytes
// EEARH: EEPROM Address Register Bytes
EEAR_EEAR = 0x1ff // EEPROM Address Register bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data Register bits
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0: Timer/Counter 0 Control Register
TCCR0_FOC0 = 0x80 // Force Output Compare
TCCR0_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0_COM0 = 0x30 // Compare Match Output Modes
TCCR0_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0_CS0 = 0x7 // Clock Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EXINT: External Interrupts
const (
// GICR: General Interrupt Control Register
GICR_INT0 = 0x40 // External Interrupt Request 0 Enable
GICR_INT1 = 0x80 // External Interrupt Request 1 Enable
GICR_INT2 = 0x20 // External Interrupt Request 2 Enable
GICR_PCIE = 0x18 // Pin Change Interrupt Enables
GICR_IVSEL = 0x2 // Interrupt Vector Select
GICR_IVCE = 0x1 // Interrupt Vector Change Enable
// GIFR: General Interrupt Flag Register
GIFR_INTF = 0xc0 // External Interrupt Flags
GIFR_INTF2 = 0x20 // External Interrupt Flag 2
GIFR_PCIF = 0x18 // Pin Change Interrupt Flags
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Interrupt mask bits
// PCMSK0: Pin Change Enable Mask
PCMSK0_PCINT = 0xff // Pin Change Interrupt mask bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega162.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 28;

Просмотреть файл

@ -1,711 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega164A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega164a
// Device information for the ATmega164A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega164A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 6 // Pin Change Interrupt Request 2
IRQ_PCINT3 = 7 // Pin Change Interrupt Request 3
IRQ_WDT = 8 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 9 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 10 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 17 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 18 // Timer/Counter0 Overflow
IRQ_SPI_STC = 19 // SPI Serial Transfer Complete
IRQ_USART0_RX = 20 // USART0, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART0_TX = 22 // USART0, Tx Complete
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_ADC = 24 // ADC Conversion Complete
IRQ_EE_READY = 25 // EEPROM Ready
IRQ_TWI = 26 // 2-wire Serial Interface
IRQ_SPM_READY = 27 // Store Program Memory Read
IRQ_USART1_RX = 28 // USART1 RX complete
IRQ_USART1_UDRE = 29 // USART1 Data Register Empty
IRQ_USART1_TX = 30 // USART1 TX complete
IRQ_max = 30 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK3 __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK3: 0x73, // Pin Change Mask Register 3
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR0: 0x7e, // Digital Input Disable Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR0 __reg
SPSR0 __reg
SPCR0 __reg
}{
SPDR0: 0x4e, // SPI Data Register
SPSR0: 0x4d, // SPI Status Register
SPCR0: 0x4c, // SPI Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR0: 0x64, // Power Reduction Register0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
// PCMSK3: Pin Change Mask Register 3
PCMSK3_PCINT = 0xff // Pin Change Enable Masks
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0xf // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0xf // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Timer/Counter1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare B Match Flag
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare A Match Flag
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for Channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for Channel B
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR0: SPI Status Register
SPSR0_SPIF0 = 0x80 // SPI Interrupt Flag
SPSR0_WCOL0 = 0x40 // Write Collision Flag
SPSR0_SPI2X0 = 0x1 // Double SPI Speed Bit
// SPCR0: SPI Control Register
SPCR0_SPIE0 = 0x80 // SPI Interrupt Enable
SPCR0_SPE0 = 0x40 // SPI Enable
SPCR0_DORD0 = 0x20 // Data Order
SPCR0_MSTR0 = 0x10 // Master/Slave Select
SPCR0_CPOL0 = 0x8 // Clock polarity
SPCR0_CPHA0 = 0x4 // Clock Phase
SPCR0_SPR01 = 0x2 // SPI Clock Rate Select 1
SPCR0_SPR00 = 0x1 // SPI Clock Rate Select 0
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRUSART1 = 0x10 // Power Reduction USART1
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega164A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 31;

Просмотреть файл

@ -1,711 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega164P.atdf, see http://packs.download.atmel.com/
// +build avr,atmega164p
// Device information for the ATmega164P.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega164P"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 6 // Pin Change Interrupt Request 2
IRQ_PCINT3 = 7 // Pin Change Interrupt Request 3
IRQ_WDT = 8 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 9 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 10 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 17 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 18 // Timer/Counter0 Overflow
IRQ_SPI_STC = 19 // SPI Serial Transfer Complete
IRQ_USART0_RX = 20 // USART0, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART0_TX = 22 // USART0, Tx Complete
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_ADC = 24 // ADC Conversion Complete
IRQ_EE_READY = 25 // EEPROM Ready
IRQ_TWI = 26 // 2-wire Serial Interface
IRQ_SPM_READY = 27 // Store Program Memory Read
IRQ_USART1_RX = 28 // USART1 RX complete
IRQ_USART1_UDRE = 29 // USART1 Data Register Empty
IRQ_USART1_TX = 30 // USART1 TX complete
IRQ_max = 30 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK3 __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK3: 0x73, // Pin Change Mask Register 3
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR0: 0x7e, // Digital Input Disable Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR0 __reg
SPSR0 __reg
SPCR0 __reg
}{
SPDR0: 0x4e, // SPI Data Register
SPSR0: 0x4d, // SPI Status Register
SPCR0: 0x4c, // SPI Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR0: 0x64, // Power Reduction Register0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
// PCMSK3: Pin Change Mask Register 3
PCMSK3_PCINT = 0xff // Pin Change Enable Masks
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0xf // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0xf // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Timer/Counter1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare B Match Flag
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare A Match Flag
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for Channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for Channel B
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR0: SPI Status Register
SPSR0_SPIF0 = 0x80 // SPI Interrupt Flag
SPSR0_WCOL0 = 0x40 // Write Collision Flag
SPSR0_SPI2X0 = 0x1 // Double SPI Speed Bit
// SPCR0: SPI Control Register
SPCR0_SPIE0 = 0x80 // SPI Interrupt Enable
SPCR0_SPE0 = 0x40 // SPI Enable
SPCR0_DORD0 = 0x20 // Data Order
SPCR0_MSTR0 = 0x10 // Master/Slave Select
SPCR0_CPOL0 = 0x8 // Clock polarity
SPCR0_CPHA0 = 0x4 // Clock Phase
SPCR0_SPR10 = 0x2 // SPI Clock Rate Select 1
SPCR0_SPR00 = 0x1 // SPI Clock Rate Select 0
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRUSART1 = 0x10 // Power Reduction USART1
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega164P.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 31;

Просмотреть файл

@ -1,711 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega164PA.atdf, see http://packs.download.atmel.com/
// +build avr,atmega164pa
// Device information for the ATmega164PA.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega164PA"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_PCINT0 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 5 // Pin Change Interrupt Request 1
IRQ_PCINT2 = 6 // Pin Change Interrupt Request 2
IRQ_PCINT3 = 7 // Pin Change Interrupt Request 3
IRQ_WDT = 8 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 9 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 10 // Timer/Counter2 Compare Match B
IRQ_TIMER2_OVF = 11 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 12 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 13 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 16 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 17 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 18 // Timer/Counter0 Overflow
IRQ_SPI_STC = 19 // SPI Serial Transfer Complete
IRQ_USART0_RX = 20 // USART0, Rx Complete
IRQ_USART0_UDRE = 21 // USART0 Data register Empty
IRQ_USART0_TX = 22 // USART0, Tx Complete
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_ADC = 24 // ADC Conversion Complete
IRQ_EE_READY = 25 // EEPROM Ready
IRQ_TWI = 26 // 2-wire Serial Interface
IRQ_SPM_READY = 27 // Store Program Memory Read
IRQ_USART1_RX = 28 // USART1 RX complete
IRQ_USART1_UDRE = 29 // USART1 Data Register Empty
IRQ_USART1_TX = 30 // USART1 TX complete
IRQ_max = 30 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK3 __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK3: 0x73, // Pin Change Mask Register 3
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
DIDR0: 0x7e, // Digital Input Disable Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR0 __reg
SPSR0 __reg
SPCR0 __reg
}{
SPDR0: 0x4e, // SPI Data Register
SPSR0: 0x4d, // SPI Status Register
SPCR0: 0x4c, // SPI Control Register
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR0: 0x64, // Power Reduction Register0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB1
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
// PCMSK3: Pin Change Mask Register 3
PCMSK3_PCINT = 0xff // Pin Change Enable Masks
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0xf // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0xf // Pin Change Interrupt Enables
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC7D = 0x80
DIDR0_ADC6D = 0x40
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Timer/Counter1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare B Match Flag
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare A Match Flag
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Pulse Width Modulator Select Bits
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode Bits
TCCR1B_CS1 = 0x7 // Clock Select1 bits
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare for Channel A
TCCR1C_FOC1B = 0x40 // Force Output Compare for Channel B
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR0: SPI Status Register
SPSR0_SPIF0 = 0x80 // SPI Interrupt Flag
SPSR0_WCOL0 = 0x40 // Write Collision Flag
SPSR0_SPI2X0 = 0x1 // Double SPI Speed Bit
// SPCR0: SPI Control Register
SPCR0_SPIE0 = 0x80 // SPI Interrupt Enable
SPCR0_SPE0 = 0x40 // SPI Enable
SPCR0_DORD0 = 0x20 // Data Order
SPCR0_MSTR0 = 0x10 // Master/Slave Select
SPCR0_CPOL0 = 0x8 // Clock polarity
SPCR0_CPHA0 = 0x4 // Clock Phase
SPCR0_SPR10 = 0x2 // SPI Clock Rate Select 1
SPCR0_SPR00 = 0x1 // SPI Clock Rate Select 0
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR0: Power Reduction Register0
PRR0_PRTWI = 0x80 // Power Reduction TWI
PRR0_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRUSART1 = 0x10 // Power Reduction USART1
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR0_PRUSART0 = 0x2 // Power Reduction USART0
PRR0_PRADC = 0x1 // Power Reduction ADC
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega164PA.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 31;

Просмотреть файл

@ -1,605 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega165A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega165a
// Device information for the ATmega165A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega165A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_max = 21 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USI: Universal Serial Interface
const (
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0x30 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0x30 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega165A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 22;

Просмотреть файл

@ -1,605 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega165P.atdf, see http://packs.download.atmel.com/
// +build avr,atmega165p
// Device information for the ATmega165P.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega165P"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_max = 21 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0xc0 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0xc0 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for USI: Universal Serial Interface
const (
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega165P.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 22;

Просмотреть файл

@ -1,605 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega165PA.atdf, see http://packs.download.atmel.com/
// +build avr,atmega165pa
// Device information for the ATmega165PA.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega165PA"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_max = 21 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for USI: Universal Serial Interface
const (
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0x30 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0x30 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega165PA.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 22;

Просмотреть файл

@ -1,640 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega168.atdf, see http://packs.download.atmel.com/
// +build avr,atmega168
// Device information for the ATmega168.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega168"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_PCINT0 = 3 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT2 = 5 // Pin Change Interrupt Request 1
IRQ_WDT = 6 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 7 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 8 // Timer/Counter2 Compare Match A
IRQ_TIMER2_OVF = 9 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 10 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 11 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 12 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 13 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 14 // TimerCounter0 Compare Match A
IRQ_TIMER0_COMPB = 15 // TimerCounter0 Compare Match B
IRQ_TIMER0_OVF = 16 // Timer/Couner0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART_RX = 18 // USART Rx Complete
IRQ_USART_UDRE = 19 // USART, Data Register Empty
IRQ_USART_TX = 20 // USART Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TWI = 24 // Two-wire Serial Interface
IRQ_SPM_READY = 25 // Store Program Memory Read
IRQ_max = 25 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
ADCSRB __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
ADCSRB: 0x7b, // The ADC Control and Status register B
DIDR0: 0x7e, // Digital Input Disable Register
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// CPU Registers
CPU = struct {
PRR __reg
OSCCAL __reg
CLKPR __reg
SREG __reg
SPL __reg
SPH __reg
SPMCSR __reg
MCUCR __reg
MCUSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
PRR: 0x64, // Power Reduction Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
SPMCSR: 0x57, // Store Program Memory Control and Status Register
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose I/O Register 2
GPIOR1: 0x4a, // General Purpose I/O Register 1
GPIOR0: 0x3e, // General Purpose I/O Register 0
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BOOTSZ = 0x6 // Select boot size
EXTENDED_BOOTRST = 0x1 // Boot Reset vector Enabled
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector trigger level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: The ADC Control and Status register B
ADCSRB_ACME = 0x40
ADCSRB_ADTS = 0x7 // ADC Auto Trigger Source bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x3 // External Interrupt Request 1 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x3 // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x7f // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for CPU: CPU Registers
const (
// PRR: Power Reduction Register
PRR_PRTWI = 0x80 // Power Reduction TWI
PRR_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read-While-Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SELFPRGEN = 0x1 // Self Programming Enable
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up Disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode
SMCR_SE = 0x1 // Sleep Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega168.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 26;

Просмотреть файл

@ -1,641 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega168A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega168a
// Device information for the ATmega168A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega168A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_PCINT0 = 3 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT2 = 5 // Pin Change Interrupt Request 1
IRQ_WDT = 6 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 7 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 8 // Timer/Counter2 Compare Match A
IRQ_TIMER2_OVF = 9 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 10 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 11 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 12 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 13 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 14 // TimerCounter0 Compare Match A
IRQ_TIMER0_COMPB = 15 // TimerCounter0 Compare Match B
IRQ_TIMER0_OVF = 16 // Timer/Couner0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART_RX = 18 // USART Rx Complete
IRQ_USART_UDRE = 19 // USART, Data Register Empty
IRQ_USART_TX = 20 // USART Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TWI = 24 // Two-wire Serial Interface
IRQ_SPM_Ready = 25 // Store Program Memory Read
IRQ_max = 25 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
ADCSRB __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
ADCSRB: 0x7b, // The ADC Control and Status register B
DIDR0: 0x7e, // Digital Input Disable Register
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
PRR __reg
OSCCAL __reg
CLKPR __reg
SREG __reg
SPL __reg
SPH __reg
SPMCSR __reg
MCUCR __reg
MCUSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
PRR: 0x64, // Power Reduction Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
SPMCSR: 0x57, // Store Program Memory Control and Status Register
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose I/O Register 2
GPIOR1: 0x4a, // General Purpose I/O Register 1
GPIOR0: 0x3e, // General Purpose I/O Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BOOTSZ = 0x6 // Select boot size
EXTENDED_BOOTRST = 0x1 // Boot Reset vector Enabled
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector trigger level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: The ADC Control and Status register B
ADCSRB_ACME = 0x40
ADCSRB_ADTS = 0x7 // ADC Auto Trigger Source bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x3 // External Interrupt Request 1 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x3 // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x7f // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// PRR: Power Reduction Register
PRR_PRTWI = 0x80 // Power Reduction TWI
PRR_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read-While-Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10
MCUCR_IVSEL = 0x2
MCUCR_IVCE = 0x1
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select Bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega168A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 26;

Просмотреть файл

@ -1,642 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega168P.atdf, see http://packs.download.atmel.com/
// +build avr,atmega168p
// Device information for the ATmega168P.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega168P"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_PCINT0 = 3 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT2 = 5 // Pin Change Interrupt Request 1
IRQ_WDT = 6 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 7 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 8 // Timer/Counter2 Compare Match A
IRQ_TIMER2_OVF = 9 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 10 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 11 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 12 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 13 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 14 // TimerCounter0 Compare Match A
IRQ_TIMER0_COMPB = 15 // TimerCounter0 Compare Match B
IRQ_TIMER0_OVF = 16 // Timer/Couner0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART_RX = 18 // USART Rx Complete
IRQ_USART_UDRE = 19 // USART, Data Register Empty
IRQ_USART_TX = 20 // USART Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TWI = 24 // Two-wire Serial Interface
IRQ_SPM_Ready = 25 // Store Program Memory Read
IRQ_max = 25 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
ADCSRB __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
ADCSRB: 0x7b, // The ADC Control and Status register B
DIDR0: 0x7e, // Digital Input Disable Register
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
PRR __reg
OSCCAL __reg
CLKPR __reg
SREG __reg
SPL __reg
SPH __reg
SPMCSR __reg
MCUCR __reg
MCUSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
PRR: 0x64, // Power Reduction Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
SPMCSR: 0x57, // Store Program Memory Control and Status Register
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose I/O Register 2
GPIOR1: 0x4a, // General Purpose I/O Register 1
GPIOR0: 0x3e, // General Purpose I/O Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BOOTSZ = 0x6 // Select boot size
EXTENDED_BOOTRST = 0x1 // Boot Reset vector Enabled
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector trigger level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: The ADC Control and Status register B
ADCSRB_ACME = 0x40
ADCSRB_ADTS = 0x7 // ADC Auto Trigger Source bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x3 // External Interrupt Request 1 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x3 // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x7f // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// PRR: Power Reduction Register
PRR_PRTWI = 0x80 // Power Reduction TWI
PRR_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read-While-Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SELFPRGEN = 0x1 // Self Programming Enable
// MCUCR: MCU Control Register
MCUCR_BODS = 0x40 // BOD Sleep
MCUCR_BODSE = 0x20 // BOD Sleep Enable
MCUCR_PUD = 0x10
MCUCR_IVSEL = 0x2
MCUCR_IVCE = 0x1
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select Bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega168P.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 26;

Просмотреть файл

@ -1,643 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega168PA.atdf, see http://packs.download.atmel.com/
// +build avr,atmega168pa
// Device information for the ATmega168PA.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega168PA"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_PCINT0 = 3 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT2 = 5 // Pin Change Interrupt Request 1
IRQ_WDT = 6 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 7 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 8 // Timer/Counter2 Compare Match A
IRQ_TIMER2_OVF = 9 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 10 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 11 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 12 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 13 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 14 // TimerCounter0 Compare Match A
IRQ_TIMER0_COMPB = 15 // TimerCounter0 Compare Match B
IRQ_TIMER0_OVF = 16 // Timer/Couner0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART_RX = 18 // USART Rx Complete
IRQ_USART_UDRE = 19 // USART, Data Register Empty
IRQ_USART_TX = 20 // USART Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TWI = 24 // Two-wire Serial Interface
IRQ_SPM_Ready = 25 // Store Program Memory Read
IRQ_max = 25 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
ADCSRB __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
ADCSRB: 0x7b, // The ADC Control and Status register B
DIDR0: 0x7e, // Digital Input Disable Register
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
PRR __reg
OSCCAL __reg
CLKPR __reg
SREG __reg
SPL __reg
SPH __reg
SPMCSR __reg
MCUCR __reg
MCUSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
PRR: 0x64, // Power Reduction Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
SPMCSR: 0x57, // Store Program Memory Control and Status Register
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose I/O Register 2
GPIOR1: 0x4a, // General Purpose I/O Register 1
GPIOR0: 0x3e, // General Purpose I/O Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BOOTSZ = 0x6 // Select boot size
EXTENDED_BOOTRST = 0x1 // Boot Reset vector Enabled
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector trigger level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: The ADC Control and Status register B
ADCSRB_ACME = 0x40
ADCSRB_ADTS = 0x7 // ADC Auto Trigger Source bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x3 // External Interrupt Request 1 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x3 // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x7f // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// PRR: Power Reduction Register
PRR_PRTWI = 0x80 // Power Reduction TWI
PRR_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read-While-Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory
// MCUCR: MCU Control Register
MCUCR_BODS = 0x40 // BOD Sleep
MCUCR_BODSE = 0x20 // BOD Sleep Enable
MCUCR_PUD = 0x10
MCUCR_IVSEL = 0x2
MCUCR_IVCE = 0x1
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select Bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega168PA.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 26;

Просмотреть файл

@ -1,685 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega168PB.atdf, see http://packs.download.atmel.com/
// +build avr,atmega168pb
// Device information for the ATmega168PB.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega168PB"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_PCINT0 = 3 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 4 // Pin Change Interrupt Request 0
IRQ_PCINT2 = 5 // Pin Change Interrupt Request 1
IRQ_WDT = 6 // Watchdog Time-out Interrupt
IRQ_TIMER2_COMPA = 7 // Timer/Counter2 Compare Match A
IRQ_TIMER2_COMPB = 8 // Timer/Counter2 Compare Match A
IRQ_TIMER2_OVF = 9 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 10 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 11 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 12 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 13 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 14 // TimerCounter0 Compare Match A
IRQ_TIMER0_COMPB = 15 // TimerCounter0 Compare Match B
IRQ_TIMER0_OVF = 16 // Timer/Couner0 Overflow
IRQ_SPI_STC = 17 // SPI Serial Transfer Complete
IRQ_USART_RX = 18 // USART Rx Complete
IRQ_USART_UDRE = 19 // USART, Data Register Empty
IRQ_USART_TX = 20 // USART Tx Complete
IRQ_ADC = 21 // ADC Conversion Complete
IRQ_EE_READY = 22 // EEPROM Ready
IRQ_ANALOG_COMP = 23 // Analog Comparator
IRQ_TWI = 24 // Two-wire Serial Interface
IRQ_SPM_Ready = 25 // Store Program Memory Read
IRQ_USART_START = 26 // USART Start Edge Interrupt
IRQ_max = 26 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Device ID
DEVICEID = struct {
DEVID0 __reg
DEVID1 __reg
DEVID2 __reg
DEVID3 __reg
DEVID4 __reg
DEVID5 __reg
DEVID6 __reg
DEVID7 __reg
DEVID8 __reg
}{
DEVID0: 0xf0,
DEVID1: 0xf1,
DEVID2: 0xf2,
DEVID3: 0xf3,
DEVID4: 0xf4,
DEVID5: 0xf5,
DEVID6: 0xf6,
DEVID7: 0xf7,
DEVID8: 0xf8,
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UCSR0D __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UCSR0D: 0xc3, // USART Control and Status Register D
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// Two Wire Serial Interface
TWI = struct {
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// Timer/Counter, 16-bit
TC16 = struct {
TIMSK1 __reg
TIFR1 __reg
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TIMSK2 __reg
TIFR2 __reg
TCCR2A __reg
TCCR2B __reg
TCNT2 __reg
OCR2B __reg
OCR2A __reg
ASSR __reg
}{
TIMSK2: 0x70, // Timer/Counter Interrupt Mask register
TIFR2: 0x37, // Timer/Counter Interrupt Flag Register
TCCR2A: 0xb0, // Timer/Counter2 Control Register A
TCCR2B: 0xb1, // Timer/Counter2 Control Register B
TCNT2: 0xb2, // Timer/Counter2
OCR2B: 0xb4, // Timer/Counter2 Output Compare Register B
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register A
ASSR: 0xb6, // Asynchronous Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCL __reg
ADCH __reg
ADCSRA __reg
ADCSRB __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
ADCSRA: 0x7a, // The ADC Control and Status register A
ADCSRB: 0x7b, // The ADC Control and Status register B
DIDR0: 0x7e, // Digital Input Disable Register
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
ACSRB __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
ACSRB: 0x4f, // Analog Comparator Status Register B
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Port E Data Register
DDRE: 0x2d, // Port E Data Direction Register
PINE: 0x2c, // Port E Input Pins
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCMSK2 __reg
PCMSK1 __reg
PCMSK0 __reg
PCIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCMSK2: 0x6d, // Pin Change Mask Register 2
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x4e, // SPI Data Register
SPSR: 0x4d, // SPI Status Register
SPCR: 0x4c, // SPI Control Register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
PRR __reg
OSCCAL __reg
CLKPR __reg
SREG __reg
SPL __reg
SPH __reg
SPMCSR __reg
MCUCR __reg
MCUSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
PRR: 0x64, // Power Reduction Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
SPMCSR: 0x57, // Store Program Memory Control and Status Register
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose I/O Register 2
GPIOR1: 0x4a, // General Purpose I/O Register 1
GPIOR0: 0x3e, // General Purpose I/O Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BOOTSZ = 0x6 // Select boot size
EXTENDED_BOOTRST = 0x1 // Boot Reset vector Enabled
// HIGH
HIGH_RSTDISBL = 0x80 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_DWEN = 0x40 // Debug Wire enable
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watch-dog Timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BODLEVEL = 0x7 // Brown-out Detector trigger level
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTB0
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmitt Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data overRun
UCSR0A_UPE0 = 0x4 // Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART transmission speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0xc0 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UCSR0D: USART Control and Status Register D
UCSR0D_RXSIE = 0x80 // RX Start Interrupt Enable
UCSR0D_RXS = 0x40 // RX Start
UCSR0D_SFDE = 0x20 // Start Frame Detection Enable
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output CompareB Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output CompareA Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter1 Control Register C
TCCR1C_FOC1A = 0x80
TCCR1C_FOC1B = 0x40
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TIMSK2: Timer/Counter Interrupt Mask register
TIMSK2_OCIE2B = 0x4 // Timer/Counter2 Output Compare Match B Interrupt Enable
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match A Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter Interrupt Flag Register
TIFR2_OCF2B = 0x4 // Output Compare Flag 2B
TIFR2_OCF2A = 0x2 // Output Compare Flag 2A
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// TCCR2A: Timer/Counter2 Control Register A
TCCR2A_COM2A = 0xc0 // Compare Output Mode bits
TCCR2A_COM2B = 0x30 // Compare Output Mode bits
TCCR2A_WGM2 = 0x3 // Waveform Genration Mode
// TCCR2B: Timer/Counter2 Control Register B
TCCR2B_FOC2A = 0x80 // Force Output Compare A
TCCR2B_FOC2B = 0x40 // Force Output Compare B
TCCR2B_WGM22 = 0x8 // Waveform Generation Mode
TCCR2B_CS2 = 0x7 // Clock Select bits
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x40 // Enable External Clock Input
ASSR_AS2 = 0x20 // Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x10 // Timer/Counter2 Update Busy
ASSR_OCR2AUB = 0x8 // Output Compare Register2 Update Busy
ASSR_OCR2BUB = 0x4 // Output Compare Register 2 Update Busy
ASSR_TCR2AUB = 0x2 // Timer/Counter Control Register2 Update Busy
ASSR_TCR2BUB = 0x1 // Timer/Counter Control Register2 Update Busy
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0xf // Analog Channel Selection Bits
// ADCSRA: The ADC Control and Status register A
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCSRB: The ADC Control and Status register B
ADCSRB_ACME = 0x40
ADCSRB_ADTS = 0x7 // ADC Auto Trigger Source bits
// DIDR0: Digital Input Disable Register
DIDR0_ADC5D = 0x20
DIDR0_ADC4D = 0x10
DIDR0_ADC3D = 0x8
DIDR0_ADC2D = 0x4
DIDR0_ADC1D = 0x2
DIDR0_ADC0D = 0x1
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
// ACSRB: Analog Comparator Status Register B
ACSRB_ACOE = 0x1 // Analog Comparator Output Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x3 // External Interrupt Request 1 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x3 // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x7 // Pin Change Interrupt Enables
// PCMSK2: Pin Change Mask Register 2
PCMSK2_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x7f // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x7 // Pin Change Interrupt Flags
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// PRR: Power Reduction Register
PRR_PRTWI = 0x80 // Power Reduction TWI
PRR_PRTIM2 = 0x40 // Power Reduction Timer/Counter2
PRR_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read-While-Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory
// MCUCR: MCU Control Register
MCUCR_BODS = 0x40 // BOD Sleep
MCUCR_BODSE = 0x20 // BOD Sleep Enable
MCUCR_PUD = 0x10
MCUCR_IVSEL = 0x2
MCUCR_IVCE = 0x1
// MCUSR: MCU Status Register
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select Bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega168PB.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 27;

Просмотреть файл

@ -1,679 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega169A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega169a
// Device information for the ATmega169A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega169A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_LCD = 22 // LCD Start of Frame
IRQ_max = 22 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Liquid Crystal Display
LCD = struct {
LCDCRA __reg
LCDCRB __reg
LCDFRR __reg
LCDCCR __reg
LCDDR18 __reg
LCDDR17 __reg
LCDDR16 __reg
LCDDR15 __reg
LCDDR13 __reg
LCDDR12 __reg
LCDDR11 __reg
LCDDR10 __reg
LCDDR8 __reg
LCDDR7 __reg
LCDDR6 __reg
LCDDR5 __reg
LCDDR3 __reg
LCDDR2 __reg
LCDDR1 __reg
LCDDR0 __reg
}{
LCDCRA: 0xe4, // LCD Control Register A
LCDCRB: 0xe5, // LCD Control and Status Register B
LCDFRR: 0xe6, // LCD Frame Rate Register
LCDCCR: 0xe7, // LCD Contrast Control Register
LCDDR18: 0xfe, // LCD Data Register 18
LCDDR17: 0xfd, // LCD Data Register 17
LCDDR16: 0xfc, // LCD Data Register 16
LCDDR15: 0xfb, // LCD Data Register 15
LCDDR13: 0xf9, // LCD Data Register 13
LCDDR12: 0xf8, // LCD Data Register 12
LCDDR11: 0xf7, // LCD Data Register 11
LCDDR10: 0xf6, // LCD Data Register 10
LCDDR8: 0xf4, // LCD Data Register 8
LCDDR7: 0xf3, // LCD Data Register 7
LCDDR6: 0xf2, // LCD Data Register 6
LCDDR5: 0xf1, // LCD Data Register 5
LCDDR3: 0xef, // LCD Data Register 3
LCDDR2: 0xee, // LCD Data Register 2
LCDDR1: 0xed, // LCD Data Register 1
LCDDR0: 0xec, // LCD Data Register 0
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for LCD: Liquid Crystal Display
const (
// LCDCRA: LCD Control Register A
LCDCRA_LCDEN = 0x80 // LCD Enable
LCDCRA_LCDAB = 0x40 // LCD A or B waveform
LCDCRA_LCDIF = 0x10 // LCD Interrupt Flag
LCDCRA_LCDIE = 0x8 // LCD Interrupt Enable
LCDCRA_LCDBD = 0x4 // LCD Buffer Disable
LCDCRA_LCDCCD = 0x2 // LCD Contrast Control Disable
LCDCRA_LCDBL = 0x1 // LCD Blanking
// LCDCRB: LCD Control and Status Register B
LCDCRB_LCDCS = 0x80 // LCD CLock Select
LCDCRB_LCD2B = 0x40 // LCD 1/2 Bias Select
LCDCRB_LCDMUX = 0x30 // LCD Mux Selects
LCDCRB_LCDPM = 0x7 // LCD Port Masks
// LCDFRR: LCD Frame Rate Register
LCDFRR_LCDPS = 0x70 // LCD Prescaler Selects
LCDFRR_LCDCD = 0x7 // LCD Clock Dividers
// LCDCCR: LCD Contrast Control Register
LCDCCR_LCDDC = 0xe0 // LCD Display Configuration Bits
LCDCCR_LCDMDT = 0x10 // LCD Maximum Drive Time
LCDCCR_LCDCC = 0xf // LCD Contrast Controls
)
// Bitfields for USI: Universal Serial Interface
const (
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0x30 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0x30 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRLCD = 0x10 // Power Reduction LCD
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega169A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 23;

Просмотреть файл

@ -1,679 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega169P.atdf, see http://packs.download.atmel.com/
// +build avr,atmega169p
// Device information for the ATmega169P.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega169P"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_LCD = 22 // LCD Start of Frame
IRQ_max = 22 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Liquid Crystal Display
LCD = struct {
LCDCRA __reg
LCDCRB __reg
LCDFRR __reg
LCDCCR __reg
LCDDR18 __reg
LCDDR17 __reg
LCDDR16 __reg
LCDDR15 __reg
LCDDR13 __reg
LCDDR12 __reg
LCDDR11 __reg
LCDDR10 __reg
LCDDR8 __reg
LCDDR7 __reg
LCDDR6 __reg
LCDDR5 __reg
LCDDR3 __reg
LCDDR2 __reg
LCDDR1 __reg
LCDDR0 __reg
}{
LCDCRA: 0xe4, // LCD Control Register A
LCDCRB: 0xe5, // LCD Control and Status Register B
LCDFRR: 0xe6, // LCD Frame Rate Register
LCDCCR: 0xe7, // LCD Contrast Control Register
LCDDR18: 0xfe, // LCD Data Register 18
LCDDR17: 0xfd, // LCD Data Register 17
LCDDR16: 0xfc, // LCD Data Register 16
LCDDR15: 0xfb, // LCD Data Register 15
LCDDR13: 0xf9, // LCD Data Register 13
LCDDR12: 0xf8, // LCD Data Register 12
LCDDR11: 0xf7, // LCD Data Register 11
LCDDR10: 0xf6, // LCD Data Register 10
LCDDR8: 0xf4, // LCD Data Register 8
LCDDR7: 0xf3, // LCD Data Register 7
LCDDR6: 0xf2, // LCD Data Register 6
LCDDR5: 0xf1, // LCD Data Register 5
LCDDR3: 0xef, // LCD Data Register 3
LCDDR2: 0xee, // LCD Data Register 2
LCDDR1: 0xed, // LCD Data Register 1
LCDDR0: 0xec, // LCD Data Register 0
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for LCD: Liquid Crystal Display
const (
// LCDCRA: LCD Control Register A
LCDCRA_LCDEN = 0x80 // LCD Enable
LCDCRA_LCDAB = 0x40 // LCD A or B waveform
LCDCRA_LCDIF = 0x10 // LCD Interrupt Flag
LCDCRA_LCDIE = 0x8 // LCD Interrupt Enable
LCDCRA_LCDBD = 0x4 // LCD Buffer Disable
LCDCRA_LCDCCD = 0x2 // LCD Contrast Control Disable
LCDCRA_LCDBL = 0x1 // LCD Blanking
// LCDCRB: LCD Control and Status Register B
LCDCRB_LCDCS = 0x80 // LCD CLock Select
LCDCRB_LCD2B = 0x40 // LCD 1/2 Bias Select
LCDCRB_LCDMUX = 0x30 // LCD Mux Selects
LCDCRB_LCDPM = 0x7 // LCD Port Masks
// LCDFRR: LCD Frame Rate Register
LCDFRR_LCDPS = 0x70 // LCD Prescaler Selects
LCDFRR_LCDCD = 0x7 // LCD Clock Dividers
// LCDCCR: LCD Contrast Control Register
LCDCCR_LCDDC = 0xe0 // LCD Display Configuration Bits
LCDCCR_LCDMDT = 0x10 // LCD Maximum Drive Time
LCDCCR_LCDCC = 0xf // LCD Contrast Controls
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0xc0 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0xc0 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for USI: Universal Serial Interface
const (
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRLCD = 0x10 // Power Reduction LCD
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega169P.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 23;

Просмотреть файл

@ -1,747 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega169PA.atdf, see http://packs.download.atmel.com/
// +build avr,atmega169pa
// Device information for the ATmega169PA.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega169PA"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_PCINT0 = 2 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 3 // Pin Change Interrupt Request 1
IRQ_TIMER2_COMP = 4 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 5 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 6 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 7 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 8 // Timer/Counter Compare Match B
IRQ_TIMER1_OVF = 9 // Timer/Counter1 Overflow
IRQ_TIMER0_COMP = 10 // Timer/Counter0 Compare Match
IRQ_TIMER0_OVF = 11 // Timer/Counter0 Overflow
IRQ_SPI_STC = 12 // SPI Serial Transfer Complete
IRQ_USART0_RX = 13 // USART0, Rx Complete
IRQ_USART0_UDRE = 14 // USART0 Data register Empty
IRQ_USART0_TX = 15 // USART0, Tx Complete
IRQ_USI_START = 16 // USI Start Condition
IRQ_USI_OVERFLOW = 17 // USI Overflow
IRQ_ANALOG_COMP = 18 // Analog Comparator
IRQ_ADC = 19 // ADC Conversion Complete
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_SPM_READY = 21 // Store Program Memory Read
IRQ_LCD = 22 // LCD Start of Frame
IRQ_max = 22 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0A __reg
TCNT0 __reg
OCR0A __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCNT0: 0x46, // Timer/Counter0
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2A __reg
TCNT2 __reg
OCR2A __reg
TIMSK2 __reg
TIFR2 __reg
ASSR __reg
}{
TCCR2A: 0xb0, // Timer/Counter2 Control Register
TCNT2: 0xb2, // Timer/Counter2
OCR2A: 0xb3, // Timer/Counter2 Output Compare Register
TIMSK2: 0x70, // Timer/Counter2 Interrupt Mask register
TIFR2: 0x37, // Timer/Counter2 Interrupt Flag Register
ASSR: 0xb6, // Asynchronous Status Register
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x60, // Watchdog Timer Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Bytes
EEARH: 0x41, // EEPROM Address Register Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTE __reg
DDRE __reg
PINE __reg
PORTF __reg
DDRF __reg
PINF __reg
PORTG __reg
DDRG __reg
PING __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTE: 0x2e, // Data Register, Port E
DDRE: 0x2d, // Data Direction Register, Port E
PINE: 0x2c, // Input Pins, Port E
PORTF: 0x31, // Data Register, Port F
DDRF: 0x30, // Data Direction Register, Port F
PINF: 0x2f, // Input Pins, Port F
PORTG: 0x34, // Port G Data Register
DDRG: 0x33, // Port G Data Direction Register
PING: 0x32, // Port G Input Pins
}
// Analog Comparator
AC = struct {
ACSR __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
DIDR1: 0x7f, // Digital Input Disable Register 1
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Liquid Crystal Display
LCD = struct {
LCDCRA __reg
LCDCRB __reg
LCDFRR __reg
LCDCCR __reg
LCDDR18 __reg
LCDDR17 __reg
LCDDR16 __reg
LCDDR15 __reg
LCDDR13 __reg
LCDDR12 __reg
LCDDR11 __reg
LCDDR10 __reg
LCDDR8 __reg
LCDDR7 __reg
LCDDR6 __reg
LCDDR5 __reg
LCDDR3 __reg
LCDDR2 __reg
LCDDR1 __reg
LCDDR0 __reg
}{
LCDCRA: 0xe4, // LCD Control Register A
LCDCRB: 0xe5, // LCD Control and Status Register B
LCDFRR: 0xe6, // LCD Frame Rate Register
LCDCCR: 0xe7, // LCD Contrast Control Register
LCDDR18: 0xfe, // LCD Data Register 18
LCDDR17: 0xfd, // LCD Data Register 17
LCDDR16: 0xfc, // LCD Data Register 16
LCDDR15: 0xfb, // LCD Data Register 15
LCDDR13: 0xf9, // LCD Data Register 13
LCDDR12: 0xf8, // LCD Data Register 12
LCDDR11: 0xf7, // LCD Data Register 11
LCDDR10: 0xf6, // LCD Data Register 10
LCDDR8: 0xf4, // LCD Data Register 8
LCDDR7: 0xf3, // LCD Data Register 7
LCDDR6: 0xf2, // LCD Data Register 6
LCDDR5: 0xf1, // LCD Data Register 5
LCDDR3: 0xef, // LCD Data Register 3
LCDDR2: 0xee, // LCD Data Register 2
LCDDR1: 0xed, // LCD Data Register 1
LCDDR0: 0xec, // LCD Data Register 0
}
// Universal Serial Interface
USI = struct {
USIDR __reg
USISR __reg
USICR __reg
}{
USIDR: 0xba, // USI Data Register
USISR: 0xb9, // USI Status Register
USICR: 0xb8, // USI Control Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
DIDR0 __reg
}{
ADMUX: 0x7c, // The ADC multiplexer Selection Register
ADCSRA: 0x7a, // The ADC Control and Status register
ADCL: 0x78, // ADC Data Register Bytes
ADCH: 0x78, // ADC Data Register Bytes
DIDR0: 0x7e, // Digital Input Disable Register 0
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// USART
USART = struct {
UDR0 __reg
UCSR0A __reg
UCSR0B __reg
UCSR0C __reg
UBRR0L __reg
UBRR0H __reg
}{
UDR0: 0xc6, // USART I/O Data Register
UCSR0A: 0xc0, // USART Control and Status Register A
UCSR0B: 0xc1, // USART Control and Status Register B
UCSR0C: 0xc2, // USART Control and Status Register C
UBRR0L: 0xc4, // USART Baud Rate Register Bytes
UBRR0H: 0xc4, // USART Baud Rate Register Bytes
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCMSK0: 0x6b, // Pin Change Mask Register 0
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
CLKPR __reg
PRR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61, // Clock Prescale Register
PRR: 0x64, // Power Reduction Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0xe // Brown-out Detector trigger level
EXTENDED_RSTDISBL = 0x1 // Disable external reset
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTE7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_FOC0A = 0x80 // Force Output Compare
TCCR0A_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0A_COM0A = 0x30 // Compare Match Output Modes
TCCR0A_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0A_CS0 = 0x7 // Clock Selects
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer/Counter0 bits
// OCR0A: Timer/Counter0 Output Compare Register
OCR0A_OCR0A = 0xff // Timer/Counter0 Output Compare A
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1 bits
// OCR1AL: Timer/Counter1 Output Compare Register A Bytes
// OCR1AH: Timer/Counter1 Output Compare Register A Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A
// OCR1BL: Timer/Counter1 Output Compare Register B Bytes
// OCR1BH: Timer/Counter1 Output Compare Register B Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2A: Timer/Counter2 Control Register
TCCR2A_FOC2A = 0x80 // Force Output Compare A
TCCR2A_WGM20 = 0x40 // Waveform Generation Mode
TCCR2A_COM2A = 0x30 // Compare Output Mode bits
TCCR2A_WGM21 = 0x8 // Waveform Generation Mode
TCCR2A_CS2 = 0x7 // Clock Select bits
// TCNT2: Timer/Counter2
TCNT2_TCNT2 = 0xff // Timer/Counter2 bits
// OCR2A: Timer/Counter2 Output Compare Register
OCR2A_OCR2A = 0xff // Timer/Counter2 Output Compare A
// TIMSK2: Timer/Counter2 Interrupt Mask register
TIMSK2_OCIE2A = 0x2 // Timer/Counter2 Output Compare Match Interrupt Enable
TIMSK2_TOIE2 = 0x1 // Timer/Counter2 Overflow Interrupt Enable
// TIFR2: Timer/Counter2 Interrupt Flag Register
TIFR2_OCF2A = 0x2 // Timer/Counter2 Output Compare Flag 2
TIFR2_TOV2 = 0x1 // Timer/Counter2 Overflow Flag
// ASSR: Asynchronous Status Register
ASSR_EXCLK = 0x10 // Enable External Clock Interrupt
ASSR_AS2 = 0x8 // AS2: Asynchronous Timer/Counter2
ASSR_TCN2UB = 0x4 // TCN2UB: Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // TCR2UB: Timer/Counter Control Register2 Update Busy
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDCE = 0x10 // Watchdog Change Enable
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Address Register Bytes
// EEARH: EEPROM Address Register Bytes
EEAR_EEAR = 0x1ff // EEPROM Address Bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data Bits
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPDR = 0xff // SPI Data bits
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// DIDR1: Digital Input Disable Register 1
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)
// Bitfields for LCD: Liquid Crystal Display
const (
// LCDCRA: LCD Control Register A
LCDCRA_LCDEN = 0x80 // LCD Enable
LCDCRA_LCDAB = 0x40 // LCD A or B waveform
LCDCRA_LCDIF = 0x10 // LCD Interrupt Flag
LCDCRA_LCDIE = 0x8 // LCD Interrupt Enable
LCDCRA_LCDBD = 0x4 // LCD Buffer Disable
LCDCRA_LCDCCD = 0x2 // LCD Contrast Control Disable
LCDCRA_LCDBL = 0x1 // LCD Blanking
// LCDCRB: LCD Control and Status Register B
LCDCRB_LCDCS = 0x80 // LCD CLock Select
LCDCRB_LCD2B = 0x40 // LCD 1/2 Bias Select
LCDCRB_LCDMUX = 0x30 // LCD Mux Selects
LCDCRB_LCDPM = 0x7 // LCD Port Masks
// LCDFRR: LCD Frame Rate Register
LCDFRR_LCDPS = 0x70 // LCD Prescaler Selects
LCDFRR_LCDCD = 0x7 // LCD Clock Dividers
// LCDCCR: LCD Contrast Control Register
LCDCCR_LCDDC = 0xe0 // LCD Display Configuration Bits
LCDCCR_LCDMDT = 0x10 // LCD Maximum Drive Time
LCDCCR_LCDCC = 0xf // LCD Contrast Controls
)
// Bitfields for USI: Universal Serial Interface
const (
// USIDR: USI Data Register
USIDR_USIDR = 0xff // USI Data bits
// USISR: USI Status Register
USISR_USISIF = 0x80 // Start Condition Interrupt Flag
USISR_USIOIF = 0x40 // Counter Overflow Interrupt Flag
USISR_USIPF = 0x20 // Stop Condition Flag
USISR_USIDC = 0x10 // Data Output Collision
USISR_USICNT = 0xf // USI Counter Value Bits
// USICR: USI Control Register
USICR_USISIE = 0x80 // Start Condition Interrupt Enable
USICR_USIOIE = 0x40 // Counter Overflow Interrupt Enable
USICR_USIWM = 0x30 // USI Wire Mode Bits
USICR_USICS = 0xc // USI Clock Source Select Bits
USICR_USICLK = 0x2 // Clock Strobe
USICR_USITC = 0x1 // Toggle Clock Port Pin
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger Enable
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCL: ADC Data Register Bytes
// ADCH: ADC Data Register Bytes
ADC_ADC = 0x3ff // ADC Data Bits
// DIDR0: Digital Input Disable Register 0
DIDR0_ADC7D = 0x80 // ADC7 Digital input Disable
DIDR0_ADC6D = 0x40 // ADC6 Digital input Disable
DIDR0_ADC5D = 0x20 // ADC5 Digital input Disable
DIDR0_ADC4D = 0x10 // ADC4 Digital input Disable
DIDR0_ADC3D = 0x8 // ADC3 Digital input Disable
DIDR0_ADC2D = 0x4 // ADC2 Digital input Disable
DIDR0_ADC1D = 0x2 // ADC1 Digital input Disable
DIDR0_ADC0D = 0x1 // ADC0 Digital input Disable
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for USART: USART
const (
// UDR0: USART I/O Data Register
UDR0_UDR0 = 0xff // USART I/O Data bits
// UCSR0A: USART Control and Status Register A
UCSR0A_RXC0 = 0x80 // USART Receive Complete
UCSR0A_TXC0 = 0x40 // USART Transmit Complete
UCSR0A_UDRE0 = 0x20 // USART Data Register Empty
UCSR0A_FE0 = 0x10 // Framing Error
UCSR0A_DOR0 = 0x8 // Data OverRun
UCSR0A_UPE0 = 0x4 // USART Parity Error
UCSR0A_U2X0 = 0x2 // Double the USART Transmission Speed
UCSR0A_MPCM0 = 0x1 // Multi-processor Communication Mode
// UCSR0B: USART Control and Status Register B
UCSR0B_RXCIE0 = 0x80 // RX Complete Interrupt Enable
UCSR0B_TXCIE0 = 0x40 // TX Complete Interrupt Enable
UCSR0B_UDRIE0 = 0x20 // USART Data Register Empty Interrupt Enable
UCSR0B_RXEN0 = 0x10 // Receiver Enable
UCSR0B_TXEN0 = 0x8 // Transmitter Enable
UCSR0B_UCSZ02 = 0x4 // Character Size
UCSR0B_RXB80 = 0x2 // Receive Data Bit 8
UCSR0B_TXB80 = 0x1 // Transmit Data Bit 8
// UCSR0C: USART Control and Status Register C
UCSR0C_UMSEL0 = 0x40 // USART Mode Select
UCSR0C_UPM0 = 0x30 // Parity Mode Bits
UCSR0C_USBS0 = 0x8 // Stop Bit Select
UCSR0C_UCSZ0 = 0x6 // Character Size
UCSR0C_UCPOL0 = 0x1 // Clock Polarity
// UBRR0L: USART Baud Rate Register Bytes
// UBRR0H: USART Baud Rate Register Bytes
UBRR0_UBRR0 = 0xfff // USART Baud Rate bits
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC01 = 0x2 // External Interrupt Sense Control 0 Bit 1
EICRA_ISC00 = 0x1 // External Interrupt Sense Control 0 Bit 0
// EIMSK: External Interrupt Mask Register
EIMSK_PCIE = 0x30 // Pin Change Interrupt Enables
EIMSK_INT0 = 0x1 // External Interrupt Request 0 Enable
// EIFR: External Interrupt Flag Register
EIFR_PCIF = 0x30 // Pin Change Interrupt Flags
EIFR_INTF0 = 0x1 // External Interrupt Flag 0
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Masks
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0xf // Clock Prescaler Select Bits
// PRR: Power Reduction Register
PRR_PRLCD = 0x10 // Power Reduction LCD
PRR_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
PRR_PRUSART0 = 0x2 // Power Reduction USART
PRR_PRADC = 0x1 // Power Reduction ADC
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR2 = 0xff // General Purpose Bits
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR1 = 0xff // General Purpose Bits
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR0 = 0xff // General Purpose Bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega169PA.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 23;

Просмотреть файл

@ -1,553 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16A.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16a
// Device information for the ATmega16A.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16A"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset, Watchdog Reset and JTAG AVR Reset
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_TIMER2_COMP = 3 // Timer/Counter2 Compare Match
IRQ_TIMER2_OVF = 4 // Timer/Counter2 Overflow
IRQ_TIMER1_CAPT = 5 // Timer/Counter1 Capture Event
IRQ_TIMER1_COMPA = 6 // Timer/Counter1 Compare Match A
IRQ_TIMER1_COMPB = 7 // Timer/Counter1 Compare Match B
IRQ_TIMER1_OVF = 8 // Timer/Counter1 Overflow
IRQ_TIMER0_OVF = 9 // Timer/Counter0 Overflow
IRQ_SPI_STC = 10 // Serial Transfer Complete
IRQ_USART_RXC = 11 // USART, Rx Complete
IRQ_USART_UDRE = 12 // USART Data Register Empty
IRQ_USART_TXC = 13 // USART, Tx Complete
IRQ_ADC = 14 // ADC Conversion Complete
IRQ_EE_RDY = 15 // EEPROM Ready
IRQ_ANA_COMP = 16 // Analog Comparator
IRQ_TWI = 17 // 2-wire Serial Interface
IRQ_INT2 = 18 // External Interrupt Request 2
IRQ_TIMER0_COMP = 19 // Timer/Counter0 Compare Match
IRQ_SPM_RDY = 20 // Store Program Memory Ready
IRQ_max = 20 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
HIGH __reg
LOW __reg
}{
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Timer/Counter, 8-bit
TC8 = struct {
TCCR0 __reg
TCNT0 __reg
OCR0 __reg
}{
TCCR0: 0x53, // Timer/Counter Control Register
TCNT0: 0x52, // Timer/Counter 0 Register
OCR0: 0x5c, // Output Compare 0 Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
ICR1L __reg
ICR1H __reg
}{
TCCR1A: 0x4f, // Timer/Counter1 Control Register A
TCCR1B: 0x4e, // Timer/Counter1 Control Register B
TCNT1L: 0x4c, // Timer/Counter1 Bytes
TCNT1H: 0x4c, // Timer/Counter1 Bytes
OCR1AL: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1AH: 0x4a, // Timer/Counter1 Output Compare Register Bytes
OCR1BL: 0x48, // Timer/Counter1 Output Compare Register Bytes
OCR1BH: 0x48, // Timer/Counter1 Output Compare Register Bytes
ICR1L: 0x46, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x46, // Timer/Counter1 Input Capture Register Bytes
}
// External Interrupts
EXINT = struct {
GICR __reg
GIFR __reg
}{
GICR: 0x5b, // General Interrupt Control Register
GIFR: 0x5a, // General Interrupt Flag Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x3e, // EEPROM Address Register Bytes
EEARH: 0x3e, // EEPROM Address Register Bytes
EEDR: 0x3d, // EEPROM Data Register
EECR: 0x3c, // EEPROM Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
OSCCAL __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
OSCCAL: 0x51, // Oscillator Calibration Value
}
// Timer/Counter, 8-bit Async
TC8_ASYNC = struct {
TCCR2 __reg
TCNT2 __reg
OCR2 __reg
ASSR __reg
}{
TCCR2: 0x45, // Timer/Counter2 Control Register
TCNT2: 0x44, // Timer/Counter2
OCR2: 0x43, // Timer/Counter2 Output Compare Register
ASSR: 0x42, // Asynchronous Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPDR __reg
SPSR __reg
SPCR __reg
}{
SPDR: 0x2f, // SPI Data Register
SPSR: 0x2e, // SPI Status Register
SPCR: 0x2d, // SPI Control Register
}
// USART
USART = struct {
UDR __reg
UCSRA __reg
UCSRB __reg
UCSRC __reg
UBRRL __reg
UBRRH __reg
}{
UDR: 0x2c, // USART I/O Data Register
UCSRA: 0x2b, // USART Control and Status Register A
UCSRB: 0x2a, // USART Control and Status Register B
UCSRC: 0x40, // USART Control and Status Register C
UBRRL: 0x3f, // USART Baud Rate Register
UBRRH: 0x3f, // USART Baud Rate Register
}
// Two Wire Serial Interface
TWI = struct {
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBR: 0x20, // TWI Bit Rate register
TWCR: 0x56, // TWI Control Register
TWSR: 0x21, // TWI Status Register
TWDR: 0x23, // TWI Data register
TWAR: 0x22, // TWI (Slave) Address register
}
// Analog Comparator
AC = struct {
ACSR __reg
}{
ACSR: 0x28, // Analog Comparator Control And Status Register
}
// Analog-to-Digital Converter
ADC = struct {
ADMUX __reg
ADCSRA __reg
ADCL __reg
ADCH __reg
}{
ADMUX: 0x27, // The ADC multiplexer Selection Register
ADCSRA: 0x26, // The ADC Control and Status register
ADCL: 0x24, // ADC Data Register Bytes
ADCH: 0x24, // ADC Data Register Bytes
}
// JTAG Interface
JTAG = struct {
OCDR __reg
}{
OCDR: 0x51, // On-Chip Debug Related Register in I/O Memory
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
DDRC __reg
PINC __reg
PORTD __reg
DDRD __reg
PIND __reg
}{
PORTA: 0x3b, // Port A Data Register
DDRA: 0x3a, // Port A Data Direction Register
PINA: 0x39, // Port A Input Pins
PORTB: 0x38, // Port B Data Register
DDRB: 0x37, // Port B Data Direction Register
PINB: 0x36, // Port B Input Pins
PORTC: 0x35, // Port C Data Register
DDRC: 0x34, // Port C Data Direction Register
PINC: 0x33, // Port C Input Pins
PORTD: 0x32, // Port D Data Register
DDRD: 0x31, // Port D Data Direction Register
PIND: 0x30, // Port D Input Pins
}
// Watchdog Timer
WDT = struct {
WDTCR __reg
}{
WDTCR: 0x41, // Watchdog Timer Control Register
}
)
// Bitfields for FUSE: Fuses
const (
// HIGH
HIGH_OCDEN = 0x80 // On-Chip Debug Enabled
HIGH_JTAGEN = 0x40 // JTAG Interface Enabled
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
HIGH_CKOPT = 0x10 // CKOPT fuse (operation dependent of CKSEL fuses)
// LOW
LOW_BODLEVEL = 0x80 // Brownout detector trigger level
LOW_BODEN = 0x40 // Brown-out detection enabled
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// TCCR0: Timer/Counter Control Register
TCCR0_FOC0 = 0x80 // Force Output Compare
TCCR0_WGM00 = 0x40 // Waveform Generation Mode 0
TCCR0_COM0 = 0x30 // Compare Match Output Modes
TCCR0_WGM01 = 0x8 // Waveform Generation Mode 1
TCCR0_CS0 = 0x7 // Clock Selects
// TCNT0: Timer/Counter 0 Register
TCNT0_TCNT0 = 0xff // Timer/Counter 0 bits
// OCR0: Output Compare 0 Register
OCR0_OCR0 = 0xff // Output Compare bits
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_FOC1A = 0x8 // Force Output Compare 1A
TCCR1A_FOC1B = 0x4 // Force Output Compare 1B
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1 bits
// OCR1AL: Timer/Counter1 Output Compare Register Bytes
// OCR1AH: Timer/Counter1 Output Compare Register Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A bits
// OCR1BL: Timer/Counter1 Output Compare Register Bytes
// OCR1BH: Timer/Counter1 Output Compare Register Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B bits
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture bits
)
// Bitfields for EXINT: External Interrupts
const (
// GICR: General Interrupt Control Register
GICR_INT0 = 0x40 // External Interrupt Request 0 Enable
GICR_INT1 = 0x80 // External Interrupt Request 1 Enable
GICR_INT2 = 0x20 // External Interrupt Request 2 Enable
GICR_IVSEL = 0x2 // Interrupt Vector Select
GICR_IVCE = 0x1 // Interrupt Vector Change Enable
// GIFR: General Interrupt Flag Register
GIFR_INTF = 0xc0 // External Interrupt Flags
GIFR_INTF2 = 0x20 // External Interrupt Flag 2
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Address Register Bytes
// EEARH: EEPROM Address Register Bytes
EEAR_EEAR = 0x1ff // EEPROM Address bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMWE = 0x4 // EEPROM Master Write Enable
EECR_EEWE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
)
// Bitfields for TC8_ASYNC: Timer/Counter, 8-bit Async
const (
// TCCR2: Timer/Counter2 Control Register
TCCR2_FOC2 = 0x80 // Force Output Compare
TCCR2_WGM20 = 0x40 // Waveform Genration Mode
TCCR2_COM2 = 0x30 // Compare Output Mode bits
TCCR2_WGM21 = 0x8 // Waveform Generation Mode
TCCR2_CS2 = 0x7 // Clock Select bits
// TCNT2: Timer/Counter2
TCNT2_TCNT2 = 0xff // Timer/Counter2
// OCR2: Timer/Counter2 Output Compare Register
OCR2_OCR2 = 0xff // Timer/Counter2 Output Compare bits
// ASSR: Asynchronous Status Register
ASSR_AS2 = 0x8 // Asynchronous Timer/counter2
ASSR_TCN2UB = 0x4 // Timer/Counter2 Update Busy
ASSR_OCR2UB = 0x2 // Output Compare Register2 Update Busy
ASSR_TCR2UB = 0x1 // Timer/counter Control Register2 Update Busy
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPDR: SPI Data Register
SPDR_SPDR = 0xff // SPI Data bits
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
)
// Bitfields for USART: USART
const (
// UDR: USART I/O Data Register
UDR_UDR = 0xff // USART I/O Data bits
// UCSRA: USART Control and Status Register A
UCSRA_RXC = 0x80 // USART Receive Complete
UCSRA_TXC = 0x40 // USART Transmitt Complete
UCSRA_UDRE = 0x20 // USART Data Register Empty
UCSRA_FE = 0x10 // Framing Error
UCSRA_DOR = 0x8 // Data overRun
UCSRA_UPE = 0x4 // Parity Error
UCSRA_U2X = 0x2 // Double the USART transmission speed
UCSRA_MPCM = 0x1 // Multi-processor Communication Mode
// UCSRB: USART Control and Status Register B
UCSRB_RXCIE = 0x80 // RX Complete Interrupt Enable
UCSRB_TXCIE = 0x40 // TX Complete Interrupt Enable
UCSRB_UDRIE = 0x20 // USART Data register Empty Interrupt Enable
UCSRB_RXEN = 0x10 // Receiver Enable
UCSRB_TXEN = 0x8 // Transmitter Enable
UCSRB_UCSZ2 = 0x4 // Character Size
UCSRB_RXB8 = 0x2 // Receive Data Bit 8
UCSRB_TXB8 = 0x1 // Transmit Data Bit 8
// UCSRC: USART Control and Status Register C
UCSRC_URSEL = 0x80 // Register Select
UCSRC_UMSEL = 0x40 // USART Mode Select
UCSRC_UPM = 0x30 // Parity Mode Bits
UCSRC_USBS = 0x8 // Stop Bit Select
UCSRC_UCSZ = 0x6 // Character Size
UCSRC_UCPOL = 0x1 // Clock Polarity
// UBRRL: USART Baud Rate Register
// UBRRH: USART Baud Rate Register
UBRR_UBRR = 0xfff // USART Baud Rate bits
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWBR: TWI Bit Rate register
TWBR_TWBR = 0xff // TWI Bit Rate bits
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWDR: TWI Data register
TWDR_TWD = 0xff // TWI Data bits
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// ADMUX: The ADC multiplexer Selection Register
ADMUX_REFS = 0xc0 // Reference Selection Bits
ADMUX_ADLAR = 0x20 // Left Adjust Result
ADMUX_MUX = 0x1f // Analog Channel and Gain Selection Bits
// ADCSRA: The ADC Control and Status register
ADCSRA_ADEN = 0x80 // ADC Enable
ADCSRA_ADSC = 0x40 // ADC Start Conversion
ADCSRA_ADATE = 0x20 // ADC Auto Trigger
ADCSRA_ADIF = 0x10 // ADC Interrupt Flag
ADCSRA_ADIE = 0x8 // ADC Interrupt Enable
ADCSRA_ADPS = 0x7 // ADC Prescaler Select Bits
// ADCL: ADC Data Register Bytes
// ADCH: ADC Data Register Bytes
ADC_ADC = 0x3ff // ADC Data Bits
)
// Bitfields for JTAG: JTAG Interface
const (
// OCDR: On-Chip Debug Related Register in I/O Memory
OCDR_OCDR = 0xff // On-Chip Debug Register Bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCR: Watchdog Timer Control Register
WDTCR_WDTOE = 0x10 // RW
WDTCR_WDE = 0x8 // Watch Dog Enable
WDTCR_WDP = 0x7 // Watch Dog Timer Prescaler bits
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16A.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 21;

Просмотреть файл

@ -1,560 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16HVA.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16hva
// Device information for the ATmega16HVA.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16HVA"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_BPINT = 1 // Battery Protection Interrupt
IRQ_VREGMON = 2 // Voltage regulator monitor interrupt
IRQ_INT0 = 3 // External Interrupt Request 0
IRQ_INT1 = 4 // External Interrupt Request 1
IRQ_INT2 = 5 // External Interrupt Request 2
IRQ_WDT = 6 // Watchdog Timeout Interrupt
IRQ_TIMER1_IC = 7 // Timer 1 Input capture
IRQ_TIMER1_COMPA = 8 // Timer 1 Compare Match A
IRQ_TIMER1_COMPB = 9 // Timer 1 Compare Match B
IRQ_TIMER1_OVF = 10 // Timer 1 overflow
IRQ_TIMER0_IC = 11 // Timer 0 Input Capture
IRQ_TIMER0_COMPA = 12 // Timer 0 Comapre Match A
IRQ_TIMER0_COMPB = 13 // Timer 0 Compare Match B
IRQ_TIMER0_OVF = 14 // Timer 0 Overflow
IRQ_SPI_STC = 15 // SPI Serial transfer complete
IRQ_VADC = 16 // Voltage ADC Conversion Complete
IRQ_CCADC_CONV = 17 // Coulomb Counter ADC Conversion Complete
IRQ_CCADC_REG_CUR = 18 // Coloumb Counter ADC Regular Current
IRQ_CCADC_ACC = 19 // Coloumb Counter ADC Accumulator
IRQ_EE_READY = 20 // EEPROM Ready
IRQ_max = 20 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
LOW __reg
}{
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog-to-Digital Converter
ADC = struct {
VADMUX __reg
VADCL __reg
VADCH __reg
VADCSR __reg
}{
VADMUX: 0x7c, // The VADC multiplexer Selection Register
VADCL: 0x78, // VADC Data Register Bytes
VADCH: 0x78, // VADC Data Register Bytes
VADCSR: 0x7a, // The VADC Control and Status register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// Bandgap
BANDGAP = struct {
BGCRR __reg
BGCCR __reg
}{
BGCRR: 0xd1, // Bandgap Calibration of Resistor Ladder
BGCCR: 0xd0, // Bandgap Calibration Register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
}
// I/O Port
PORT = struct {
PORTC __reg
PINC __reg
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
}{
PORTC: 0x28, // Port C Data Register
PINC: 0x26, // Port C Input Pins
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Data Register, Port B
DDRB: 0x24, // Data Direction Register, Port B
PINB: 0x23, // Input Pins, Port B
}
// FET Control
FET = struct {
FCSR __reg
}{
FCSR: 0xf0, // FET Control and Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control and Status Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
FOSCCAL __reg
OSICSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
DIDR0 __reg
PRR0 __reg
CLKPR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
FOSCCAL: 0x66, // Fast Oscillator Calibration Value
OSICSR: 0x37, // Oscillator Sampling Interface Control and Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
DIDR0: 0x7e, // Digital Input Disable Register
PRR0: 0x64, // Power Reduction Register 0
CLKPR: 0x61, // Clock Prescale Register
}
// Battery Protection
BATTERY_PROTECTION = struct {
BPPLR __reg
BPCR __reg
BPHCTR __reg
BPOCTR __reg
BPSCTR __reg
BPCHCD __reg
BPDHCD __reg
BPCOCD __reg
BPDOCD __reg
BPSCD __reg
BPIFR __reg
BPIMSK __reg
}{
BPPLR: 0xfe, // Battery Protection Parameter Lock Register
BPCR: 0xfd, // Battery Protection Control Register
BPHCTR: 0xfc, // Battery Protection Short-current Timing Register
BPOCTR: 0xfb, // Battery Protection Over-current Timing Register
BPSCTR: 0xfa, // Battery Protection Short-current Timing Register
BPCHCD: 0xf9, // Battery Protection Charge-High-current Detection Level Register
BPDHCD: 0xf8, // Battery Protection Discharge-High-current Detection Level Register
BPCOCD: 0xf7, // Battery Protection Charge-Over-current Detection Level Register
BPDOCD: 0xf6, // Battery Protection Discharge-Over-current Detection Level Register
BPSCD: 0xf5, // Battery Protection Short-Circuit Detection Level Register
BPIFR: 0xf3, // Battery Protection Interrupt Flag Register
BPIMSK: 0xf2, // Battery Protection Interrupt Mask Register
}
// EEPROM
EEPROM = struct {
EEAR __reg
EEDR __reg
EECR __reg
}{
EEAR: 0x41, // EEPROM Read/Write Access
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1B __reg
TCCR1A __reg
TCNT1L __reg
TCNT1H __reg
OCR1A __reg
OCR1B __reg
TIMSK1 __reg
TIFR1 __reg
GTCCR __reg
TCCR0A __reg
TCCR0B __reg
TCNT0L __reg
TCNT0H __reg
OCR0A __reg
OCR0B __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1A: 0x80, // Timer/Counter 1 Control Register A
TCNT1L: 0x84, // Timer Counter 1 Bytes
TCNT1H: 0x84, // Timer Counter 1 Bytes
OCR1A: 0x88, // Output Compare Register 1A
OCR1B: 0x89, // Output Compare Register B
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
GTCCR: 0x43, // General Timer/Counter Control Register
TCCR0A: 0x44, // Timer/Counter0 Control Register
TCCR0B: 0x45, // Timer/Counter0 Control Register
TCNT0L: 0x46, // Timer Counter 0 Bytes
TCNT0H: 0x46, // Timer Counter 0 Bytes
OCR0A: 0x48, // Output compare Register A
OCR0B: 0x49, // Output compare Register B
TIMSK0: 0x6e, // Timer/Counter Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter Interrupt Flag register
}
// Coulomb Counter
COULOMB_COUNTER = struct {
CADCSRA __reg
CADCSRB __reg
CADICL __reg
CADICH __reg
CADAC3 __reg
CADAC2 __reg
CADAC1 __reg
CADAC0 __reg
CADRC __reg
}{
CADCSRA: 0xe4, // CC-ADC Control and Status Register A
CADCSRB: 0xe5, // CC-ADC Control and Status Register B
CADICL: 0xe8, // CC-ADC Instantaneous Current
CADICH: 0xe8, // CC-ADC Instantaneous Current
CADAC3: 0xe3, // ADC Accumulate Current
CADAC2: 0xe2, // ADC Accumulate Current
CADAC1: 0xe1, // ADC Accumulate Current
CADAC0: 0xe0, // ADC Accumulate Current
CADRC: 0xe6, // CC-ADC Regular Current
}
// Voltage Regulator
VOLTAGE_REGULATOR = struct {
ROCR __reg
}{
ROCR: 0xc8, // Regulator Operating Condition Register
}
)
// Bitfields for FUSE: Fuses
const (
// LOW
LOW_WDTON = 0x80 // Watch-dog Timer always on
LOW_EESAVE = 0x40 // Preserve EEPROM through the Chip Erase cycle
LOW_SPIEN = 0x20 // Serial program downloading (SPI) enabled
LOW_DWEN = 0x10 // Debug Wire enable
LOW_SELFPRGEN = 0x8 // Self Programming enable
LOW_SUT = 0x7 // Select start-up time
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// VADMUX: The VADC multiplexer Selection Register
VADMUX_VADMUX = 0xf // Analog Channel and Gain Selection Bits
// VADCSR: The VADC Control and Status register
VADCSR_VADEN = 0x8 // VADC Enable
VADCSR_VADSC = 0x4 // VADC Satrt Conversion
VADCSR_VADCCIF = 0x2 // VADC Conversion Complete Interrupt Flag
VADCSR_VADCCIE = 0x1 // VADC Conversion Complete Interrupt Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for BANDGAP: Bandgap
const (
// BGCRR: Bandgap Calibration of Resistor Ladder
BGCRR_BGCR = 0xff // Bandgap calibration bits
// BGCCR: Bandgap Calibration Register
BGCCR_BGD = 0x80 // Setting the BGD bit to one will disable the bandgap voltage reference. This bit must be cleared before enabling CC-ADC or V-ADC, and must remain unset while either ADC is enabled.
BGCCR_BGCC = 0x3f // BG Calibration of PTAT Current Bits
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC2 = 0x30 // External Interrupt Sense Control 2 Bits
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0x7 // External Interrupt Request 2 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0x7 // External Interrupt Flags
)
// Bitfields for FET: FET Control
const (
// FCSR: FET Control and Status Register
FCSR_DUVRD = 0x8 // Deep Under-Voltage Recovery Disable
FCSR_CPS = 0x4 // Current Protection Status
FCSR_DFE = 0x2 // Discharge FET Enable
FCSR_CFE = 0x1 // Charge FET Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_CTPB = 0x10 // Clear Temporary Page Buffer
SPMCSR_RFLB = 0x8 // Read Fuse and Lock Bits
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_CKOE = 0x20 // Clock Output Enable
MCUCR_PUD = 0x10 // Pull-up disable
// MCUSR: MCU Status Register
MCUSR_OCDRF = 0x10 // OCD Reset Flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BODRF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSICSR: Oscillator Sampling Interface Control and Status Register
OSICSR_OSISEL0 = 0x10 // Oscillator Sampling Interface Select 0
OSICSR_OSIST = 0x2 // Oscillator Sampling Interface Status
OSICSR_OSIEN = 0x1 // Oscillator Sampling Interface Enable
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// DIDR0: Digital Input Disable Register
DIDR0_PA1DID = 0x2 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
DIDR0_PA0DID = 0x1 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
// PRR0: Power Reduction Register 0
PRR0_PRVRM = 0x20 // Power Reduction Voltage Regulator Monitor
PRR0_PRSPI = 0x8 // Power reduction SPI
PRR0_PRTIM1 = 0x4 // Power Reduction Timer/Counter1
PRR0_PRTIM0 = 0x2 // Power Reduction Timer/Counter0
PRR0_PRVADC = 0x1 // Power Reduction V-ADC
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0x3 // Clock Prescaler Select Bits
)
// Bitfields for BATTERY_PROTECTION: Battery Protection
const (
// BPPLR: Battery Protection Parameter Lock Register
BPPLR_BPPLE = 0x2 // Battery Protection Parameter Lock Enable
BPPLR_BPPL = 0x1 // Battery Protection Parameter Lock
// BPCR: Battery Protection Control Register
BPCR_SCD = 0x10 // Short Circuit Protection Disabled
BPCR_DOCD = 0x8 // Discharge Over-current Protection Disabled
BPCR_COCD = 0x4 // Charge Over-current Protection Disabled
BPCR_DHCD = 0x2 // Discharge High-current Protection Disable
BPCR_CHCD = 0x1 // Charge High-current Protection Disable
// BPIFR: Battery Protection Interrupt Flag Register
BPIFR_SCIF = 0x10 // Short-circuit Protection Activated Interrupt Flag
BPIFR_DOCIF = 0x8 // Discharge Over-current Protection Activated Interrupt Flag
BPIFR_COCIF = 0x4 // Charge Over-current Protection Activated Interrupt Flag
BPIFR_DHCIF = 0x2 // Disharge High-current Protection Activated Interrupt
BPIFR_CHCIF = 0x1 // Charge High-current Protection Activated Interrupt
// BPIMSK: Battery Protection Interrupt Mask Register
BPIMSK_SCIE = 0x10 // Short-circuit Protection Activated Interrupt Enable
BPIMSK_DOCIE = 0x8 // Discharge Over-current Protection Activated Interrupt Enable
BPIMSK_COCIE = 0x4 // Charge Over-current Protection Activated Interrupt Enable
BPIMSK_DHCIE = 0x2 // Discharger High-current Protection Activated Interrupt
BPIMSK_CHCIE = 0x1 // Charger High-current Protection Activated Interrupt
)
// Bitfields for EEPROM: EEPROM
const (
// EECR: EEPROM Control Register
EECR_EEPM = 0x30
EECR_EERIE = 0x8 // EEProm Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_CS = 0x7 // Clock Select1 bis
// TCCR1A: Timer/Counter 1 Control Register A
TCCR1A_TCW1 = 0x80 // Timer/Counter Width
TCCR1A_ICEN1 = 0x40 // Input Capture Mode Enable
TCCR1A_ICNC1 = 0x20 // Input Capture Noise Canceler
TCCR1A_ICES1 = 0x10 // Input Capture Edge Select
TCCR1A_ICS1 = 0x8 // Input Capture Select
TCCR1A_WGM10 = 0x1 // Waveform Generation Mode
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x8 // Timer/Counter 1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare Flag B
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare Flag A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// GTCCR: General Timer/Counter Control Register
GTCCR_TSM = 0x80 // Timer/Counter Synchronization Mode
GTCCR_PSRSYNC = 0x1 // Prescaler Reset
// TCCR0A: Timer/Counter0 Control Register
TCCR0A_TCW0 = 0x80 // Timer/Counter Width
TCCR0A_ICEN0 = 0x40 // Input Capture Mode Enable
TCCR0A_ICNC0 = 0x20 // Input Capture Noise Canceler
TCCR0A_ICES0 = 0x10 // Input Capture Edge Select
TCCR0A_ICS0 = 0x8 // Input Capture Select
TCCR0A_WGM00 = 0x1 // Clock Select0 bit 0
// TCCR0B: Timer/Counter0 Control Register
TCCR0B_CS02 = 0x4 // Clock Select0 bit 2
TCCR0B_CS01 = 0x2 // Clock Select0 bit 1
TCCR0B_CS00 = 0x1 // Clock Select0 bit 0
// TIMSK0: Timer/Counter Interrupt Mask Register
TIMSK0_ICIE0 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK0_OCIE0B = 0x4 // Output Compare Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Output Compare Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Overflow Interrupt Enable
// TIFR0: Timer/Counter Interrupt Flag register
TIFR0_ICF0 = 0x8 // Timer/Counter Interrupt Flag Register
TIFR0_OCF0B = 0x4 // Output Compare Flag
TIFR0_OCF0A = 0x2 // Output Compare Flag
TIFR0_TOV0 = 0x1 // Overflow Flag
)
// Bitfields for COULOMB_COUNTER: Coulomb Counter
const (
// CADCSRA: CC-ADC Control and Status Register A
CADCSRA_CADEN = 0x80 // When the CADEN bit is cleared (zero), the CC-ADC is disabled. When the CADEN bit is set (one), the CC-ADC will continuously measure the voltage drop over the external sense resistor RSENSE. In Power-down, only the Regular Current detection is active. In Power-off, the CC-ADC is always disabled.
CADCSRA_CADPOL = 0x40
CADCSRA_CADUB = 0x20 // CC_ADC Update Busy
CADCSRA_CADAS = 0x18 // CC_ADC Accumulate Current Select Bits
CADCSRA_CADSI = 0x6 // The CADSI bits determine the current sampling interval for the Regular Current detection in Power-down mode. The actual settings remain to be determined.
CADCSRA_CADSE = 0x1 // When the CADSE bit is written to one, the ongoing CC-ADC conversion is aborted, and the CC-ADC enters Regular Current detection mode.
// CADCSRB: CC-ADC Control and Status Register B
CADCSRB_CADACIE = 0x40
CADCSRB_CADRCIE = 0x20 // Regular Current Interrupt Enable
CADCSRB_CADICIE = 0x10 // CAD Instantenous Current Interrupt Enable
CADCSRB_CADACIF = 0x4 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADRCIF = 0x2 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADICIF = 0x1 // CC-ADC Instantaneous Current Interrupt Flag
)
// Bitfields for VOLTAGE_REGULATOR: Voltage Regulator
const (
// ROCR: Regulator Operating Condition Register
ROCR_ROCS = 0x80 // ROC Status
ROCR_ROCWIF = 0x2 // ROC Warning Interrupt Flag
ROCR_ROCWIE = 0x1 // ROC Warning Interrupt Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16HVA.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x200;
__num_isrs = 21;

Просмотреть файл

@ -1,796 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16HVB.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16hvb
// Device information for the ATmega16HVB.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16HVB"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_BPINT = 1 // Battery Protection Interrupt
IRQ_VREGMON = 2 // Voltage regulator monitor interrupt
IRQ_INT0 = 3 // External Interrupt Request 0
IRQ_INT1 = 4 // External Interrupt Request 1
IRQ_INT2 = 5 // External Interrupt Request 2
IRQ_INT3 = 6 // External Interrupt Request 3
IRQ_PCINT0 = 7 // Pin Change Interrupt 0
IRQ_PCINT1 = 8 // Pin Change Interrupt 1
IRQ_WDT = 9 // Watchdog Timeout Interrupt
IRQ_BGSCD = 10 // Bandgap Buffer Short Circuit Detected
IRQ_CHDET = 11 // Charger Detect
IRQ_TIMER1_IC = 12 // Timer 1 Input capture
IRQ_TIMER1_COMPA = 13 // Timer 1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer 1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer 1 overflow
IRQ_TIMER0_IC = 16 // Timer 0 Input Capture
IRQ_TIMER0_COMPA = 17 // Timer 0 Comapre Match A
IRQ_TIMER0_COMPB = 18 // Timer 0 Compare Match B
IRQ_TIMER0_OVF = 19 // Timer 0 Overflow
IRQ_TWIBUSCD = 20 // Two-Wire Bus Connect/Disconnect
IRQ_TWI = 21 // Two-Wire Serial Interface
IRQ_SPI_STC = 22 // SPI Serial transfer complete
IRQ_VADC = 23 // Voltage ADC Conversion Complete
IRQ_CCADC_CONV = 24 // Coulomb Counter ADC Conversion Complete
IRQ_CCADC_REG_CUR = 25 // Coloumb Counter ADC Regular Current
IRQ_CCADC_ACC = 26 // Coloumb Counter ADC Accumulator
IRQ_EE_READY = 27 // EEPROM Ready
IRQ_SPM = 28 // SPM Ready
IRQ_max = 28 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
LOW __reg
HIGH __reg
}{
LOW: 0x0,
HIGH: 0x1,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog-to-Digital Converter
ADC = struct {
VADMUX __reg
VADCL __reg
VADCH __reg
VADCSR __reg
}{
VADMUX: 0x7c, // The VADC multiplexer Selection Register
VADCL: 0x78, // VADC Data Register Bytes
VADCH: 0x78, // VADC Data Register Bytes
VADCSR: 0x7a, // The VADC Control and Status register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// FET Control
FET = struct {
FCSR __reg
}{
FCSR: 0xf0, // FET Control and Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Read/Write Access
EEARH: 0x41, // EEPROM Read/Write Access
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Coulomb Counter
COULOMB_COUNTER = struct {
CADCSRA __reg
CADCSRB __reg
CADCSRC __reg
CADICL __reg
CADICH __reg
CADAC3 __reg
CADAC2 __reg
CADAC1 __reg
CADAC0 __reg
CADRCC __reg
CADRDC __reg
}{
CADCSRA: 0xe6, // CC-ADC Control and Status Register A
CADCSRB: 0xe7, // CC-ADC Control and Status Register B
CADCSRC: 0xe8, // CC-ADC Control and Status Register C
CADICL: 0xe4, // CC-ADC Instantaneous Current
CADICH: 0xe4, // CC-ADC Instantaneous Current
CADAC3: 0xe3, // ADC Accumulate Current
CADAC2: 0xe2, // ADC Accumulate Current
CADAC1: 0xe1, // ADC Accumulate Current
CADAC0: 0xe0, // ADC Accumulate Current
CADRCC: 0xe9, // CC-ADC Regular Charge Current
CADRDC: 0xea, // CC-ADC Regular Discharge Current
}
// Two Wire Serial Interface
TWI = struct {
TWBCSR __reg
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBCSR: 0xbe, // TWI Bus Control and Status Register
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Enable Mask Register 1
PCMSK0: 0x6b, // Pin Change Enable Mask Register 0
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1B __reg
TCCR1A __reg
TCNT1L __reg
TCNT1H __reg
OCR1A __reg
OCR1B __reg
TIMSK1 __reg
TIFR1 __reg
TCCR0B __reg
TCCR0A __reg
TCNT0L __reg
TCNT0H __reg
OCR0A __reg
OCR0B __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1A: 0x80, // Timer/Counter 1 Control Register A
TCNT1L: 0x84, // Timer Counter 1 Bytes
TCNT1H: 0x84, // Timer Counter 1 Bytes
OCR1A: 0x88, // Output Compare Register 1A
OCR1B: 0x89, // Output Compare Register B
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR0B: 0x45, // Timer/Counter0 Control Register B
TCCR0A: 0x44, // Timer/Counter 0 Control Register A
TCNT0L: 0x46, // Timer Counter 0 Bytes
TCNT0H: 0x46, // Timer Counter 0 Bytes
OCR0A: 0x48, // Output Compare Register A
OCR0B: 0x49, // Output Compare Register B
TIMSK0: 0x6e, // Timer/Counter Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter Interrupt Flag register
}
// Cell Balancing
CELL_BALANCING = struct {
CBCR __reg
}{
CBCR: 0xf1, // Cell Balancing Control Register
}
// Battery Protection
BATTERY_PROTECTION = struct {
BPPLR __reg
BPCR __reg
BPHCTR __reg
BPOCTR __reg
BPSCTR __reg
BPCHCD __reg
BPDHCD __reg
BPCOCD __reg
BPDOCD __reg
BPSCD __reg
BPIFR __reg
BPIMSK __reg
}{
BPPLR: 0xfe, // Battery Protection Parameter Lock Register
BPCR: 0xfd, // Battery Protection Control Register
BPHCTR: 0xfc, // Battery Protection Short-current Timing Register
BPOCTR: 0xfb, // Battery Protection Over-current Timing Register
BPSCTR: 0xfa, // Battery Protection Short-current Timing Register
BPCHCD: 0xf9, // Battery Protection Charge-High-current Detection Level Register
BPDHCD: 0xf8, // Battery Protection Discharge-High-current Detection Level Register
BPCOCD: 0xf7, // Battery Protection Charge-Over-current Detection Level Register
BPDOCD: 0xf6, // Battery Protection Discharge-Over-current Detection Level Register
BPSCD: 0xf5, // Battery Protection Short-Circuit Detection Level Register
BPIFR: 0xf3, // Battery Protection Interrupt Flag Register
BPIMSK: 0xf2, // Battery Protection Interrupt Mask Register
}
// Charger Detect
CHARGER_DETECT = struct {
CHGDCSR __reg
}{
CHGDCSR: 0xd4, // Charger Detect Control and Status Register
}
// Voltage Regulator
VOLTAGE_REGULATOR = struct {
ROCR __reg
}{
ROCR: 0xc8, // Regulator Operating Condition Register
}
// Bandgap
BANDGAP = struct {
BGCSR __reg
BGCRR __reg
BGCCR __reg
}{
BGCSR: 0xd2, // Bandgap Control and Status Register
BGCRR: 0xd1, // Bandgap Calibration of Resistor Ladder
BGCCR: 0xd0, // Bandgap Calibration Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
FOSCCAL __reg
OSICSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
DIDR0 __reg
PRR0 __reg
CLKPR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
FOSCCAL: 0x66, // Fast Oscillator Calibration Value
OSICSR: 0x37, // Oscillator Sampling Interface Control and Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
DIDR0: 0x7e, // Digital Input Disable Register
PRR0: 0x64, // Power Reduction Register 0
CLKPR: 0x61, // Clock Prescale Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
PINC __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
PINC: 0x26, // Port C Input Pins
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control and Status Register
}
)
// Bitfields for FUSE: Fuses
const (
// LOW
LOW_WDTON = 0x80 // Watch-dog Timer always on
LOW_EESAVE = 0x40 // Preserve EEPROM through the Chip Erase cycle
LOW_SPIEN = 0x20 // Serial program downloading (SPI) enabled
LOW_SUT = 0x1c // Select start-up time
LOW_OSCSEL = 0x3 // Oscillator select
// HIGH
HIGH_CKDIV8 = 0x10 // Clock Divide mode
HIGH_DWEN = 0x8 // Debug Wire enable
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// VADMUX: The VADC multiplexer Selection Register
VADMUX_VADMUX = 0xf // Analog Channel and Gain Selection Bits
// VADCL: VADC Data Register Bytes
// VADCH: VADC Data Register Bytes
VADC_VADC = 0xfff // VADC Data bits
// VADCSR: The VADC Control and Status register
VADCSR_VADEN = 0x8 // VADC Enable
VADCSR_VADSC = 0x4 // VADC Satrt Conversion
VADCSR_VADCCIF = 0x2 // VADC Conversion Complete Interrupt Flag
VADCSR_VADCCIE = 0x1 // VADC Conversion Complete Interrupt Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for FET: FET Control
const (
// FCSR: FET Control and Status Register
FCSR_DUVRD = 0x8 // Deep Under-Voltage Recovery Disable
FCSR_CPS = 0x4 // Current Protection Status
FCSR_DFE = 0x2 // Discharge FET Enable
FCSR_CFE = 0x1 // Charge FET Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPDR = 0xff // SPI Data bits
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access
// EEARH: EEPROM Read/Write Access
EEAR_EEAR = 0x3ff // EEPROM Address bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30
EECR_EERIE = 0x8 // EEProm Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for COULOMB_COUNTER: Coulomb Counter
const (
// CADCSRA: CC-ADC Control and Status Register A
CADCSRA_CADEN = 0x80 // When the CADEN bit is cleared (zero), the CC-ADC is disabled. When the CADEN bit is set (one), the CC-ADC will continuously measure the voltage drop over the external sense resistor RSENSE. In Power-down, only the Regular Current detection is active. In Power-off, the CC-ADC is always disabled.
CADCSRA_CADPOL = 0x40
CADCSRA_CADUB = 0x20 // CC_ADC Update Busy
CADCSRA_CADAS = 0x18 // CC_ADC Accumulate Current Select Bits
CADCSRA_CADSI = 0x6 // The CADSI bits determine the current sampling interval for the Regular Current detection in Power-down mode. The actual settings remain to be determined.
CADCSRA_CADSE = 0x1 // When the CADSE bit is written to one, the ongoing CC-ADC conversion is aborted, and the CC-ADC enters Regular Current detection mode.
// CADCSRB: CC-ADC Control and Status Register B
CADCSRB_CADACIE = 0x40
CADCSRB_CADRCIE = 0x20 // Regular Current Interrupt Enable
CADCSRB_CADICIE = 0x10 // CAD Instantenous Current Interrupt Enable
CADCSRB_CADACIF = 0x4 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADRCIF = 0x2 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADICIF = 0x1 // CC-ADC Instantaneous Current Interrupt Flag
// CADCSRC: CC-ADC Control and Status Register C
CADCSRC_CADVSE = 0x1 // CC-ADC Voltage Scaling Enable
// CADICL: CC-ADC Instantaneous Current
// CADICH: CC-ADC Instantaneous Current
CADIC_CADIC = 0xffff // CC-ADC Instantaneous Current
// CADAC3: ADC Accumulate Current
CADAC3_CADAC = 0xff // ADC accumulate current bits
// CADAC2: ADC Accumulate Current
CADAC2_CADAC = 0xff // ADC accumulate current bits
// CADAC1: ADC Accumulate Current
CADAC1_CADAC = 0xfc // ADC accumulate current bits
CADAC1_CADAC0 = 0x3 // ADC accumulate current bits
// CADAC0: ADC Accumulate Current
CADAC0_CADAC0 = 0xff // ADC accumulate current bits
// CADRCC: CC-ADC Regular Charge Current
CADRCC_CADRCC = 0xff // CC-ADC Regular Charge Current
// CADRDC: CC-ADC Regular Discharge Current
CADRDC_CADRDC = 0xff // CC-ADC Regular Discharge Current
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWBCSR: TWI Bus Control and Status Register
TWBCSR_TWBCIF = 0x80 // TWI Bus Connect/Disconnect Interrupt Flag
TWBCSR_TWBCIE = 0x40 // TWI Bus Connect/Disconnect Interrupt Enable
TWBCSR_TWBDT = 0x6 // TWI Bus Disconnect Time-out Period
TWBCSR_TWBCIP = 0x1 // TWI Bus Connect/Disconnect Interrupt Polarity
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWBR: TWI Bit Rate register
TWBR_TWBR = 0xff // TWI Bit Rate bits
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWDR: TWI Data register
TWDR_TWD = 0xff // TWI Data Bits
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control 3 Bits
EICRA_ISC2 = 0x30 // External Interrupt Sense Control 2 Bits
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xf // External Interrupt Request 3 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xf // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x3 // Pin Change Interrupt Enables
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x3 // Pin Change Interrupt Flags
// PCMSK1: Pin Change Enable Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Mask
// PCMSK0: Pin Change Enable Mask Register 0
PCMSK0_PCINT = 0xf // Pin Change Enable Mask
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_CS = 0x7 // Clock Select1 bis
// TCCR1A: Timer/Counter 1 Control Register A
TCCR1A_TCW1 = 0x80 // Timer/Counter Width
TCCR1A_ICEN1 = 0x40 // Input Capture Mode Enable
TCCR1A_ICNC1 = 0x20 // Input Capture Noise Canceler
TCCR1A_ICES1 = 0x10 // Input Capture Edge Select
TCCR1A_ICS1 = 0x8 // Input Capture Select
TCCR1A_WGM10 = 0x1 // Waveform Generation Mode
// TCNT1L: Timer Counter 1 Bytes
// TCNT1H: Timer Counter 1 Bytes
TCNT1_TCNT1 = 0xffff // Timer Counter 1 bits
// OCR1A: Output Compare Register 1A
OCR1A_OCR1A = 0xff // Output Compare 1 A bits
// OCR1B: Output Compare Register B
OCR1B_OCR1B = 0xff // Output Compare 1 B bits
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x8 // Timer/Counter 1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare Flag B
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare Flag A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR0B: Timer/Counter0 Control Register B
TCCR0B_CS02 = 0x4 // Clock Select0 bit 2
TCCR0B_CS01 = 0x2 // Clock Select0 bit 1
TCCR0B_CS00 = 0x1 // Clock Select0 bit 0
// TCCR0A: Timer/Counter 0 Control Register A
TCCR0A_TCW0 = 0x80 // Timer/Counter Width
TCCR0A_ICEN0 = 0x40 // Input Capture Mode Enable
TCCR0A_ICNC0 = 0x20 // Input Capture Noise Canceler
TCCR0A_ICES0 = 0x10 // Input Capture Edge Select
TCCR0A_ICS0 = 0x8 // Input Capture Select
TCCR0A_WGM00 = 0x1 // Waveform Generation Mode
// TCNT0L: Timer Counter 0 Bytes
// TCNT0H: Timer Counter 0 Bytes
TCNT0_TCNT0 = 0xffff // Timer Counter 0 bits
// OCR0A: Output Compare Register A
OCR0A_OCR0A = 0xff // Output Compare 0 A bits
// OCR0B: Output Compare Register B
OCR0B_OCR0B = 0xff // Output Compare 0 B bits
// TIMSK0: Timer/Counter Interrupt Mask Register
TIMSK0_ICIE0 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter Interrupt Flag register
TIFR0_ICF0 = 0x8 // Timer/Counter 0 Input Capture Flag
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for CELL_BALANCING: Cell Balancing
const (
// CBCR: Cell Balancing Control Register
CBCR_CBE = 0xf // Cell Balancing Enables
)
// Bitfields for BATTERY_PROTECTION: Battery Protection
const (
// BPPLR: Battery Protection Parameter Lock Register
BPPLR_BPPLE = 0x2 // Battery Protection Parameter Lock Enable
BPPLR_BPPL = 0x1 // Battery Protection Parameter Lock
// BPCR: Battery Protection Control Register
BPCR_EPID = 0x20 // External Protection Input Disable
BPCR_SCD = 0x10 // Short Circuit Protection Disabled
BPCR_DOCD = 0x8 // Discharge Over-current Protection Disabled
BPCR_COCD = 0x4 // Charge Over-current Protection Disabled
BPCR_DHCD = 0x2 // Discharge High-current Protection Disable
BPCR_CHCD = 0x1 // Charge High-current Protection Disable
// BPHCTR: Battery Protection Short-current Timing Register
BPHCTR_HCPT = 0x3f // Battery Protection Short-current Timing bits
// BPOCTR: Battery Protection Over-current Timing Register
BPOCTR_OCPT = 0x3f // Battery Protection Over-current Timing bits
// BPSCTR: Battery Protection Short-current Timing Register
BPSCTR_SCPT = 0x7f // Battery Protection Short-current Timing bits
// BPCHCD: Battery Protection Charge-High-current Detection Level Register
BPCHCD_CHCDL = 0xff // Battery Protection Charge-High-current Detection Level bits
// BPDHCD: Battery Protection Discharge-High-current Detection Level Register
BPDHCD_DHCDL = 0xff // Battery Protection Discharge-High-current Detection Level bits
// BPCOCD: Battery Protection Charge-Over-current Detection Level Register
BPCOCD_COCDL = 0xff // Battery Protection Charge-Over-current Detection Level bits
// BPDOCD: Battery Protection Discharge-Over-current Detection Level Register
BPDOCD_DOCDL = 0xff // Battery Protection Discharge-Over-current Detection Level bits
// BPSCD: Battery Protection Short-Circuit Detection Level Register
BPSCD_SCDL = 0xff // Battery Protection Short-Circuit Detection Level Register bits
// BPIFR: Battery Protection Interrupt Flag Register
BPIFR_SCIF = 0x10 // Short-circuit Protection Activated Interrupt Flag
BPIFR_DOCIF = 0x8 // Discharge Over-current Protection Activated Interrupt Flag
BPIFR_COCIF = 0x4 // Charge Over-current Protection Activated Interrupt Flag
BPIFR_DHCIF = 0x2 // Disharge High-current Protection Activated Interrupt
BPIFR_CHCIF = 0x1 // Charge High-current Protection Activated Interrupt
// BPIMSK: Battery Protection Interrupt Mask Register
BPIMSK_SCIE = 0x10 // Short-circuit Protection Activated Interrupt Enable
BPIMSK_DOCIE = 0x8 // Discharge Over-current Protection Activated Interrupt Enable
BPIMSK_COCIE = 0x4 // Charge Over-current Protection Activated Interrupt Enable
BPIMSK_DHCIE = 0x2 // Discharger High-current Protection Activated Interrupt
BPIMSK_CHCIE = 0x1 // Charger High-current Protection Activated Interrupt
)
// Bitfields for CHARGER_DETECT: Charger Detect
const (
// CHGDCSR: Charger Detect Control and Status Register
CHGDCSR_BATTPVL = 0x10 // BATT Pin Voltage Level
CHGDCSR_CHGDISC = 0xc // Charger Detect Interrupt Sense Control
CHGDCSR_CHGDIF = 0x2 // Charger Detect Interrupt Flag
CHGDCSR_CHGDIE = 0x1 // Charger Detect Interrupt Enable
)
// Bitfields for VOLTAGE_REGULATOR: Voltage Regulator
const (
// ROCR: Regulator Operating Condition Register
ROCR_ROCS = 0x80 // ROC Status
ROCR_ROCD = 0x10 // ROC Disable
ROCR_ROCWIF = 0x2 // ROC Warning Interrupt Flag
ROCR_ROCWIE = 0x1 // ROC Warning Interrupt Enable
)
// Bitfields for BANDGAP: Bandgap
const (
// BGCSR: Bandgap Control and Status Register
BGCSR_BGD = 0x20 // Bandgap Disable
BGCSR_BGSCDE = 0x10 // Bandgap Short Circuit Detection Enabled
BGCSR_BGSCDIF = 0x2 // Bandgap Short Circuit Detection Interrupt Flag
BGCSR_BGSCDIE = 0x1 // Bandgap Short Circuit Detection Interrupt Enable
// BGCRR: Bandgap Calibration of Resistor Ladder
BGCRR_BGCR = 0xff // Bandgap Calibration of Resistor Ladder Bits
// BGCCR: Bandgap Calibration Register
BGCCR_BGCC = 0x3f // BG Calibration of PTAT Current Bits
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_CKOE = 0x20 // Clock Output Enable
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_OCDRF = 0x10 // OCD Reset Flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BODRF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// FOSCCAL: Fast Oscillator Calibration Value
FOSCCAL_FCAL = 0xff // Fast Oscillator Calibration Value
// OSICSR: Oscillator Sampling Interface Control and Status Register
OSICSR_OSISEL0 = 0x10 // Oscillator Sampling Interface Select 0
OSICSR_OSIST = 0x2 // Oscillator Sampling Interface Status
OSICSR_OSIEN = 0x1 // Oscillator Sampling Interface Enable
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR2 = 0xff // General Purpose IO bits
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR1 = 0xff // General Purpose IO bits
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR0 = 0xff // General Purpose IO bits
// DIDR0: Digital Input Disable Register
DIDR0_PA1DID = 0x2 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
DIDR0_PA0DID = 0x1 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
// PRR0: Power Reduction Register 0
PRR0_PRTWI = 0x40 // Power Reduction TWI
PRR0_PRVRM = 0x20 // Power Reduction Voltage Regulator Monitor
PRR0_PRSPI = 0x8 // Power reduction SPI
PRR0_PRTIM1 = 0x4 // Power Reduction Timer/Counter1
PRR0_PRTIM0 = 0x2 // Power Reduction Timer/Counter0
PRR0_PRVADC = 0x1 // Power Reduction V-ADC
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0x3 // Clock Prescaler Select Bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read-While-Write Section Read Enable
SPMCSR_LBSET = 0x8 // Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16HVB.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 29;

Просмотреть файл

@ -1,796 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16HVBrevB.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16hvbrevb
// Device information for the ATmega16HVBrevB.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16HVBrevB"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin, Power-on Reset, Brown-out Reset and Watchdog Reset
IRQ_BPINT = 1 // Battery Protection Interrupt
IRQ_VREGMON = 2 // Voltage regulator monitor interrupt
IRQ_INT0 = 3 // External Interrupt Request 0
IRQ_INT1 = 4 // External Interrupt Request 1
IRQ_INT2 = 5 // External Interrupt Request 2
IRQ_INT3 = 6 // External Interrupt Request 3
IRQ_PCINT0 = 7 // Pin Change Interrupt 0
IRQ_PCINT1 = 8 // Pin Change Interrupt 1
IRQ_WDT = 9 // Watchdog Timeout Interrupt
IRQ_BGSCD = 10 // Bandgap Buffer Short Circuit Detected
IRQ_CHDET = 11 // Charger Detect
IRQ_TIMER1_IC = 12 // Timer 1 Input capture
IRQ_TIMER1_COMPA = 13 // Timer 1 Compare Match A
IRQ_TIMER1_COMPB = 14 // Timer 1 Compare Match B
IRQ_TIMER1_OVF = 15 // Timer 1 overflow
IRQ_TIMER0_IC = 16 // Timer 0 Input Capture
IRQ_TIMER0_COMPA = 17 // Timer 0 Comapre Match A
IRQ_TIMER0_COMPB = 18 // Timer 0 Compare Match B
IRQ_TIMER0_OVF = 19 // Timer 0 Overflow
IRQ_TWIBUSCD = 20 // Two-Wire Bus Connect/Disconnect
IRQ_TWI = 21 // Two-Wire Serial Interface
IRQ_SPI_STC = 22 // SPI Serial transfer complete
IRQ_VADC = 23 // Voltage ADC Conversion Complete
IRQ_CCADC_CONV = 24 // Coulomb Counter ADC Conversion Complete
IRQ_CCADC_REG_CUR = 25 // Coloumb Counter ADC Regular Current
IRQ_CCADC_ACC = 26 // Coloumb Counter ADC Accumulator
IRQ_EE_READY = 27 // EEPROM Ready
IRQ_SPM = 28 // SPM Ready
IRQ_max = 28 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
LOW __reg
HIGH __reg
}{
LOW: 0x0,
HIGH: 0x1,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// Analog-to-Digital Converter
ADC = struct {
VADMUX __reg
VADCL __reg
VADCH __reg
VADCSR __reg
}{
VADMUX: 0x7c, // The VADC multiplexer Selection Register
VADCL: 0x78, // VADC Data Register Bytes
VADCH: 0x78, // VADC Data Register Bytes
VADCSR: 0x7a, // The VADC Control and Status register
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
}
// FET Control
FET = struct {
FCSR __reg
}{
FCSR: 0xf0, // FET Control and Status Register
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Read/Write Access
EEARH: 0x41, // EEPROM Read/Write Access
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Coulomb Counter
COULOMB_COUNTER = struct {
CADCSRA __reg
CADCSRB __reg
CADCSRC __reg
CADICL __reg
CADICH __reg
CADAC3 __reg
CADAC2 __reg
CADAC1 __reg
CADAC0 __reg
CADRCC __reg
CADRDC __reg
}{
CADCSRA: 0xe6, // CC-ADC Control and Status Register A
CADCSRB: 0xe7, // CC-ADC Control and Status Register B
CADCSRC: 0xe8, // CC-ADC Control and Status Register C
CADICL: 0xe4, // CC-ADC Instantaneous Current
CADICH: 0xe4, // CC-ADC Instantaneous Current
CADAC3: 0xe3, // ADC Accumulate Current
CADAC2: 0xe2, // ADC Accumulate Current
CADAC1: 0xe1, // ADC Accumulate Current
CADAC0: 0xe0, // ADC Accumulate Current
CADRCC: 0xe9, // CC-ADC Regular Charge Current
CADRDC: 0xea, // CC-ADC Regular Discharge Current
}
// Two Wire Serial Interface
TWI = struct {
TWBCSR __reg
TWAMR __reg
TWBR __reg
TWCR __reg
TWSR __reg
TWDR __reg
TWAR __reg
}{
TWBCSR: 0xbe, // TWI Bus Control and Status Register
TWAMR: 0xbd, // TWI (Slave) Address Mask Register
TWBR: 0xb8, // TWI Bit Rate register
TWCR: 0xbc, // TWI Control Register
TWSR: 0xb9, // TWI Status Register
TWDR: 0xbb, // TWI Data register
TWAR: 0xba, // TWI (Slave) Address register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EIMSK __reg
EIFR __reg
PCICR __reg
PCIFR __reg
PCMSK1 __reg
PCMSK0 __reg
}{
EICRA: 0x69, // External Interrupt Control Register
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCMSK1: 0x6c, // Pin Change Enable Mask Register 1
PCMSK0: 0x6b, // Pin Change Enable Mask Register 0
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1B __reg
TCCR1A __reg
TCNT1L __reg
TCNT1H __reg
OCR1A __reg
OCR1B __reg
TIMSK1 __reg
TIFR1 __reg
TCCR0B __reg
TCCR0A __reg
TCNT0L __reg
TCNT0H __reg
OCR0A __reg
OCR0B __reg
TIMSK0 __reg
TIFR0 __reg
}{
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1A: 0x80, // Timer/Counter 1 Control Register A
TCNT1L: 0x84, // Timer Counter 1 Bytes
TCNT1H: 0x84, // Timer Counter 1 Bytes
OCR1A: 0x88, // Output Compare Register 1A
OCR1B: 0x89, // Output Compare Register B
TIMSK1: 0x6f, // Timer/Counter Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter Interrupt Flag register
TCCR0B: 0x45, // Timer/Counter0 Control Register B
TCCR0A: 0x44, // Timer/Counter 0 Control Register A
TCNT0L: 0x46, // Timer Counter 0 Bytes
TCNT0H: 0x46, // Timer Counter 0 Bytes
OCR0A: 0x48, // Output Compare Register 0A
OCR0B: 0x49, // Output Compare Register B
TIMSK0: 0x6e, // Timer/Counter Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter Interrupt Flag register
}
// Cell Balancing
CELL_BALANCING = struct {
CBCR __reg
}{
CBCR: 0xf1, // Cell Balancing Control Register
}
// Battery Protection
BATTERY_PROTECTION = struct {
BPPLR __reg
BPCR __reg
BPHCTR __reg
BPOCTR __reg
BPSCTR __reg
BPCHCD __reg
BPDHCD __reg
BPCOCD __reg
BPDOCD __reg
BPSCD __reg
BPIFR __reg
BPIMSK __reg
}{
BPPLR: 0xfe, // Battery Protection Parameter Lock Register
BPCR: 0xfd, // Battery Protection Control Register
BPHCTR: 0xfc, // Battery Protection Short-current Timing Register
BPOCTR: 0xfb, // Battery Protection Over-current Timing Register
BPSCTR: 0xfa, // Battery Protection Short-current Timing Register
BPCHCD: 0xf9, // Battery Protection Charge-High-current Detection Level Register
BPDHCD: 0xf8, // Battery Protection Discharge-High-current Detection Level Register
BPCOCD: 0xf7, // Battery Protection Charge-Over-current Detection Level Register
BPDOCD: 0xf6, // Battery Protection Discharge-Over-current Detection Level Register
BPSCD: 0xf5, // Battery Protection Short-Circuit Detection Level Register
BPIFR: 0xf3, // Battery Protection Interrupt Flag Register
BPIMSK: 0xf2, // Battery Protection Interrupt Mask Register
}
// Charger Detect
CHARGER_DETECT = struct {
CHGDCSR __reg
}{
CHGDCSR: 0xd4, // Charger Detect Control and Status Register
}
// Voltage Regulator
VOLTAGE_REGULATOR = struct {
ROCR __reg
}{
ROCR: 0xc8, // Regulator Operating Condition Register
}
// Bandgap
BANDGAP = struct {
BGCSR __reg
BGCRR __reg
BGCCR __reg
}{
BGCSR: 0xd2, // Bandgap Control and Status Register
BGCRR: 0xd1, // Bandgap Calibration of Resistor Ladder
BGCCR: 0xd0, // Bandgap Calibration Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
FOSCCAL __reg
OSICSR __reg
SMCR __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
DIDR0 __reg
PRR0 __reg
CLKPR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
FOSCCAL: 0x66, // Fast Oscillator Calibration Value
OSICSR: 0x37, // Oscillator Sampling Interface Control and Status Register
SMCR: 0x53, // Sleep Mode Control Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
DIDR0: 0x7e, // Digital Input Disable Register
PRR0: 0x64, // Power Reduction Register 0
CLKPR: 0x61, // Clock Prescale Register
}
// I/O Port
PORT = struct {
PORTA __reg
DDRA __reg
PINA __reg
PORTB __reg
DDRB __reg
PINB __reg
PORTC __reg
PINC __reg
}{
PORTA: 0x22, // Port A Data Register
DDRA: 0x21, // Port A Data Direction Register
PINA: 0x20, // Port A Input Pins
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTC: 0x28, // Port C Data Register
PINC: 0x26, // Port C Input Pins
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control and Status Register
}
)
// Bitfields for FUSE: Fuses
const (
// LOW
LOW_WDTON = 0x80 // Watch-dog Timer always on
LOW_EESAVE = 0x40 // Preserve EEPROM through the Chip Erase cycle
LOW_SPIEN = 0x20 // Serial program downloading (SPI) enabled
LOW_SUT = 0x1c // Select start-up time
LOW_OSCSEL = 0x3 // Oscillator select
// HIGH
HIGH_DUVRDINIT = 0x10 // DUVR mode on
HIGH_DWEN = 0x8 // Debug Wire enable
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for ADC: Analog-to-Digital Converter
const (
// VADMUX: The VADC multiplexer Selection Register
VADMUX_VADMUX = 0xf // Analog Channel and Gain Selection Bits
// VADCL: VADC Data Register Bytes
// VADCH: VADC Data Register Bytes
VADC_VADC = 0xfff // VADC Data bits
// VADCSR: The VADC Control and Status register
VADCSR_VADEN = 0x8 // VADC Enable
VADCSR_VADSC = 0x4 // VADC Satrt Conversion
VADCSR_VADCCIF = 0x2 // VADC Conversion Complete Interrupt Flag
VADCSR_VADCCIE = 0x1 // VADC Conversion Complete Interrupt Enable
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
)
// Bitfields for FET: FET Control
const (
// FCSR: FET Control and Status Register
FCSR_DUVRD = 0x8 // Deep Under-Voltage Recovery Disable
FCSR_CPS = 0x4 // Current Protection Status
FCSR_DFE = 0x2 // Discharge FET Enable
FCSR_CFE = 0x1 // Charge FET Enable
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPDR = 0xff // SPI Data bits
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Read/Write Access
// EEARH: EEPROM Read/Write Access
EEAR_EEAR = 0x3ff // EEPROM Address bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30
EECR_EERIE = 0x8 // EEProm Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for COULOMB_COUNTER: Coulomb Counter
const (
// CADCSRA: CC-ADC Control and Status Register A
CADCSRA_CADEN = 0x80 // When the CADEN bit is cleared (zero), the CC-ADC is disabled. When the CADEN bit is set (one), the CC-ADC will continuously measure the voltage drop over the external sense resistor RSENSE. In Power-down, only the Regular Current detection is active. In Power-off, the CC-ADC is always disabled.
CADCSRA_CADPOL = 0x40
CADCSRA_CADUB = 0x20 // CC_ADC Update Busy
CADCSRA_CADAS = 0x18 // CC_ADC Accumulate Current Select Bits
CADCSRA_CADSI = 0x6 // The CADSI bits determine the current sampling interval for the Regular Current detection in Power-down mode. The actual settings remain to be determined.
CADCSRA_CADSE = 0x1 // When the CADSE bit is written to one, the ongoing CC-ADC conversion is aborted, and the CC-ADC enters Regular Current detection mode.
// CADCSRB: CC-ADC Control and Status Register B
CADCSRB_CADACIE = 0x40
CADCSRB_CADRCIE = 0x20 // Regular Current Interrupt Enable
CADCSRB_CADICIE = 0x10 // CAD Instantenous Current Interrupt Enable
CADCSRB_CADACIF = 0x4 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADRCIF = 0x2 // CC-ADC Accumulate Current Interrupt Flag
CADCSRB_CADICIF = 0x1 // CC-ADC Instantaneous Current Interrupt Flag
// CADCSRC: CC-ADC Control and Status Register C
CADCSRC_CADVSE = 0x1 // CC-ADC Voltage Scaling Enable
// CADICL: CC-ADC Instantaneous Current
// CADICH: CC-ADC Instantaneous Current
CADIC_CADIC = 0xffff // CC-ADC Instantaneous Current
// CADAC3: ADC Accumulate Current
CADAC3_CADAC = 0xff // ADC accumulate current bits
// CADAC2: ADC Accumulate Current
CADAC2_CADAC = 0xff // ADC accumulate current bits
// CADAC1: ADC Accumulate Current
CADAC1_CADAC = 0xfc // ADC accumulate current bits
CADAC1_CADAC0 = 0x3 // ADC accumulate current bits
// CADAC0: ADC Accumulate Current
CADAC0_CADAC0 = 0xff // ADC accumulate current bits
// CADRCC: CC-ADC Regular Charge Current
CADRCC_CADRCC = 0xff // CC-ADC Regular Charge Current
// CADRDC: CC-ADC Regular Discharge Current
CADRDC_CADRDC = 0xff // CC-ADC Regular Discharge Current
)
// Bitfields for TWI: Two Wire Serial Interface
const (
// TWBCSR: TWI Bus Control and Status Register
TWBCSR_TWBCIF = 0x80 // TWI Bus Connect/Disconnect Interrupt Flag
TWBCSR_TWBCIE = 0x40 // TWI Bus Connect/Disconnect Interrupt Enable
TWBCSR_TWBDT = 0x6 // TWI Bus Disconnect Time-out Period
TWBCSR_TWBCIP = 0x1 // TWI Bus Connect/Disconnect Interrupt Polarity
// TWAMR: TWI (Slave) Address Mask Register
TWAMR_TWAM = 0xfe
// TWBR: TWI Bit Rate register
TWBR_TWBR = 0xff // TWI Bit Rate bits
// TWCR: TWI Control Register
TWCR_TWINT = 0x80 // TWI Interrupt Flag
TWCR_TWEA = 0x40 // TWI Enable Acknowledge Bit
TWCR_TWSTA = 0x20 // TWI Start Condition Bit
TWCR_TWSTO = 0x10 // TWI Stop Condition Bit
TWCR_TWWC = 0x8 // TWI Write Collition Flag
TWCR_TWEN = 0x4 // TWI Enable Bit
TWCR_TWIE = 0x1 // TWI Interrupt Enable
// TWSR: TWI Status Register
TWSR_TWS = 0xf8 // TWI Status
TWSR_TWPS = 0x3 // TWI Prescaler
// TWDR: TWI Data register
TWDR_TWD = 0xff // TWI Data Bits
// TWAR: TWI (Slave) Address register
TWAR_TWA = 0xfe // TWI (Slave) Address register Bits
TWAR_TWGCE = 0x1 // TWI General Call Recognition Enable Bit
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control 3 Bits
EICRA_ISC2 = 0x30 // External Interrupt Sense Control 2 Bits
EICRA_ISC1 = 0xc // External Interrupt Sense Control 1 Bits
EICRA_ISC0 = 0x3 // External Interrupt Sense Control 0 Bits
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xf // External Interrupt Request 3 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xf // External Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x3 // Pin Change Interrupt Enables
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x3 // Pin Change Interrupt Flags
// PCMSK1: Pin Change Enable Mask Register 1
PCMSK1_PCINT = 0xff // Pin Change Enable Mask
// PCMSK0: Pin Change Enable Mask Register 0
PCMSK0_PCINT = 0xf // Pin Change Enable Mask
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_CS = 0x7 // Clock Select1 bis
// TCCR1A: Timer/Counter 1 Control Register A
TCCR1A_TCW1 = 0x80 // Timer/Counter Width
TCCR1A_ICEN1 = 0x40 // Input Capture Mode Enable
TCCR1A_ICNC1 = 0x20 // Input Capture Noise Canceler
TCCR1A_ICES1 = 0x10 // Input Capture Edge Select
TCCR1A_ICS1 = 0x8 // Input Capture Select
TCCR1A_WGM10 = 0x1 // Waveform Generation Mode
// TCNT1L: Timer Counter 1 Bytes
// TCNT1H: Timer Counter 1 Bytes
TCNT1_TCNT1 = 0xffff // Timer Counter 1 bits
// OCR1A: Output Compare Register 1A
OCR1A_OCR1A = 0xff // Output Compare 1 A bits
// OCR1B: Output Compare Register B
OCR1B_OCR1B = 0xff // Output Compare 1 B bits
// TIMSK1: Timer/Counter Interrupt Mask Register
TIMSK1_ICIE1 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter Interrupt Flag register
TIFR1_ICF1 = 0x8 // Timer/Counter 1 Input Capture Flag
TIFR1_OCF1B = 0x4 // Timer/Counter1 Output Compare Flag B
TIFR1_OCF1A = 0x2 // Timer/Counter1 Output Compare Flag A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
// TCCR0B: Timer/Counter0 Control Register B
TCCR0B_CS02 = 0x4 // Clock Select0 bit 2
TCCR0B_CS01 = 0x2 // Clock Select0 bit 1
TCCR0B_CS00 = 0x1 // Clock Select0 bit 0
// TCCR0A: Timer/Counter 0 Control Register A
TCCR0A_TCW0 = 0x80 // Timer/Counter Width
TCCR0A_ICEN0 = 0x40 // Input Capture Mode Enable
TCCR0A_ICNC0 = 0x20 // Input Capture Noise Canceler
TCCR0A_ICES0 = 0x10 // Input Capture Edge Select
TCCR0A_ICS0 = 0x8 // Input Capture Select
TCCR0A_WGM00 = 0x1 // Waveform Generation Mode
// TCNT0L: Timer Counter 0 Bytes
// TCNT0H: Timer Counter 0 Bytes
TCNT0_TCNT0 = 0xffff // Timer Counter 0 bits
// OCR0A: Output Compare Register 0A
OCR0A_OCR0A = 0xff // Output Compare 0 A bits
// OCR0B: Output Compare Register B
OCR0B_OCR0B = 0xff // Output Compare 0 B bits
// TIMSK0: Timer/Counter Interrupt Mask Register
TIMSK0_ICIE0 = 0x8 // Timer/Counter n Input Capture Interrupt Enable
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter Interrupt Flag register
TIFR0_ICF0 = 0x8 // Timer/Counter 0 Input Capture Flag
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
)
// Bitfields for CELL_BALANCING: Cell Balancing
const (
// CBCR: Cell Balancing Control Register
CBCR_CBE = 0xf // Cell Balancing Enables
)
// Bitfields for BATTERY_PROTECTION: Battery Protection
const (
// BPPLR: Battery Protection Parameter Lock Register
BPPLR_BPPLE = 0x2 // Battery Protection Parameter Lock Enable
BPPLR_BPPL = 0x1 // Battery Protection Parameter Lock
// BPCR: Battery Protection Control Register
BPCR_EPID = 0x20 // External Protection Input Disable
BPCR_SCD = 0x10 // Short Circuit Protection Disabled
BPCR_DOCD = 0x8 // Discharge Over-current Protection Disabled
BPCR_COCD = 0x4 // Charge Over-current Protection Disabled
BPCR_DHCD = 0x2 // Discharge High-current Protection Disable
BPCR_CHCD = 0x1 // Charge High-current Protection Disable
// BPHCTR: Battery Protection Short-current Timing Register
BPHCTR_HCPT = 0x3f // Battery Protection Short-current Timing bits
// BPOCTR: Battery Protection Over-current Timing Register
BPOCTR_OCPT = 0x3f // Battery Protection Over-current Timing bits
// BPSCTR: Battery Protection Short-current Timing Register
BPSCTR_SCPT = 0x7f // Battery Protection Short-current Timing bits
// BPCHCD: Battery Protection Charge-High-current Detection Level Register
BPCHCD_CHCDL = 0xff // Battery Protection Charge-High-current Detection Level bits
// BPDHCD: Battery Protection Discharge-High-current Detection Level Register
BPDHCD_DHCDL = 0xff // Battery Protection Discharge-High-current Detection Level bits
// BPCOCD: Battery Protection Charge-Over-current Detection Level Register
BPCOCD_COCDL = 0xff // Battery Protection Charge-Over-current Detection Level bits
// BPDOCD: Battery Protection Discharge-Over-current Detection Level Register
BPDOCD_DOCDL = 0xff // Battery Protection Discharge-Over-current Detection Level bits
// BPSCD: Battery Protection Short-Circuit Detection Level Register
BPSCD_SCDL = 0xff // Battery Protection Short-Circuit Detection Level Register bits
// BPIFR: Battery Protection Interrupt Flag Register
BPIFR_SCIF = 0x10 // Short-circuit Protection Activated Interrupt Flag
BPIFR_DOCIF = 0x8 // Discharge Over-current Protection Activated Interrupt Flag
BPIFR_COCIF = 0x4 // Charge Over-current Protection Activated Interrupt Flag
BPIFR_DHCIF = 0x2 // Disharge High-current Protection Activated Interrupt
BPIFR_CHCIF = 0x1 // Charge High-current Protection Activated Interrupt
// BPIMSK: Battery Protection Interrupt Mask Register
BPIMSK_SCIE = 0x10 // Short-circuit Protection Activated Interrupt Enable
BPIMSK_DOCIE = 0x8 // Discharge Over-current Protection Activated Interrupt Enable
BPIMSK_COCIE = 0x4 // Charge Over-current Protection Activated Interrupt Enable
BPIMSK_DHCIE = 0x2 // Discharger High-current Protection Activated Interrupt
BPIMSK_CHCIE = 0x1 // Charger High-current Protection Activated Interrupt
)
// Bitfields for CHARGER_DETECT: Charger Detect
const (
// CHGDCSR: Charger Detect Control and Status Register
CHGDCSR_BATTPVL = 0x10 // BATT Pin Voltage Level
CHGDCSR_CHGDISC = 0xc // Charger Detect Interrupt Sense Control
CHGDCSR_CHGDIF = 0x2 // Charger Detect Interrupt Flag
CHGDCSR_CHGDIE = 0x1 // Charger Detect Interrupt Enable
)
// Bitfields for VOLTAGE_REGULATOR: Voltage Regulator
const (
// ROCR: Regulator Operating Condition Register
ROCR_ROCS = 0x80 // ROC Status
ROCR_ROCD = 0x10 // ROC Disable
ROCR_ROCWIF = 0x2 // ROC Warning Interrupt Flag
ROCR_ROCWIE = 0x1 // ROC Warning Interrupt Enable
)
// Bitfields for BANDGAP: Bandgap
const (
// BGCSR: Bandgap Control and Status Register
BGCSR_BGD = 0x20 // Bandgap Disable
BGCSR_BGSCDE = 0x10 // Bandgap Short Circuit Detection Enabled
BGCSR_BGSCDIF = 0x2 // Bandgap Short Circuit Detection Interrupt Flag
BGCSR_BGSCDIE = 0x1 // Bandgap Short Circuit Detection Interrupt Enable
// BGCRR: Bandgap Calibration of Resistor Ladder
BGCRR_BGCR = 0xff // Bandgap Calibration of Resistor Ladder Bits
// BGCCR: Bandgap Calibration Register
BGCCR_BGCC = 0x3f // BG Calibration of PTAT Current Bits
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_CKOE = 0x20 // Clock Output Enable
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_OCDRF = 0x10 // OCD Reset Flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BODRF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// FOSCCAL: Fast Oscillator Calibration Value
FOSCCAL_FCAL = 0xff // Fast Oscillator Calibration Value
// OSICSR: Oscillator Sampling Interface Control and Status Register
OSICSR_OSISEL0 = 0x10 // Oscillator Sampling Interface Select 0
OSICSR_OSIST = 0x2 // Oscillator Sampling Interface Status
OSICSR_OSIEN = 0x1 // Oscillator Sampling Interface Enable
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR2 = 0xff // General Purpose IO bits
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR1 = 0xff // General Purpose IO bits
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR0 = 0xff // General Purpose IO bits
// DIDR0: Digital Input Disable Register
DIDR0_PA1DID = 0x2 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
DIDR0_PA0DID = 0x1 // When this bit is written logic one, the digital input buffer of the corresponding V_ADC pin is disabled.
// PRR0: Power Reduction Register 0
PRR0_PRTWI = 0x40 // Power Reduction TWI
PRR0_PRVRM = 0x20 // Power Reduction Voltage Regulator Monitor
PRR0_PRSPI = 0x8 // Power reduction SPI
PRR0_PRTIM1 = 0x4 // Power Reduction Timer/Counter1
PRR0_PRTIM0 = 0x2 // Power Reduction Timer/Counter0
PRR0_PRVADC = 0x1 // Power Reduction V-ADC
// CLKPR: Clock Prescale Register
CLKPR_CLKPCE = 0x80 // Clock Prescaler Change Enable
CLKPR_CLKPS = 0x3 // Clock Prescaler Select Bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control and Status Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read-While-Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read-While-Write Section Read Enable
SPMCSR_LBSET = 0x8 // Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16HVBrevB.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 29;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16M1.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x400;
__num_isrs = 31;

Просмотреть файл

@ -1,842 +0,0 @@
// Automatically generated file. DO NOT EDIT.
// Generated by gen-device.py from ATmega16U2.atdf, see http://packs.download.atmel.com/
// +build avr,atmega16u2
// Device information for the ATmega16U2.
//
package avr
// Magic type name for the compiler.
type __reg uint8
// Export this magic type name.
type RegValue = __reg
// Some information about this device.
const (
DEVICE = "ATmega16U2"
ARCH = "AVR8"
FAMILY = "megaAVR"
)
// Interrupts
const (
IRQ_RESET = 0 // External Pin,Power-on Reset,Brown-out Reset,Watchdog Reset,and JTAG AVR Reset. See Datasheet.
IRQ_INT0 = 1 // External Interrupt Request 0
IRQ_INT1 = 2 // External Interrupt Request 1
IRQ_INT2 = 3 // External Interrupt Request 2
IRQ_INT3 = 4 // External Interrupt Request 3
IRQ_INT4 = 5 // External Interrupt Request 4
IRQ_INT5 = 6 // External Interrupt Request 5
IRQ_INT6 = 7 // External Interrupt Request 6
IRQ_INT7 = 8 // External Interrupt Request 7
IRQ_PCINT0 = 9 // Pin Change Interrupt Request 0
IRQ_PCINT1 = 10 // Pin Change Interrupt Request 1
IRQ_USB_GEN = 11 // USB General Interrupt Request
IRQ_USB_COM = 12 // USB Endpoint/Pipe Interrupt Communication Request
IRQ_WDT = 13 // Watchdog Time-out Interrupt
IRQ_TIMER1_CAPT = 14 // Timer/Counter2 Capture Event
IRQ_TIMER1_COMPA = 15 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPB = 16 // Timer/Counter2 Compare Match B
IRQ_TIMER1_COMPC = 17 // Timer/Counter2 Compare Match C
IRQ_TIMER1_OVF = 18 // Timer/Counter1 Overflow
IRQ_TIMER0_COMPA = 19 // Timer/Counter0 Compare Match A
IRQ_TIMER0_COMPB = 20 // Timer/Counter0 Compare Match B
IRQ_TIMER0_OVF = 21 // Timer/Counter0 Overflow
IRQ_SPI_STC = 22 // SPI Serial Transfer Complete
IRQ_USART1_RX = 23 // USART1, Rx Complete
IRQ_USART1_UDRE = 24 // USART1 Data register Empty
IRQ_USART1_TX = 25 // USART1, Tx Complete
IRQ_ANALOG_COMP = 26 // Analog Comparator
IRQ_EE_READY = 27 // EEPROM Ready
IRQ_SPM_READY = 28 // Store Program Memory Read
IRQ_max = 28 // Highest interrupt number on this device.
)
// Peripherals
var (
// Fuses
FUSE = struct {
EXTENDED __reg
HIGH __reg
LOW __reg
}{
EXTENDED: 0x2,
HIGH: 0x1,
LOW: 0x0,
}
// Lockbits
LOCKBIT = struct {
LOCKBIT __reg
}{
LOCKBIT: 0x0,
}
// I/O Port
PORT = struct {
PORTB __reg
DDRB __reg
PINB __reg
PORTD __reg
DDRD __reg
PIND __reg
PORTC __reg
DDRC __reg
PINC __reg
}{
PORTB: 0x25, // Port B Data Register
DDRB: 0x24, // Port B Data Direction Register
PINB: 0x23, // Port B Input Pins
PORTD: 0x2b, // Port D Data Register
DDRD: 0x2a, // Port D Data Direction Register
PIND: 0x29, // Port D Input Pins
PORTC: 0x28, // Port C Data Register
DDRC: 0x27, // Port C Data Direction Register
PINC: 0x26, // Port C Input Pins
}
// Serial Peripheral Interface
SPI = struct {
SPCR __reg
SPSR __reg
SPDR __reg
}{
SPCR: 0x4c, // SPI Control Register
SPSR: 0x4d, // SPI Status Register
SPDR: 0x4e, // SPI Data Register
}
// Bootloader
BOOT_LOAD = struct {
SPMCSR __reg
}{
SPMCSR: 0x57, // Store Program Memory Control Register
}
// EEPROM
EEPROM = struct {
EEARL __reg
EEARH __reg
EEDR __reg
EECR __reg
}{
EEARL: 0x41, // EEPROM Address Register Low Bytes
EEARH: 0x41, // EEPROM Address Register Low Bytes
EEDR: 0x40, // EEPROM Data Register
EECR: 0x3f, // EEPROM Control Register
}
// Timer/Counter, 8-bit
TC8 = struct {
OCR0B __reg
OCR0A __reg
TCNT0 __reg
TCCR0B __reg
TCCR0A __reg
TIMSK0 __reg
TIFR0 __reg
GTCCR __reg
}{
OCR0B: 0x48, // Timer/Counter0 Output Compare Register
OCR0A: 0x47, // Timer/Counter0 Output Compare Register
TCNT0: 0x46, // Timer/Counter0
TCCR0B: 0x45, // Timer/Counter Control Register B
TCCR0A: 0x44, // Timer/Counter Control Register A
TIMSK0: 0x6e, // Timer/Counter0 Interrupt Mask Register
TIFR0: 0x35, // Timer/Counter0 Interrupt Flag register
GTCCR: 0x43, // General Timer/Counter Control Register
}
// Timer/Counter, 16-bit
TC16 = struct {
TCCR1A __reg
TCCR1B __reg
TCCR1C __reg
TCNT1L __reg
TCNT1H __reg
OCR1AL __reg
OCR1AH __reg
OCR1BL __reg
OCR1BH __reg
OCR1CL __reg
OCR1CH __reg
ICR1L __reg
ICR1H __reg
TIMSK1 __reg
TIFR1 __reg
}{
TCCR1A: 0x80, // Timer/Counter1 Control Register A
TCCR1B: 0x81, // Timer/Counter1 Control Register B
TCCR1C: 0x82, // Timer/Counter 1 Control Register C
TCNT1L: 0x84, // Timer/Counter1 Bytes
TCNT1H: 0x84, // Timer/Counter1 Bytes
OCR1AL: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1AH: 0x88, // Timer/Counter1 Output Compare Register A Bytes
OCR1BL: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1BH: 0x8a, // Timer/Counter1 Output Compare Register B Bytes
OCR1CL: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
OCR1CH: 0x8c, // Timer/Counter1 Output Compare Register C Bytes
ICR1L: 0x86, // Timer/Counter1 Input Capture Register Bytes
ICR1H: 0x86, // Timer/Counter1 Input Capture Register Bytes
TIMSK1: 0x6f, // Timer/Counter1 Interrupt Mask Register
TIFR1: 0x36, // Timer/Counter1 Interrupt Flag register
}
// Phase Locked Loop
PLL = struct {
PLLCSR __reg
}{
PLLCSR: 0x49, // PLL Status and Control register
}
// USB Device Registers
USB_DEVICE = struct {
UPOE __reg
UEINT __reg
UEBCLX __reg
UEDATX __reg
UEIENX __reg
UESTA1X __reg
UESTA0X __reg
UECFG1X __reg
UECFG0X __reg
UECONX __reg
UERST __reg
UENUM __reg
UEINTX __reg
UDMFN __reg
UDFNUML __reg
UDFNUMH __reg
UDADDR __reg
UDIEN __reg
UDINT __reg
UDCON __reg
USBCON __reg
REGCR __reg
}{
UPOE: 0xfb, // USB Software Output Enable register
UEINT: 0xf4, // USB Endpoint Number Interrupt Register
UEBCLX: 0xf2, // USB Endpoint Byte Count Register
UEDATX: 0xf1, // USB Data Endpoint
UEIENX: 0xf0, // USB Endpoint Interrupt Enable Register
UESTA1X: 0xef, // USB Endpoint Status 1 Register
UESTA0X: 0xee, // USB Endpoint Status 0 Register
UECFG1X: 0xed, // USB Endpoint Configuration 1 Register
UECFG0X: 0xec, // USB Endpoint Configuration 0 Register
UECONX: 0xeb, // USB Endpoint Control Register
UERST: 0xea, // USB Endpoint Reset Register
UENUM: 0xe9, // USB Endpoint Number
UEINTX: 0xe8, // USB Endpoint Interrupt Register
UDMFN: 0xe6, // USB Device Micro Frame Number
UDFNUML: 0xe4, // USB Device Frame Number High Register
UDFNUMH: 0xe4, // USB Device Frame Number High Register
UDADDR: 0xe3, // USB Device Address Register
UDIEN: 0xe2, // USB Device Interrupt Enable Register
UDINT: 0xe1, // USB Device Interrupt Register
UDCON: 0xe0, // USB Device Control Registers
USBCON: 0xd8, // USB General Control Register
REGCR: 0x63, // Regulator Control Register
}
// CPU Registers
CPU = struct {
SREG __reg
SPL __reg
SPH __reg
MCUCR __reg
MCUSR __reg
OSCCAL __reg
CLKPR __reg
SMCR __reg
EIND __reg
GPIOR2 __reg
GPIOR1 __reg
GPIOR0 __reg
PRR1 __reg
PRR0 __reg
CLKSTA __reg
CLKSEL1 __reg
CLKSEL0 __reg
DWDR __reg
}{
SREG: 0x5f, // Status Register
SPL: 0x5d, // Stack Pointer
SPH: 0x5d, // Stack Pointer
MCUCR: 0x55, // MCU Control Register
MCUSR: 0x54, // MCU Status Register
OSCCAL: 0x66, // Oscillator Calibration Value
CLKPR: 0x61,
SMCR: 0x53, // Sleep Mode Control Register
EIND: 0x5c, // Extended Indirect Register
GPIOR2: 0x4b, // General Purpose IO Register 2
GPIOR1: 0x4a, // General Purpose IO Register 1
GPIOR0: 0x3e, // General Purpose IO Register 0
PRR1: 0x65, // Power Reduction Register1
PRR0: 0x64, // Power Reduction Register0
CLKSTA: 0xd2,
CLKSEL1: 0xd1,
CLKSEL0: 0xd0,
DWDR: 0x51, // debugWire communication register
}
// External Interrupts
EXINT = struct {
EICRA __reg
EICRB __reg
EIMSK __reg
EIFR __reg
PCMSK0 __reg
PCMSK1 __reg
PCIFR __reg
PCICR __reg
}{
EICRA: 0x69, // External Interrupt Control Register A
EICRB: 0x6a, // External Interrupt Control Register B
EIMSK: 0x3d, // External Interrupt Mask Register
EIFR: 0x3c, // External Interrupt Flag Register
PCMSK0: 0x6b, // Pin Change Mask Register 0
PCMSK1: 0x6c, // Pin Change Mask Register 1
PCIFR: 0x3b, // Pin Change Interrupt Flag Register
PCICR: 0x68, // Pin Change Interrupt Control Register
}
// USART
USART = struct {
UDR1 __reg
UCSR1A __reg
UCSR1B __reg
UCSR1C __reg
UCSR1D __reg
UBRR1L __reg
UBRR1H __reg
}{
UDR1: 0xce, // USART I/O Data Register
UCSR1A: 0xc8, // USART Control and Status Register A
UCSR1B: 0xc9, // USART Control and Status Register B
UCSR1C: 0xca, // USART Control and Status Register C
UCSR1D: 0xcb, // USART Control and Status Register D
UBRR1L: 0xcc, // USART Baud Rate Register Bytes
UBRR1H: 0xcc, // USART Baud Rate Register Bytes
}
// Watchdog Timer
WDT = struct {
WDTCSR __reg
WDTCKD __reg
}{
WDTCSR: 0x60, // Watchdog Timer Control Register
WDTCKD: 0x62, // Watchdog Timer Clock Divider
}
// Analog Comparator
AC = struct {
ACSR __reg
ACMUX __reg
DIDR1 __reg
}{
ACSR: 0x50, // Analog Comparator Control And Status Register
ACMUX: 0x7d, // Analog Comparator Input Multiplexer
DIDR1: 0x7f,
}
)
// Bitfields for FUSE: Fuses
const (
// EXTENDED
EXTENDED_BODLEVEL = 0x7 // Brown-out Detector trigger level
EXTENDED_HWBE = 0x8 // Hardware Boot Enable
// HIGH
HIGH_DWEN = 0x80 // Debug Wire enable
HIGH_RSTDISBL = 0x40 // Reset Disabled (Enable PC6 as i/o pin)
HIGH_SPIEN = 0x20 // Serial program downloading (SPI) enabled
HIGH_WDTON = 0x10 // Watchdog timer always on
HIGH_EESAVE = 0x8 // Preserve EEPROM through the Chip Erase cycle
HIGH_BOOTSZ = 0x6 // Select Boot Size
HIGH_BOOTRST = 0x1 // Boot Reset vector Enabled
// LOW
LOW_CKDIV8 = 0x80 // Divide clock by 8 internally
LOW_CKOUT = 0x40 // Clock output on PORTC7
LOW_SUT_CKSEL = 0x3f // Select Clock Source
)
// Bitfields for LOCKBIT: Lockbits
const (
// LOCKBIT
LOCKBIT_LB = 0x3 // Memory Lock
LOCKBIT_BLB0 = 0xc // Boot Loader Protection Mode
LOCKBIT_BLB1 = 0x30 // Boot Loader Protection Mode
)
// Bitfields for PORT: I/O Port
const (
// PORTC: Port C Data Register
PORTC_PORTC = 0xf0 // Port C Data Register bits
PORTC_PORTC = 0x7 // Port C Data Register bits
// DDRC: Port C Data Direction Register
DDRC_DDC = 0xf0 // Port C Data Direction Register bits
DDRC_DDC = 0x7 // Port C Data Direction Register bits
// PINC: Port C Input Pins
PINC_PINC = 0xf0 // Port C Input Pins bits
PINC_PINC = 0x7 // Port C Input Pins bits
)
// Bitfields for SPI: Serial Peripheral Interface
const (
// SPCR: SPI Control Register
SPCR_SPIE = 0x80 // SPI Interrupt Enable
SPCR_SPE = 0x40 // SPI Enable
SPCR_DORD = 0x20 // Data Order
SPCR_MSTR = 0x10 // Master/Slave Select
SPCR_CPOL = 0x8 // Clock polarity
SPCR_CPHA = 0x4 // Clock Phase
SPCR_SPR = 0x3 // SPI Clock Rate Selects
// SPSR: SPI Status Register
SPSR_SPIF = 0x80 // SPI Interrupt Flag
SPSR_WCOL = 0x40 // Write Collision Flag
SPSR_SPI2X = 0x1 // Double SPI Speed Bit
// SPDR: SPI Data Register
SPDR_SPDR = 0xff // SPI Data bits
)
// Bitfields for BOOT_LOAD: Bootloader
const (
// SPMCSR: Store Program Memory Control Register
SPMCSR_SPMIE = 0x80 // SPM Interrupt Enable
SPMCSR_RWWSB = 0x40 // Read While Write Section Busy
SPMCSR_SIGRD = 0x20 // Signature Row Read
SPMCSR_RWWSRE = 0x10 // Read While Write section read enable
SPMCSR_BLBSET = 0x8 // Boot Lock Bit Set
SPMCSR_PGWRT = 0x4 // Page Write
SPMCSR_PGERS = 0x2 // Page Erase
SPMCSR_SPMEN = 0x1 // Store Program Memory Enable
)
// Bitfields for EEPROM: EEPROM
const (
// EEARL: EEPROM Address Register Low Bytes
// EEARH: EEPROM Address Register Low Bytes
EEAR_EEAR = 0xfff // EEPROM Address bits
// EEDR: EEPROM Data Register
EEDR_EEDR = 0xff // EEPROM Data bits
// EECR: EEPROM Control Register
EECR_EEPM = 0x30 // EEPROM Programming Mode Bits
EECR_EERIE = 0x8 // EEPROM Ready Interrupt Enable
EECR_EEMPE = 0x4 // EEPROM Master Write Enable
EECR_EEPE = 0x2 // EEPROM Write Enable
EECR_EERE = 0x1 // EEPROM Read Enable
)
// Bitfields for TC8: Timer/Counter, 8-bit
const (
// OCR0B: Timer/Counter0 Output Compare Register
OCR0B_OCR0B = 0xff // Timer/Counter0 Output Compare B bits
// OCR0A: Timer/Counter0 Output Compare Register
OCR0A_OCR0A = 0xff // Timer/Counter0 Output Compare A bits
// TCNT0: Timer/Counter0
TCNT0_TCNT0 = 0xff // Timer/Counter0 bits
// TCCR0B: Timer/Counter Control Register B
TCCR0B_FOC0A = 0x80 // Force Output Compare A
TCCR0B_FOC0B = 0x40 // Force Output Compare B
TCCR0B_WGM02 = 0x8
TCCR0B_CS0 = 0x7 // Clock Select
// TCCR0A: Timer/Counter Control Register A
TCCR0A_COM0A = 0xc0 // Compare Output Mode, Phase Correct PWM Mode
TCCR0A_COM0B = 0x30 // Compare Output Mode, Fast PWm
TCCR0A_WGM0 = 0x3 // Waveform Generation Mode
// TIMSK0: Timer/Counter0 Interrupt Mask Register
TIMSK0_OCIE0B = 0x4 // Timer/Counter0 Output Compare Match B Interrupt Enable
TIMSK0_OCIE0A = 0x2 // Timer/Counter0 Output Compare Match A Interrupt Enable
TIMSK0_TOIE0 = 0x1 // Timer/Counter0 Overflow Interrupt Enable
// TIFR0: Timer/Counter0 Interrupt Flag register
TIFR0_OCF0B = 0x4 // Timer/Counter0 Output Compare Flag 0B
TIFR0_OCF0A = 0x2 // Timer/Counter0 Output Compare Flag 0A
TIFR0_TOV0 = 0x1 // Timer/Counter0 Overflow Flag
// GTCCR: General Timer/Counter Control Register
GTCCR_TSM = 0x80 // Timer/Counter Synchronization Mode
GTCCR_PSRSYNC = 0x1 // Prescaler Reset Timer/Counter1 and Timer/Counter0
)
// Bitfields for TC16: Timer/Counter, 16-bit
const (
// TCCR1A: Timer/Counter1 Control Register A
TCCR1A_COM1A = 0xc0 // Compare Output Mode 1A, bits
TCCR1A_COM1B = 0x30 // Compare Output Mode 1B, bits
TCCR1A_COM1C = 0xc // Compare Output Mode 1C, bits
TCCR1A_WGM1 = 0x3 // Waveform Generation Mode
// TCCR1B: Timer/Counter1 Control Register B
TCCR1B_ICNC1 = 0x80 // Input Capture 1 Noise Canceler
TCCR1B_ICES1 = 0x40 // Input Capture 1 Edge Select
TCCR1B_WGM1 = 0x18 // Waveform Generation Mode
TCCR1B_CS1 = 0x7 // Prescaler source of Timer/Counter 1
// TCCR1C: Timer/Counter 1 Control Register C
TCCR1C_FOC1A = 0x80 // Force Output Compare 1A
TCCR1C_FOC1B = 0x40 // Force Output Compare 1B
TCCR1C_FOC1C = 0x20 // Force Output Compare 1C
// TCNT1L: Timer/Counter1 Bytes
// TCNT1H: Timer/Counter1 Bytes
TCNT1_TCNT1 = 0xffff // Timer/Counter1 bits
// OCR1AL: Timer/Counter1 Output Compare Register A Bytes
// OCR1AH: Timer/Counter1 Output Compare Register A Bytes
OCR1A_OCR1A = 0xffff // Timer/Counter1 Output Compare A bits
// OCR1BL: Timer/Counter1 Output Compare Register B Bytes
// OCR1BH: Timer/Counter1 Output Compare Register B Bytes
OCR1B_OCR1B = 0xffff // Timer/Counter1 Output Compare B bits
// OCR1CL: Timer/Counter1 Output Compare Register C Bytes
// OCR1CH: Timer/Counter1 Output Compare Register C Bytes
OCR1C_OCR1C = 0xffff // Timer/Counter1 Output Compare C bits
// ICR1L: Timer/Counter1 Input Capture Register Bytes
// ICR1H: Timer/Counter1 Input Capture Register Bytes
ICR1_ICR1 = 0xffff // Timer/Counter1 Input Capture bits
// TIMSK1: Timer/Counter1 Interrupt Mask Register
TIMSK1_ICIE1 = 0x20 // Timer/Counter1 Input Capture Interrupt Enable
TIMSK1_OCIE1C = 0x8 // Timer/Counter1 Output Compare C Match Interrupt Enable
TIMSK1_OCIE1B = 0x4 // Timer/Counter1 Output Compare B Match Interrupt Enable
TIMSK1_OCIE1A = 0x2 // Timer/Counter1 Output Compare A Match Interrupt Enable
TIMSK1_TOIE1 = 0x1 // Timer/Counter1 Overflow Interrupt Enable
// TIFR1: Timer/Counter1 Interrupt Flag register
TIFR1_ICF1 = 0x20 // Input Capture Flag 1
TIFR1_OCF1C = 0x8 // Output Compare Flag 1C
TIFR1_OCF1B = 0x4 // Output Compare Flag 1B
TIFR1_OCF1A = 0x2 // Output Compare Flag 1A
TIFR1_TOV1 = 0x1 // Timer/Counter1 Overflow Flag
)
// Bitfields for PLL: Phase Locked Loop
const (
// PLLCSR: PLL Status and Control register
PLLCSR_PLLP = 0x1c // PLL prescaler Bits
PLLCSR_PLLE = 0x2 // PLL Enable Bit
PLLCSR_PLOCK = 0x1 // PLL Lock Status Bit
)
// Bitfields for USB_DEVICE: USB Device Registers
const (
// UPOE: USB Software Output Enable register
UPOE_UPWE = 0xc0 // USB Buffers Direct Drive enable configuration
UPOE_UPDRV = 0x30 // USB direct drive values
UPOE_DPI = 0x2 // D+ Input value
UPOE_DMI = 0x1 // D- Input value
// UEINT: USB Endpoint Number Interrupt Register
UEINT_EPINT = 0x1f // Byte Count bits
// UEBCLX: USB Endpoint Byte Count Register
UEBCLX_BYCT = 0xff // Byte Count bits
// UEDATX: USB Data Endpoint
UEDATX_DAT = 0xff // Data bits
// UEIENX: USB Endpoint Interrupt Enable Register
UEIENX_FLERRE = 0x80 // Flow Error Interrupt Enable Flag
UEIENX_NAKINE = 0x40 // NAK IN Interrupt Enable Bit
UEIENX_NAKOUTE = 0x10 // NAK OUT Interrupt Enable Bit
UEIENX_RXSTPE = 0x8 // Received SETUP Interrupt Enable Flag
UEIENX_RXOUTE = 0x4 // Received OUT Data Interrupt Enable Flag
UEIENX_STALLEDE = 0x2 // Stalled Interrupt Enable Flag
UEIENX_TXINE = 0x1 // Transmitter Ready Interrupt Enable Flag
// UESTA1X: USB Endpoint Status 1 Register
UESTA1X_CTRLDIR = 0x4 // Control Direction
UESTA1X_CURRBK = 0x3 // Current Bank
// UESTA0X: USB Endpoint Status 0 Register
UESTA0X_CFGOK = 0x80 // Configuration Status Flag
UESTA0X_OVERFI = 0x40 // Overflow Error Interrupt Flag
UESTA0X_UNDERFI = 0x20 // Underflow Error Interrupt Flag
UESTA0X_DTSEQ = 0xc // Data Toggle Sequencing Flag
UESTA0X_NBUSYBK = 0x3 // Busy Bank Flag
// UECFG1X: USB Endpoint Configuration 1 Register
UECFG1X_EPSIZE = 0x70 // Endpoint Size Bits
UECFG1X_EPBK = 0xc // Endpoint Bank Bits
UECFG1X_ALLOC = 0x2 // Endpoint Allocation Bit
// UECFG0X: USB Endpoint Configuration 0 Register
UECFG0X_EPTYPE = 0xc0 // Endpoint Type Bits
UECFG0X_EPDIR = 0x1 // Endpoint Direction Bit
// UECONX: USB Endpoint Control Register
UECONX_STALLRQ = 0x20 // STALL Request Handshake Bit
UECONX_STALLRQC = 0x10 // STALL Request Clear Handshake Bit
UECONX_RSTDT = 0x8 // Reset Data Toggle Bit
UECONX_EPEN = 0x1 // Endpoint Enable Bit
// UERST: USB Endpoint Reset Register
UERST_EPRST = 0x1f // Endpoint FIFO Reset Bits
// UENUM: USB Endpoint Number
UENUM_EPNUM = 0x7 // Endpoint Number bits
// UEINTX: USB Endpoint Interrupt Register
UEINTX_FIFOCON = 0x80 // FIFO Control Bit
UEINTX_NAKINI = 0x40 // NAK IN Received Interrupt Flag
UEINTX_RWAL = 0x20 // Read/Write Allowed Flag
UEINTX_NAKOUTI = 0x10 // NAK OUT Received Interrupt Flag
UEINTX_RXSTPI = 0x8 // Received SETUP Interrupt Flag
UEINTX_RXOUTI = 0x4 // Received OUT Data Interrupt Flag
UEINTX_STALLEDI = 0x2 // STALLEDI Interrupt Flag
UEINTX_TXINI = 0x1 // Transmitter Ready Interrupt Flag
// UDMFN: USB Device Micro Frame Number
UDMFN_FNCERR = 0x10 // Frame Number CRC Error Flag
// UDFNUML: USB Device Frame Number High Register
// UDFNUMH: USB Device Frame Number High Register
UDFNUM_FNUM = 0x7ff // Frame Number Upper Flag
// UDADDR: USB Device Address Register
UDADDR_ADDEN = 0x80 // Address Enable Bit
UDADDR_UADD = 0x7f // USB Address Bits
// UDIEN: USB Device Interrupt Enable Register
UDIEN_UPRSME = 0x40 // Upstream Resume Interrupt Enable Bit
UDIEN_EORSME = 0x20 // End Of Resume Interrupt Enable Bit
UDIEN_WAKEUPE = 0x10 // Wake-up CPU Interrupt Enable Bit
UDIEN_EORSTE = 0x8 // End Of Reset Interrupt Enable Bit
UDIEN_SOFE = 0x4 // Start Of Frame Interrupt Enable Bit
UDIEN_SUSPE = 0x1 // Suspend Interrupt Enable Bit
// UDINT: USB Device Interrupt Register
UDINT_UPRSMI = 0x40 // Upstream Resume Interrupt Flag
UDINT_EORSMI = 0x20 // End Of Resume Interrupt Flag
UDINT_WAKEUPI = 0x10 // Wake-up CPU Interrupt Flag
UDINT_EORSTI = 0x8 // End Of Reset Interrupt Flag
UDINT_SOFI = 0x4 // Start Of Frame Interrupt Flag
UDINT_SUSPI = 0x1 // Suspend Interrupt Flag
// UDCON: USB Device Control Registers
UDCON_RSTCPU = 0x4 // USB Reset CPU Bit
UDCON_RMWKUP = 0x2 // Remote Wake-up Bit
UDCON_DETACH = 0x1 // Detach Bit
// USBCON: USB General Control Register
USBCON_USBE = 0x80 // USB macro Enable Bit
USBCON_FRZCLK = 0x20 // Freeze USB Clock Bit
// REGCR: Regulator Control Register
REGCR_REGDIS = 0x1 // Regulator Disable
)
// Bitfields for CPU: CPU Registers
const (
// SREG: Status Register
SREG_I = 0x80 // Global Interrupt Enable
SREG_T = 0x40 // Bit Copy Storage
SREG_H = 0x20 // Half Carry Flag
SREG_S = 0x10 // Sign Bit
SREG_V = 0x8 // Two's Complement Overflow Flag
SREG_N = 0x4 // Negative Flag
SREG_Z = 0x2 // Zero Flag
SREG_C = 0x1 // Carry Flag
// MCUCR: MCU Control Register
MCUCR_PUD = 0x10 // Pull-up disable
MCUCR_IVSEL = 0x2 // Interrupt Vector Select
MCUCR_IVCE = 0x1 // Interrupt Vector Change Enable
// MCUSR: MCU Status Register
MCUSR_USBRF = 0x20 // USB reset flag
MCUSR_WDRF = 0x8 // Watchdog Reset Flag
MCUSR_BORF = 0x4 // Brown-out Reset Flag
MCUSR_EXTRF = 0x2 // External Reset Flag
MCUSR_PORF = 0x1 // Power-on reset flag
// OSCCAL: Oscillator Calibration Value
OSCCAL_OSCCAL = 0xff // Oscillator Calibration
// CLKPR
CLKPR_CLKPCE = 0x80
CLKPR_CLKPS = 0xf
// SMCR: Sleep Mode Control Register
SMCR_SM = 0xe // Sleep Mode Select bits
SMCR_SE = 0x1 // Sleep Enable
// GPIOR2: General Purpose IO Register 2
GPIOR2_GPIOR = 0xff // General Purpose IO Register 2 bis
// GPIOR1: General Purpose IO Register 1
GPIOR1_GPIOR = 0xff // General Purpose IO Register 1 bis
// GPIOR0: General Purpose IO Register 0
GPIOR0_GPIOR07 = 0x80 // General Purpose IO Register 0 bit 7
GPIOR0_GPIOR06 = 0x40 // General Purpose IO Register 0 bit 6
GPIOR0_GPIOR05 = 0x20 // General Purpose IO Register 0 bit 5
GPIOR0_GPIOR04 = 0x10 // General Purpose IO Register 0 bit 4
GPIOR0_GPIOR03 = 0x8 // General Purpose IO Register 0 bit 3
GPIOR0_GPIOR02 = 0x4 // General Purpose IO Register 0 bit 2
GPIOR0_GPIOR01 = 0x2 // General Purpose IO Register 0 bit 1
GPIOR0_GPIOR00 = 0x1 // General Purpose IO Register 0 bit 0
// PRR1: Power Reduction Register1
PRR1_PRUSB = 0x80 // Power Reduction USB
PRR1_PRUSART1 = 0x1 // Power Reduction USART1
// PRR0: Power Reduction Register0
PRR0_PRTIM0 = 0x20 // Power Reduction Timer/Counter0
PRR0_PRTIM1 = 0x8 // Power Reduction Timer/Counter1
PRR0_PRSPI = 0x4 // Power Reduction Serial Peripheral Interface
// CLKSTA
CLKSTA_RCON = 0x2
CLKSTA_EXTON = 0x1
// CLKSEL1
CLKSEL1_RCCKSEL = 0xf0
CLKSEL1_EXCKSEL = 0xf
// CLKSEL0
CLKSEL0_RCSUT = 0xc0
CLKSEL0_EXSUT = 0x30
CLKSEL0_RCE = 0x8
CLKSEL0_EXTE = 0x4
CLKSEL0_CLKS = 0x1
)
// Bitfields for EXINT: External Interrupts
const (
// EICRA: External Interrupt Control Register A
EICRA_ISC3 = 0xc0 // External Interrupt Sense Control Bit
EICRA_ISC2 = 0x30 // External Interrupt Sense Control Bit
EICRA_ISC1 = 0xc // External Interrupt Sense Control Bit
EICRA_ISC0 = 0x3 // External Interrupt Sense Control Bit
// EICRB: External Interrupt Control Register B
EICRB_ISC7 = 0xc0 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC6 = 0x30 // External Interrupt 7-4 Sense Control Bit
EICRB_ISC5 = 0xc // External Interrupt 7-4 Sense Control Bit
EICRB_ISC4 = 0x3 // External Interrupt 7-4 Sense Control Bit
// EIMSK: External Interrupt Mask Register
EIMSK_INT = 0xff // External Interrupt Request 7 Enable
// EIFR: External Interrupt Flag Register
EIFR_INTF = 0xff // External Interrupt Flags
// PCMSK0: Pin Change Mask Register 0
PCMSK0_PCINT = 0xff // Pin Change Enable Masks
// PCMSK1: Pin Change Mask Register 1
PCMSK1_PCINT = 0x1f
// PCIFR: Pin Change Interrupt Flag Register
PCIFR_PCIF = 0x3 // Pin Change Interrupt Flags
// PCICR: Pin Change Interrupt Control Register
PCICR_PCIE = 0x3 // Pin Change Interrupt Enables
)
// Bitfields for USART: USART
const (
// UDR1: USART I/O Data Register
UDR1_UDR1 = 0xff // USART I/O Data bits
// UCSR1A: USART Control and Status Register A
UCSR1A_RXC1 = 0x80 // USART Receive Complete
UCSR1A_TXC1 = 0x40 // USART Transmitt Complete
UCSR1A_UDRE1 = 0x20 // USART Data Register Empty
UCSR1A_FE1 = 0x10 // Framing Error
UCSR1A_DOR1 = 0x8 // Data overRun
UCSR1A_UPE1 = 0x4 // Parity Error
UCSR1A_U2X1 = 0x2 // Double the USART transmission speed
UCSR1A_MPCM1 = 0x1 // Multi-processor Communication Mode
// UCSR1B: USART Control and Status Register B
UCSR1B_RXCIE1 = 0x80 // RX Complete Interrupt Enable
UCSR1B_TXCIE1 = 0x40 // TX Complete Interrupt Enable
UCSR1B_UDRIE1 = 0x20 // USART Data register Empty Interrupt Enable
UCSR1B_RXEN1 = 0x10 // Receiver Enable
UCSR1B_TXEN1 = 0x8 // Transmitter Enable
UCSR1B_UCSZ12 = 0x4 // Character Size
UCSR1B_RXB81 = 0x2 // Receive Data Bit 8
UCSR1B_TXB81 = 0x1 // Transmit Data Bit 8
// UCSR1C: USART Control and Status Register C
UCSR1C_UMSEL1 = 0xc0 // USART Mode Select
UCSR1C_UPM1 = 0x30 // Parity Mode Bits
UCSR1C_USBS1 = 0x8 // Stop Bit Select
UCSR1C_UCSZ1 = 0x6 // Character Size
UCSR1C_UCPOL1 = 0x1 // Clock Polarity
// UCSR1D: USART Control and Status Register D
UCSR1D_CTSEN = 0x2 // CTS Enable
UCSR1D_RTSEN = 0x1 // RTS Enable
// UBRR1L: USART Baud Rate Register Bytes
// UBRR1H: USART Baud Rate Register Bytes
UBRR1_UBRR1 = 0xfff // USART Baud Rate bits
)
// Bitfields for WDT: Watchdog Timer
const (
// WDTCSR: Watchdog Timer Control Register
WDTCSR_WDIF = 0x80 // Watchdog Timeout Interrupt Flag
WDTCSR_WDIE = 0x40 // Watchdog Timeout Interrupt Enable
WDTCSR_WDP = 0x27 // Watchdog Timer Prescaler Bits
WDTCSR_WDCE = 0x10 // Watchdog Change Enable
WDTCSR_WDE = 0x8 // Watch Dog Enable
// WDTCKD: Watchdog Timer Clock Divider
WDTCKD_WDEWIF = 0x8 // Watchdog Early Warning Interrupt Flag
WDTCKD_WDEWIE = 0x4 // Watchdog Early Warning Interrupt Enable
WDTCKD_WCLKD = 0x3 // Watchdog Timer Clock Dividers
)
// Bitfields for AC: Analog Comparator
const (
// ACSR: Analog Comparator Control And Status Register
ACSR_ACD = 0x80 // Analog Comparator Disable
ACSR_ACBG = 0x40 // Analog Comparator Bandgap Select
ACSR_ACO = 0x20 // Analog Compare Output
ACSR_ACI = 0x10 // Analog Comparator Interrupt Flag
ACSR_ACIE = 0x8 // Analog Comparator Interrupt Enable
ACSR_ACIC = 0x4 // Analog Comparator Input Capture Enable
ACSR_ACIS = 0x3 // Analog Comparator Interrupt Mode Select bits
// ACMUX: Analog Comparator Input Multiplexer
ACMUX_CMUX = 0x7 // Analog Comparator Selection Bits
// DIDR1
DIDR1_AIN7D = 0x80 // AIN7 Digital Input Disable
DIDR1_AIN6D = 0x40 // AIN6 Digital Input Disable
DIDR1_AIN5D = 0x20 // AIN5 Digital Input Disable
DIDR1_AIN4D = 0x10 // AIN4 Digital Input Disable
DIDR1_AIN3D = 0x8 // AIN3 Digital Input Disable
DIDR1_AIN2D = 0x4 // AIN2 Digital Input Disable
DIDR1_AIN1D = 0x2 // AIN1 Digital Input Disable
DIDR1_AIN0D = 0x1 // AIN0 Digital Input Disable
)

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16U2.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x200;
__num_isrs = 29;

Различия файлов не показаны, т.к. их слишком много Показать различия

Просмотреть файл

@ -1,6 +0,0 @@
/* Automatically generated file. DO NOT EDIT. */
/* Generated by gen-device.py from ATmega16U4.atdf, see http://packs.download.atmel.com/ */
__flash_size = 0x4000;
__ram_size = 0x500;
__num_isrs = 43;

Показаны не все изменённые файлы, т.к. их слишком много Показать больше