This requires support in LLVM, as AVR support is still experimental. For example, in bindings/go/build.sh, add -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR to cmake_flags.
		
			
				
	
	
		
			934 строки
		
	
	
	
		
			30 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			934 строки
		
	
	
	
		
			30 КиБ
		
	
	
	
		
			Go
		
	
	
	
	
	
// 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
 | 
						|
)
 |