Matt Kucia

Cloud, software, hardware


/projects/avrada/tool_sampleM8
with Interfaces; use Interfaces;
with System;

  -- architecture = AVR8
  -- AVR Studio 5 XML avr register definition generator 
  -- Maciej Kucia, Krakow 2012 

package AVR.ATmega8 is

  --
  --  ANALOG_COMPARATOR
  --

  -- Special Function IO Register
  SFIOR : Unsigned_8;
  for SFIOR'Address	 use System'To_Address (16#50#);

   SFIOR_ACME		: constant := 16#08#; -- Analog Comparator Multiplexer Enable


  --
  --  SFIOR
  --

  -- Analog Comparator Control And Status Register
  ACSR : Unsigned_8;
  for ACSR'Address	 use System'To_Address (16#28#);

   ACSR_ACD		: constant := 16#80#; -- Analog Comparator Disable
   ACSR_ACBG		: constant := 16#40#; -- Analog Comparator Bandgap Select
   ACSR_ACO		: constant := 16#20#; -- Analog Compare Output
   ACSR_ACI		: constant := 16#10#; -- Analog Comparator Interrupt Flag
   ACSR_ACIE		: constant := 16#08#; -- Analog Comparator Interrupt Enable
   ACSR_ACIC		: constant := 16#04#; -- Analog Comparator Input Capture Enable
   ACSR_ACIS		: constant := 16#03#; -- Analog Comparator Interrupt Mode Select bits


  --
  --  SPI
  --

  -- SPI Data Register
  SPDR : Unsigned_8;
  for SPDR'Address	 use System'To_Address (16#2F#);



  --
  --  SPDR
  --

  -- SPI Status Register
  SPSR : Unsigned_8;
  for SPSR'Address	 use System'To_Address (16#2E#);

   SPSR_SPIF		: constant := 16#80#; -- SPI Interrupt Flag
   SPSR_WCOL		: constant := 16#40#; -- Write Collision Flag
   SPSR_SPI2X		: constant := 16#01#; -- Double SPI Speed Bit


  --
  --  SPSR
  --

  -- SPI Control Register
  SPCR : Unsigned_8;
  for SPCR'Address	 use System'To_Address (16#2D#);

   SPCR_SPIE		: constant := 16#80#; -- SPI Interrupt Enable
   SPCR_SPE		: constant := 16#40#; -- SPI Enable
   SPCR_DORD		: constant := 16#20#; -- Data Order
   SPCR_MSTR		: constant := 16#10#; -- Master/Slave Select
   SPCR_CPOL		: constant := 16#08#; -- Clock polarity
   SPCR_CPHA		: constant := 16#04#; -- Clock Phase
   SPCR_SPR		: constant := 16#03#; -- SPI Clock Rate Selects


  --
  --  EXTERNAL_INTERRUPT
  --

  -- General Interrupt Control Register
  GICR : Unsigned_8;
  for GICR'Address	 use System'To_Address (16#5B#);

   GICR_INT		: constant := 16#C0#; -- External Interrupt Request 1 Enable
   GICR_IVSEL		: constant := 16#02#; -- Interrupt Vector Select
   GICR_IVCE		: constant := 16#01#; -- Interrupt Vector Change Enable


  --
  --  GICR
  --

  -- General Interrupt Flag Register
  GIFR : Unsigned_8;
  for GIFR'Address	 use System'To_Address (16#5A#);

   GIFR_INTF		: constant := 16#C0#; -- External Interrupt Flags


  --
  --  GIFR
  --

  -- MCU Control Register
  MCUCR : Unsigned_8;
  for MCUCR'Address	 use System'To_Address (16#55#);

   MCUCR_ISC1		: constant := 16#0C#; -- Interrupt Sense Control 1 Bits
   MCUCR_ISC0		: constant := 16#03#; -- Interrupt Sense Control 0 Bits


  --
  --  TIMER_COUNTER_0
  --

  -- Timer/Counter Interrupt Mask Register
  TIMSK : Unsigned_8;
  for TIMSK'Address	 use System'To_Address (16#59#);

   TIMSK_TOIE0		: constant := 16#01#; -- Timer/Counter0 Overflow Interrupt Enable


  --
  --  TIMSK
  --

  -- Timer/Counter Interrupt Flag register
  TIFR : Unsigned_8;
  for TIFR'Address	 use System'To_Address (16#58#);

   TIFR_TOV0		: constant := 16#01#; -- Timer/Counter0 Overflow Flag


  --
  --  TIFR
  --

  -- Timer/Counter0 Control Register
  TCCR0 : Unsigned_8;
  for TCCR0'Address	 use System'To_Address (16#53#);

   TCCR0_CS02		: constant := 16#04#; -- Clock Select0 bit 2
   TCCR0_CS01		: constant := 16#02#; -- Clock Select0 bit 1
   TCCR0_CS00		: constant := 16#01#; -- Clock Select0 bit 0


  --
  --  TCCR0
  --

  -- Timer Counter 0
  TCNT0 : Unsigned_8;
  for TCNT0'Address	 use System'To_Address (16#52#);



  --
  --  TIMER_COUNTER_1
  --

  -- Timer/Counter Interrupt Mask Register
  TIMSK : Unsigned_8;
  for TIMSK'Address	 use System'To_Address (16#59#);

   TIMSK_TICIE1		: constant := 16#20#; -- Timer/Counter1 Input Capture Interrupt Enable
   TIMSK_OCIE1A		: constant := 16#10#; -- Timer/Counter1 Output CompareA Match Interrupt Enable
   TIMSK_OCIE1B		: constant := 16#08#; -- Timer/Counter1 Output CompareB Match Interrupt Enable
   TIMSK_TOIE1		: constant := 16#04#; -- Timer/Counter1 Overflow Interrupt Enable


  --
  --  TIMSK
  --

  -- Timer/Counter Interrupt Flag register
  TIFR : Unsigned_8;
  for TIFR'Address	 use System'To_Address (16#58#);

   TIFR_ICF1		: constant := 16#20#; -- Input Capture Flag 1
   TIFR_OCF1A		: constant := 16#10#; -- Output Compare Flag 1A
   TIFR_OCF1B		: constant := 16#08#; -- Output Compare Flag 1B
   TIFR_TOV1		: constant := 16#04#; -- Timer/Counter1 Overflow Flag


  --
  --  TIFR
  --

  -- Timer/Counter1 Control Register A
  TCCR1A : Unsigned_8;
  for TCCR1A'Address	 use System'To_Address (16#4F#);

   TCCR1A_COM1A		: constant := 16#C0#; -- Compare Output Mode 1A, bits
   TCCR1A_COM1B		: constant := 16#30#; -- Compare Output Mode 1B, bits
   TCCR1A_FOC1A		: constant := 16#08#; -- Force Output Compare 1A
   TCCR1A_FOC1B		: constant := 16#04#; -- Force Output Compare 1B
   TCCR1A_WGM1		: constant := 16#03#; -- Waveform Generation Mode


  --
  --  TCCR1A
  --

  -- Timer/Counter1 Control Register B
  TCCR1B : Unsigned_8;
  for TCCR1B'Address	 use System'To_Address (16#4E#);

   TCCR1B_ICNC1		: constant := 16#80#; -- Input Capture 1 Noise Canceler
   TCCR1B_ICES1		: constant := 16#40#; -- Input Capture 1 Edge Select
   TCCR1B_WGM1		: constant := 16#18#; -- Waveform Generation Mode
   TCCR1B_CS1		: constant := 16#07#; -- Prescaler source of Timer/Counter 1


  --
  --  TCCR1B
  --

  -- Timer/Counter1  Bytes
  TCNT1 : Unsigned_8;
  for TCNT1'Address	 use System'To_Address (16#4C#);



  --
  --  TCNT1
  --

  -- Timer/Counter1 Output Compare Register  Bytes
  OCR1A : Unsigned_8;
  for OCR1A'Address	 use System'To_Address (16#4A#);



  --
  --  OCR1A
  --

  -- Timer/Counter1 Output Compare Register  Bytes
  OCR1B : Unsigned_8;
  for OCR1B'Address	 use System'To_Address (16#48#);



  --
  --  OCR1B
  --

  -- Timer/Counter1 Input Capture Register  Bytes
  ICR1 : Unsigned_8;
  for ICR1'Address	 use System'To_Address (16#46#);



  --
  --  TIMER_COUNTER_2
  --

  -- Timer/Counter Interrupt Mask register
  TIMSK : Unsigned_8;
  for TIMSK'Address	 use System'To_Address (16#59#);

   TIMSK_OCIE2		: constant := 16#80#; -- Timer/Counter2 Output Compare Match Interrupt Enable
   TIMSK_TOIE2		: constant := 16#40#; -- Timer/Counter2 Overflow Interrupt Enable


  --
  --  TIMSK
  --

  -- Timer/Counter Interrupt Flag Register
  TIFR : Unsigned_8;
  for TIFR'Address	 use System'To_Address (16#58#);

   TIFR_OCF2		: constant := 16#80#; -- Output Compare Flag 2
   TIFR_TOV2		: constant := 16#40#; -- Timer/Counter2 Overflow Flag


  --
  --  TIFR
  --

  -- Timer/Counter2 Control Register
  TCCR2 : Unsigned_8;
  for TCCR2'Address	 use System'To_Address (16#45#);

   TCCR2_FOC2		: constant := 16#80#; -- Force Output Compare
   TCCR2_WGM20		: constant := 16#40#; -- Waveform Genration Mode
   TCCR2_COM2		: constant := 16#30#; -- Compare Output Mode bits
   TCCR2_WGM21		: constant := 16#08#; -- Waveform Generation Mode
   TCCR2_CS2		: constant := 16#07#; -- Clock Select bits


  --
  --  TCCR2
  --

  -- Timer/Counter2
  TCNT2 : Unsigned_8;
  for TCNT2'Address	 use System'To_Address (16#44#);



  --
  --  TCNT2
  --

  -- Timer/Counter2 Output Compare Register
  OCR2 : Unsigned_8;
  for OCR2'Address	 use System'To_Address (16#43#);



  --
  --  OCR2
  --

  -- Asynchronous Status Register
  ASSR : Unsigned_8;
  for ASSR'Address	 use System'To_Address (16#42#);

   ASSR_AS2		: constant := 16#08#; -- Asynchronous Timer/counter2
   ASSR_TCN2UB		: constant := 16#04#; -- Timer/Counter2 Update Busy
   ASSR_OCR2UB		: constant := 16#02#; -- Output Compare Register2 Update Busy
   ASSR_TCR2UB		: constant := 16#01#; -- Timer/counter Control Register2 Update Busy


  --
  --  ASSR
  --

  -- Special Function IO Register
  SFIOR : Unsigned_8;
  for SFIOR'Address	 use System'To_Address (16#50#);

   SFIOR_PSR2		: constant := 16#02#; -- Prescaler Reset Timer/Counter2


  --
  --  USART
  --

  -- USART I/O Data Register
  UDR : Unsigned_8;
  for UDR'Address	 use System'To_Address (16#2C#);



  --
  --  UDR
  --

  -- USART Control and Status Register A
  UCSRA : Unsigned_8;
  for UCSRA'Address	 use System'To_Address (16#2B#);

   UCSRA_RXC		: constant := 16#80#; -- USART Receive Complete
   UCSRA_TXC		: constant := 16#40#; -- USART Transmitt Complete
   UCSRA_UDRE		: constant := 16#20#; -- USART Data Register Empty
   UCSRA_FE		: constant := 16#10#; -- Framing Error
   UCSRA_DOR		: constant := 16#08#; -- Data overRun
   UCSRA_UPE		: constant := 16#04#; -- Parity Error
   UCSRA_U2X		: constant := 16#02#; -- Double the USART transmission speed
   UCSRA_MPCM		: constant := 16#01#; -- Multi-processor Communication Mode


  --
  --  UCSRA
  --

  -- USART Control and Status Register B
  UCSRB : Unsigned_8;
  for UCSRB'Address	 use System'To_Address (16#2A#);

   UCSRB_RXCIE		: constant := 16#80#; -- RX Complete Interrupt Enable
   UCSRB_TXCIE		: constant := 16#40#; -- TX Complete Interrupt Enable
   UCSRB_UDRIE		: constant := 16#20#; -- USART Data register Empty Interrupt Enable
   UCSRB_RXEN		: constant := 16#10#; -- Receiver Enable
   UCSRB_TXEN		: constant := 16#08#; -- Transmitter Enable
   UCSRB_UCSZ2		: constant := 16#04#; -- Character Size
   UCSRB_RXB8		: constant := 16#02#; -- Receive Data Bit 8
   UCSRB_TXB8		: constant := 16#01#; -- Transmit Data Bit 8


  --
  --  UCSRB
  --

  -- USART Control and Status Register C
  UCSRC : Unsigned_8;
  for UCSRC'Address	 use System'To_Address (16#40#);

   UCSRC_URSEL		: constant := 16#80#; -- Register Select
   UCSRC_UMSEL		: constant := 16#40#; -- USART Mode Select
   UCSRC_UPM		: constant := 16#30#; -- Parity Mode Bits
   UCSRC_USBS		: constant := 16#08#; -- Stop Bit Select
   UCSRC_UCSZ		: constant := 16#06#; -- Character Size
   UCSRC_UCPOL		: constant := 16#01#; -- Clock Polarity


  --
  --  UCSRC
  --

  -- USART Baud Rate Register Hight Byte
  UBRRH : Unsigned_8;
  for UBRRH'Address	 use System'To_Address (16#40#);



  --
  --  UBRRH
  --

  -- USART Baud Rate Register Low Byte
  UBRRL : Unsigned_8;
  for UBRRL'Address	 use System'To_Address (16#29#);



  --
  --  TWI
  --

  -- TWI Bit Rate register
  TWBR : Unsigned_8;
  for TWBR'Address	 use System'To_Address (16#20#);



  --
  --  TWBR
  --

  -- TWI Control Register
  TWCR : Unsigned_8;
  for TWCR'Address	 use System'To_Address (16#56#);

   TWCR_TWINT		: constant := 16#80#; -- TWI Interrupt Flag
   TWCR_TWEA		: constant := 16#40#; -- TWI Enable Acknowledge Bit
   TWCR_TWSTA		: constant := 16#20#; -- TWI Start Condition Bit
   TWCR_TWSTO		: constant := 16#10#; -- TWI Stop Condition Bit
   TWCR_TWWC		: constant := 16#08#; -- TWI Write Collition Flag
   TWCR_TWEN		: constant := 16#04#; -- TWI Enable Bit
   TWCR_TWIE		: constant := 16#01#; -- TWI Interrupt Enable


  --
  --  TWCR
  --

  -- TWI Status Register
  TWSR : Unsigned_8;
  for TWSR'Address	 use System'To_Address (16#21#);

   TWSR_TWS		: constant := 16#F8#; -- TWI Status
   TWSR_TWPS		: constant := 16#03#; -- TWI Prescaler


  --
  --  TWSR
  --

  -- TWI Data register
  TWDR : Unsigned_8;
  for TWDR'Address	 use System'To_Address (16#23#);



  --
  --  TWDR
  --

  -- TWI (Slave) Address register
  TWAR : Unsigned_8;
  for TWAR'Address	 use System'To_Address (16#22#);

   TWAR_TWA		: constant := 16#FE#; -- TWI (Slave) Address register Bits
   TWAR_TWGCE		: constant := 16#01#; -- TWI General Call Recognition Enable Bit


  --
  --  WATCHDOG
  --

  -- Watchdog Timer Control Register
  WDTCR : Unsigned_8;
  for WDTCR'Address	 use System'To_Address (16#41#);

   WDTCR_WDCE		: constant := 16#10#; -- Watchdog Change Enable
   WDTCR_WDE		: constant := 16#08#; -- Watch Dog Enable
   WDTCR_WDP		: constant := 16#07#; -- Watch Dog Timer Prescaler bits


  --
  --  PORTB
  --

  -- Port B Data Register
  PORTB : Unsigned_8;
  for PORTB'Address	 use System'To_Address (16#38#);



  --
  --  PORTB
  --

  -- Port B Data Direction Register
  DDRB : Unsigned_8;
  for DDRB'Address	 use System'To_Address (16#37#);



  --
  --  DDRB
  --

  -- Port B Input Pins
  PINB : Unsigned_8;
  for PINB'Address	 use System'To_Address (16#36#);



  --
  --  PORTC
  --

  -- Port C Data Register
  PORTC : Unsigned_8;
  for PORTC'Address	 use System'To_Address (16#35#);



  --
  --  PORTC
  --

  -- Port C Data Direction Register
  DDRC : Unsigned_8;
  for DDRC'Address	 use System'To_Address (16#34#);



  --
  --  DDRC
  --

  -- Port C Input Pins
  PINC : Unsigned_8;
  for PINC'Address	 use System'To_Address (16#33#);



  --
  --  PORTD
  --

  -- Port D Data Register
  PORTD : Unsigned_8;
  for PORTD'Address	 use System'To_Address (16#32#);



  --
  --  PORTD
  --

  -- Port D Data Direction Register
  DDRD : Unsigned_8;
  for DDRD'Address	 use System'To_Address (16#31#);



  --
  --  DDRD
  --

  -- Port D Input Pins
  PIND : Unsigned_8;
  for PIND'Address	 use System'To_Address (16#30#);



  --
  --  EEPROM
  --

  -- EEPROM Address Register  Bytes
  EEAR : Unsigned_8;
  for EEAR'Address	 use System'To_Address (16#3E#);



  --
  --  EEAR
  --

  -- EEPROM Data Register
  EEDR : Unsigned_8;
  for EEDR'Address	 use System'To_Address (16#3D#);



  --
  --  EEDR
  --

  -- EEPROM Control Register
  EECR : Unsigned_8;
  for EECR'Address	 use System'To_Address (16#3C#);

   EECR_EERIE		: constant := 16#08#; -- EEPROM Ready Interrupt Enable
   EECR_EEMWE		: constant := 16#04#; -- EEPROM Master Write Enable
   EECR_EEWE		: constant := 16#02#; -- EEPROM Write Enable
   EECR_EERE		: constant := 16#01#; -- EEPROM Read Enable


  --
  --  CPU
  --

  -- Status Register
  SREG : Unsigned_8;
  for SREG'Address	 use System'To_Address (16#5F#);

   SREG_I		: constant := 16#80#; -- Global Interrupt Enable
   SREG_T		: constant := 16#40#; -- Bit Copy Storage
   SREG_H		: constant := 16#20#; -- Half Carry Flag
   SREG_S		: constant := 16#10#; -- Sign Bit
   SREG_V		: constant := 16#08#; -- Two's Complement Overflow Flag
   SREG_N		: constant := 16#04#; -- Negative Flag
   SREG_Z		: constant := 16#02#; -- Zero Flag
   SREG_C		: constant := 16#01#; -- Carry Flag


  --
  --  SREG
  --

  -- Stack Pointer 
  SP : Unsigned_8;
  for SP'Address	 use System'To_Address (16#5D#);



  --
  --  SP
  --

  -- MCU Control Register
  MCUCR : Unsigned_8;
  for MCUCR'Address	 use System'To_Address (16#55#);

   MCUCR_SE		: constant := 16#80#; -- Sleep Enable
   MCUCR_SM		: constant := 16#70#; -- Sleep Mode Select
   MCUCR_ISC1		: constant := 16#0C#; -- Interrupt Sense Control 1 Bits
   MCUCR_ISC0		: constant := 16#03#; -- Interrupt Sense Control 0 Bits


  --
  --  MCUCR
  --

  -- MCU Control And Status Register
  MCUCSR : Unsigned_8;
  for MCUCSR'Address	 use System'To_Address (16#54#);

   MCUCSR_WDRF		: constant := 16#08#; -- Watchdog Reset Flag
   MCUCSR_BORF		: constant := 16#04#; -- Brown-out Reset Flag
   MCUCSR_EXTRF		: constant := 16#02#; -- External Reset Flag
   MCUCSR_PORF		: constant := 16#01#; -- Power-on reset flag


  --
  --  MCUCSR
  --

  -- Oscillator Calibration Value
  OSCCAL : Unsigned_8;
  for OSCCAL'Address	 use System'To_Address (16#51#);



  --
  --  OSCCAL
  --

  -- Store Program Memory Control Register
  SPMCR : Unsigned_8;
  for SPMCR'Address	 use System'To_Address (16#57#);

   SPMCR_SPMIE		: constant := 16#80#; -- SPM Interrupt Enable
   SPMCR_RWWSB		: constant := 16#40#; -- Read-While-Write Section Busy
   SPMCR_RWWSRE		: constant := 16#10#; -- Read-While-Write Section Read Enable
   SPMCR_BLBSET		: constant := 16#08#; -- Boot Lock Bit Set
   SPMCR_PGWRT		: constant := 16#04#; -- Page Write
   SPMCR_PGERS		: constant := 16#02#; -- Page Erase
   SPMCR_SPMEN		: constant := 16#01#; -- Store Program Memory Enable


  --
  --  SPMCR
  --

  -- Special Function IO Register
  SFIOR : Unsigned_8;
  for SFIOR'Address	 use System'To_Address (16#50#);

   SFIOR_ADHSM		: constant := 16#10#; -- ADC High Speed Mode
   SFIOR_PUD		: constant := 16#04#; -- Pull-up Disable
   SFIOR_PSR10		: constant := 16#01#; -- Prescaler Reset Timer/Counter1 and Timer/Counter0


  --
  --  AD_CONVERTER
  --

  -- The ADC multiplexer Selection Register
  ADMUX : Unsigned_8;
  for ADMUX'Address	 use System'To_Address (16#27#);

   ADMUX_REFS		: constant := 16#C0#; -- Reference Selection Bits
   ADMUX_ADLAR		: constant := 16#20#; -- Left Adjust Result
   ADMUX_MUX		: constant := 16#0F#; -- Analog Channel and Gain Selection Bits


  --
  --  ADMUX
  --

  -- The ADC Control and Status register
  ADCSRA : Unsigned_8;
  for ADCSRA'Address	 use System'To_Address (16#26#);

   ADCSRA_ADEN		: constant := 16#80#; -- ADC Enable
   ADCSRA_ADSC		: constant := 16#40#; -- ADC Start Conversion
   ADCSRA_ADFR		: constant := 16#20#; -- ADC  Free Running Select
   ADCSRA_ADIF		: constant := 16#10#; -- ADC Interrupt Flag
   ADCSRA_ADIE		: constant := 16#08#; -- ADC Interrupt Enable
   ADCSRA_ADPS		: constant := 16#07#; -- ADC  Prescaler Select Bits


  --
  --  ADCSRA
  --

  -- ADC Data Register  Bytes
  ADC : Unsigned_8;
  for ADC'Address	 use System'To_Address (16#24#);


end AVR.ATmega8;