<?xml version="1.0" encoding="UTF-8"?>
<avr-tools-device-file 
  xmlns:xalan="http://xml.apache.org/xalan" 
  xmlns:NumHelper="NumHelper" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schema-version="4.1" xsi:noNamespaceSchemaLocation="avr_tools_device_file.xsd">
  <variants>
    <variant ordercode="ATtiny102-M7R " package="UDFN8" pinout="SOIC_8" speedmax="12000000" tempmax="105" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102F-M7R" package="UDFN8" pinout="SOIC_8" speedmax="12000000" tempmax="105" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102-SSNR " package="SOIC8" pinout="SOIC_8" speedmax="12000000" tempmax="105" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102F-SSNR" package="SOIC8" pinout="SOIC_8" speedmax="12000000" tempmax="105" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102-M8R " package="UDFN8" pinout="SOIC_8" speedmax="12000000" tempmax="125" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102F-M8R" package="UDFN8" pinout="SOIC_8" speedmax="12000000" tempmax="125" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102-SSFR " package="SOIC8" pinout="SOIC_8" speedmax="12000000" tempmax="125" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
    <variant ordercode="ATtiny102F-SSFR" package="SOIC8" pinout="SOIC_8" speedmax="12000000" tempmax="125" tempmin="-40" vccmax="5.5" vccmin="1.8"/>
  </variants>
  <devices>
    <device name="ATtiny102" architecture="AVR8L" family="tinyAVR">
      <address-spaces>
        <address-space endianness="little" name="prog" id="prog" start="0x0000" size="0x0400">
          <memory-segment start="0x0000" size="0x0400" type="flash" rw="RW" exec="1" name="FLASH" pagesize="0x80"/>
        </address-space>
        <address-space endianness="little" name="signatures" id="signatures" start="0" size="3">
          <memory-segment start="0" size="3" type="signatures" rw="R" exec="0" name="SIGNATURES"/>
        </address-space>
        <address-space endianness="little" name="fuses" id="fuses" start="0" size="0x0001">
          <memory-segment start="0" size="0x0001" type="fuses" rw="RW" exec="0" name="FUSES"/>
        </address-space>
        <address-space endianness="little" name="lockbits" id="lockbits" start="0" size="0x0001">
          <memory-segment start="0" size="0x0001" type="lockbits" rw="RW" exec="0" name="LOCKBITS"/>
        </address-space>
        <address-space size="0x4400" start="0x0000" endianness="little" name="data" id="data">
          <memory-segment type="io" size="0x40" start="0x0000" name="IO"/>
          <memory-segment type="ram" size="0x20" start="0x0040" name="SRAM"/>
          <memory-segment type="sysreg" size="0x0002" start="0x3F00" name="MAPPED_NVM_LOCK_BITS"/>
          <memory-segment type="sysreg" size="0x0002" start="0x3F40" name="MAPPED_CONFIGURATION_BITS"/>
          <memory-segment type="sysreg" size="0x0002" start="0x3F80" name="MAPPED_CALIBRATION_BITS"/>
          <memory-segment type="sysreg" size="0x0004" start="0x3FC0" name="MAPPED_DEVICE_ID_BITS"/>
          <memory-segment type="flash" start="0x4000" name="MAPPED_FLASH" size="0x0400"/>
        </address-space>
      </address-spaces>
      <peripherals>
        <module name="ADC">
          <instance name="ADC" caption="Analog-to-Digital Converter">
            <register-group name="ADC" name-in-module="ADC" offset="0x00" address-space="data" caption="Analog-to-Digital Converter"/>
            <signals>
              <signal function="ADC" group="ADC" index="0" pad="PA0"/>
              <signal function="ADC" group="ADC" index="1" pad="PA1"/>
              <signal function="ADC" group="ADC" index="5" pad="PB1"/>
              <signal function="ADC" group="ADC" index="6" pad="PB2"/>
              <signal function="ADC" group="ADC" index="7" pad="PB3"/>
            </signals>
          </instance>
        </module>
        <module name="AC">
          <instance name="AC" caption="Analog Comparator">
            <register-group name="AC" name-in-module="AC" offset="0x00" address-space="data" caption="Analog Comparator"/>
            <signals>
              <signal function="ACIN" group="AIN" index="0" pad="PA0"/>
              <signal function="ACIN" group="AIN" index="1" pad="PA1"/>
              <signal function="ACOUT" group="ACO" pad="PB3"/>
            </signals>
          </instance>
        </module>
        <module name="CPU">
          <instance name="CPU" caption="CPU Registers">
            <register-group name="CPU" name-in-module="CPU" offset="0x00" address-space="data" caption="CPU Registers"/>
          </instance>
        </module>
        <module name="PORT">
          <instance name="PORTA" caption="I/O Port">
            <register-group name="PORTA" name-in-module="PORTA" offset="0x00" address-space="data" caption="I/O Port"/>
            <signals>
              <signal function="PORTA" group="P" index="0" pad="PA0"/>
              <signal function="PORTA" group="P" index="1" pad="PA1"/>
              <signal function="PORTA" group="P" index="2" pad="PA2"/>
            </signals>
          </instance>
          <instance name="PORTB" caption="I/O Port">
            <register-group name="PORTB" name-in-module="PORTB" offset="0x00" address-space="data" caption="I/O Port"/>
            <signals>
              <signal function="PORTB" group="P" index="1" pad="PB1"/>
              <signal function="PORTB" group="P" index="2" pad="PB2"/>
              <signal function="PORTB" group="P" index="3" pad="PB3"/>
            </signals>
          </instance>
        </module>
        <module name="EXINT">
          <instance name="EXINT" caption="External Interrupts">
            <register-group name="EXINT" name-in-module="EXINT" offset="0x00" address-space="data" caption="External Interrupts"/>
            <signals>
              <signal function="EXTINT" group="PCINT" index="0" pad="PA0"/>
              <signal function="EXTINT" group="PCINT" index="1" pad="PA1"/>
              <signal function="EXTINT" group="PCINT" index="2" pad="PA2"/>
              <signal function="EXTINT" group="PCINT" index="9" pad="PB1"/>
              <signal function="EXTINT" group="PCINT" index="10" pad="PB2"/>
              <signal function="EXTINT" group="PCINT" index="11" pad="PB3"/>
              <signal function="EXTINT" group="INT" index="0" pad="PB1"/>
            </signals>
          </instance>
        </module>
        <module name="TC16">
          <instance name="TC0" caption="Timer/Counter, 16-bit">
            <register-group name="TC0" name-in-module="TC0" offset="0x00" address-space="data" caption="Timer/Counter, 16-bit"/>
            <signals>
              <signal function="DEF" group="ICP0" pad="PB2"/>
              <signal function="DEF" group="OC0A" pad="PB1"/>
              <signal function="DEF" group="OC0B" pad="PA1"/>
              <signal function="DEF" group="T0" pad="PA0"/>              
            </signals>
          </instance>
        </module>
        <module name="WDT">
          <instance name="WDT" caption="Watchdog Timer">
            <register-group name="WDT" name-in-module="WDT" offset="0x00" address-space="data" caption="Watchdog Timer"/>
          </instance>
        </module>
        <module name="FUSE">
          <instance name="FUSE" caption="Fuses">
            <register-group name="FUSE" name-in-module="FUSE" offset="0" address-space="fuses" caption="Fuses"/>
          </instance>
        </module>
        <module name="LOCKBIT">
          <instance name="LOCKBIT" caption="Lockbits">
            <register-group name="LOCKBIT" name-in-module="LOCKBIT" offset="0" address-space="lockbits" caption="Lockbits"/>
          </instance>
        </module>
        <module name="USART">
          <instance name="USART" caption="USART">
            <register-group name="USART" name-in-module="USART" offset="0" address-space="data" caption="USART"/>
            <signals>
              <signal function="USART" group="XCK" pad="PB1"/>
              <signal function="USART" group="TXD" pad="PB2"/>
              <signal function="USART" group="RXD" pad="PB3"/>
            </signals>
          </instance>
        </module>
      </peripherals>
      <interrupts>
        <interrupt index="0" name="RESET" caption="External Reset, Power-on Reset and Watchdog Reset"/>
        <interrupt index="1" name="INT0" caption="External Interrupt Request 0"/>
        <interrupt index="2" name="PCINT0" caption="Pin Change Interrupt Request 0"/>
        <interrupt index="3" name="PCINT1" caption="Pin Change Interrupt Request 1"/>
        <interrupt index="4" name="TIM0_CAPT" caption="Timer/Counter0 Input Capture"/>
        <interrupt index="5" name="TIM0_OVF" caption="Timer/Counter0 Overflow"/>
        <interrupt index="6" name="TIM0_COMPA" caption="Timer/Counter Compare Match A"/>
        <interrupt index="7" name="TIM0_COMPB" caption="Timer/Counter Compare Match B"/>
        <interrupt index="8" name="ANA_COMP" caption="Analog Comparator"/>
        <interrupt index="9" name="WDT" caption="Watchdog Time-out"/>
        <interrupt index="10" name="VLM" caption="Vcc Voltage Level Monitor"/>
        <interrupt index="11" name="ADC" caption="ADC Conversion complete"/>
        <interrupt index="12" name="USART_RXS" caption="USART RX Start"/>
        <interrupt index="13" name="USART_RXC" caption="USART RX Complete"/>
        <interrupt index="14" name="USART_DRE" caption="USART Data register empty"/>
        <interrupt index="15" name="USART_TXC" caption="USART Tx Complete"/>
      </interrupts>
      <interfaces>
        <interface name="TPI" type="tpi"/>
      </interfaces>
      <property-groups>
        <property-group name="SIGNATURES">
          <property name="SIGNATURE0" value="0x1e"/>
          <property name="SIGNATURE1" value="0x90"/>
          <property name="SIGNATURE2" value="0x0c"/>
        </property-group>
        <!-- Experimental: Expose CCP signature values -->
        <property-group name="CCP_SIGNATURES">      
          <property name="CCP_IOREG_gc" value="0xD8" caption="IOREG signature for Change Protect"/>
          <property name="CCP_SPM_gc" value="0xE7" caption="SPM signature for Change Protect"/>
        </property-group>
      </property-groups>
    </device>
  </devices>
  <modules>
    <module caption="Fuses" name="FUSE">
      <register-group caption="Fuses" name="FUSE">
        <register caption="" name="BYTE0" offset="0x00" size="1" initval="0xFF">
          <bitfield caption="Self programming enable" mask="0x08" name="SELFPROGEN"/>
          <bitfield caption="Output external clock" mask="0x04" name="CKOUT"/>
          <bitfield caption="Watch dog timer always on" mask="0x02" name="WDTON"/>
          <bitfield caption="Disable external reset" mask="0x01" name="RSTDISBL"/>
        </register>
      </register-group>
    </module>
    <module caption="Lockbits" name="LOCKBIT">
      <register-group caption="Lockbits" name="LOCKBIT">
        <register caption="" name="LOCKBIT" offset="0x00" size="1">
          <bitfield caption="Memory Lock" mask="0x03" name="LB" values="ENUM_LB"/>
        </register>
      </register-group>
      <value-group caption="" name="ENUM_LB">
        <value caption="Further programming and verification disabled" name="PROG_VER_DISABLED" value="0x00"/>
        <value caption="Further programming disabled" name="PROG_DISABLED" value="0x02"/>
        <value caption="No memory lock features enabled" name="NO_LOCK" value="0x03"/>
      </value-group>
    </module>
    <module caption="Analog-to-Digital Converter" name="ADC">
      <register-group caption="Analog-to-Digital Converter" name="ADC">
        <register caption="The ADC multiplexer Selection Register" name="ADMUX" offset="0x1B" size="1">
          <bitfield caption="Analog Channel Selection Bits" mask="0x07" name="MUX" values="ADC_MUX_TINY10X"/>
          <bitfield caption="Analog Reference voltage Selection Bits" mask="0xC0" name="REFS" values="ANALOG_ADC_V_REF_TINY10X"/>
        </register>
        <register caption="ADC Data Register Low" name="ADCL" offset="0x19" size="1" mask="0xFF"/>
        <register caption="ADC Data Register High" name="ADCH" offset="0x1A" size="1" mask="0xFF"/>
        <register caption="The ADC Control and Status register A" name="ADCSRA" offset="0x1D" size="1">
          <bitfield caption="ADC Enable" mask="0x80" name="ADEN"/>
          <bitfield caption="ADC Start Conversion" mask="0x40" name="ADSC"/>
          <bitfield caption="ADC  Auto Trigger Enable" mask="0x20" name="ADATE"/>
          <bitfield caption="ADC Interrupt Flag" mask="0x10" name="ADIF"/>
          <bitfield caption="ADC Interrupt Enable" mask="0x08" name="ADIE"/>
          <bitfield caption="ADC  Prescaler Select Bits" mask="0x07" name="ADPS" values="ANALOG_ADC_PRESCALER"/>
        </register>
        <register caption="The ADC Control and Status register B" name="ADCSRB" offset="0x1C" size="1">
          <bitfield caption="Left Adjustment for ADC Result Readout" mask="0x80" name="ADLAR"/>
          <bitfield caption="ADC Auto Trigger Source bits" mask="0x07" name="ADTS" values="ANALOG_ADC_AUTO_TRIGGER_T10"/>
        </register>
        <register caption="Digital Input Disable Register" name="DIDR0" offset="0x17" size="1">
          <bitfield caption="ADC7 Digital Input Disable" mask="0x80" name="ADC7D"/>
          <bitfield caption="ADC6 Digital Input Disable" mask="0x40" name="ADC6D"/>
          <bitfield caption="ADC5 Digital Input Disable" mask="0x20" name="ADC5D"/>
          <bitfield caption="ADC4 Digital Input Disable" mask="0x10" name="ADC4D"/>
          <bitfield caption="ADC3 Digital Input Disable" mask="0x08" name="ADC3D"/>
          <bitfield caption="ADC2 Digital Input Disable" mask="0x04" name="ADC2D"/>
          <bitfield caption="ADC1 Digital Input Disable" mask="0x02" name="ADC1D"/>
          <bitfield caption="ADC0 Digital Input Disable" mask="0x01" name="ADC0D"/>
        </register>
      </register-group>
      <value-group caption="" name="ANALOG_ADC_V_REF_TINY10X">
        <value caption="Vcc" name="VAL_0x00" value="0x00"/>
        <value caption="Internal 1.1V Referemce" name="VAL_0x01" value="0x01"/>
        <value caption="Internal 2.2V Referemce" name="VAL_0x02" value="0x02"/>
        <value caption="Internal 4.3V Referemce" name="VAL_0x03" value="0x03"/>
      </value-group>
      <value-group caption="" name="ADC_MUX_TINY10X">
        <value caption="ADC0" name="ADC0" value="0x00"/>
        <value caption="ADC1" name="ADC1" value="0x01"/>
        <value caption="ADC2" name="ADC2" value="0x02"/>
        <value caption="ADC3" name="ADC3" value="0x03"/>
        <value caption="ADC4" name="ADC4" value="0x04"/>
        <value caption="ADC5" name="ADC5" value="0x05"/>
        <value caption="ADC6" name="ADC6" value="0x06"/>
        <value caption="ADC7" name="ADC7" value="0x07"/>
      </value-group>
      <value-group caption="" name="ANALOG_ADC_PRESCALER">
        <value caption="2" name="VAL_0x00" value="0x00"/>
        <value caption="2" name="VAL_0x01" value="0x01"/>
        <value caption="4" name="VAL_0x02" value="0x02"/>
        <value caption="8" name="VAL_0x03" value="0x03"/>
        <value caption="16" name="VAL_0x04" value="0x04"/>
        <value caption="32" name="VAL_0x05" value="0x05"/>
        <value caption="64" name="VAL_0x06" value="0x06"/>
        <value caption="128" name="VAL_0x07" value="0x07"/>
      </value-group>
      <value-group caption="" name="ANALOG_ADC_AUTO_TRIGGER_T10">
        <value caption="Free Running mode" name="VAL_0x00" value="0x00"/>
        <value caption="Analog Comparator" name="VAL_0x01" value="0x01"/>
        <value caption="External Interrupt Request 0" name="VAL_0x02" value="0x02"/>
        <value caption="Timer/Counter0 Compare Match A" name="VAL_0x03" value="0x03"/>
        <value caption="Timer/Counter0 Overflow" name="VAL_0x04" value="0x04"/>
        <value caption="Timer/Counter0 Compare Match B" name="VAL_0x05" value="0x05"/>
        <value caption="Pin Change Interrupt 0 Request" name="VAL_0x06" value="0x06"/>
        <value caption="Timer/Counter0 Capture Event" name="VAL_0x07" value="0x07"/>
      </value-group>
    </module>
    <module caption="Analog Comparator" name="AC">
      <register-group caption="Analog Comparator" name="AC">
        <register caption="Analog Comparator Control And Status Register A" name="ACSRA" offset="0x1F" size="1">
          <bitfield caption="Analog Comparator Disable" mask="0x80" name="ACD"/>
          <bitfield caption="Analog Comparator Bandgap enable" mask="0x40" name="ACBG"/>
          <bitfield caption="Analog Compare Output" mask="0x20" name="ACO"/>
          <bitfield caption="Analog Comparator Interrupt Flag" mask="0x10" name="ACI"/>
          <bitfield caption="Analog Comparator Interrupt Enable" mask="0x08" name="ACIE"/>
          <bitfield caption="Analog Comparator Input Capture  Enable" mask="0x04" name="ACIC"/>
          <bitfield caption="Analog Comparator Interrupt Mode Select bits" mask="0x03" name="ACIS" values="ANALOG_COMP_INTERRUPT"/>
        </register>
        <register caption="Analog Comparator Control And Status Register B" name="ACSRB" offset="0x1E" size="1">
          <bitfield caption="Analog Comparator Output Enable" mask="02" name="ACOE"/>
          <bitfield caption="Analog Comparator positive input selection bit" mask="01" name="ACPMUX"/>
        </register>
        <register caption="" name="DIDR0" offset="0x17" size="1">
          <bitfield caption="AIN1 Digital Input Disable" mask="0x02" name="AIN1D"/>
          <bitfield caption="AIN0 Digital Input Disable" mask="0x01" name="AIN0D"/>
        </register>
      </register-group>
      <value-group caption="" name="ANALOG_COMP_INTERRUPT">
        <value caption="Interrupt on Toggle" name="VAL_0x00" value="0x00"/>
        <value caption="Reserved" name="VAL_0x01" value="0x01"/>
        <value caption="Interrupt on Falling Edge" name="VAL_0x02" value="0x02"/>
        <value caption="Interrupt on Rising Edge" name="VAL_0x03" value="0x03"/>
      </value-group>
    </module>
    <module caption="CPU Registers" name="CPU">
      <register-group caption="CPU Registers" name="CPU">
	      <register caption="Configuration Change Protection" name="CCP" offset="0x3C" size="1">
          <bitfield caption="CCP signature" mask="0xff" name="CCP" rw="RW" values="CPU_CCP"/>
	      </register>
        <register caption="Stack Pointer " name="SP" offset="0x3D" size="2" mask="0xFFFF"/>
        <register caption="Status Register" name="SREG" offset="0x3F" size="1">
          <bitfield caption="Global Interrupt Enable" mask="0x80" name="I"/>
          <bitfield caption="Bit Copy Storage" mask="0x40" name="T"/>
          <bitfield caption="Half Carry Flag" mask="0x20" name="H"/>
          <bitfield caption="Sign Bit" mask="0x10" name="S"/>
          <bitfield caption="Two's Complement Overflow Flag" mask="0x08" name="V"/>
          <bitfield caption="Negative Flag" mask="0x04" name="N"/>
          <bitfield caption="Zero Flag" mask="0x02" name="Z"/>
          <bitfield caption="Carry Flag" mask="0x01" name="C"/>
        </register>
        <register caption="Clock Main Settings Register" name="CLKMSR" offset="0x37" size="1">
          <bitfield caption="Clock Main Select Bits" mask="0x03" name="CLKMS"/>
        </register>
        <register caption="Clock Prescale Register" name="CLKPSR" offset="0x36" size="1">
          <bitfield caption="Clock Prescaler Select Bits" mask="0x0F" name="CLKPS" values="CPU_CLK_PRESCALE_4_BITS_SMALL"/>
        </register>
        <register caption="Oscillator Calibration Value" name="OSCCAL" offset="0x39" size="1" mask="0xFF"/>
        <register caption="Sleep Mode Control Register" name="SMCR" offset="0x3A" size="1">
          <bitfield caption="Sleep Mode Select Bits" mask="0x0E" name="SM" values="CPU_SLEEP_MODE_3BITS"/>
          <bitfield caption="Sleep Enable" mask="0x01" name="SE"/>
        </register>
        <register caption="Power Reduction Register" name="PRR" offset="0x35" size="1">
          <bitfield caption="Power Reduction USART" mask="0x04" name="PRUSART"/>
          <bitfield caption="Power Reduction ADC" mask="0x02" name="PRADC"/>
          <bitfield caption="Power Reduction Timer/Counter0" mask="0x01" name="PRTIM0"/>
        </register>
        <register caption="Vcc Level Monitoring Control and Status Register" name="VLMCSR" offset="0x34" size="1">
          <bitfield caption="VLM Flag" mask="0x80" name="VLMF"/>
          <bitfield caption="VLM Interrupt Enable" mask="0x40" name="VLMIE"/>
          <bitfield caption="Trigger Level of Voltage Level Monitor bits" mask="0x07" name="VLM"/>
        </register>
        <register caption="Reset Flag Register" name="RSTFLR" offset="0x3B" size="1">
          <bitfield caption="Watchdog Reset Flag" mask="0x08" name="WDRF"/>
          <bitfield caption="External Reset Flag" mask="0x02" name="EXTRF"/>
          <bitfield caption="Power-on Reset Flag" mask="0x01" name="PORF"/>
        </register>
        <register caption="Non-Volatile Memory Control and Status Register" name="NVMCSR" offset="0x32" size="1">
          <bitfield caption="Non-Volatile Memory Busy" mask="0x80" name="NVMBSY"/>
        </register>
        <register caption="Non-Volatile Memory Command" name="NVMCMD" offset="0x33" size="1" mask="0x3F"/>
      </register-group>
      <value-group caption="CCP signature select" name="CPU_CCP">
        <value caption="SPM Instruction Protection" name="SPM" value="0xE7"/>
        <value caption="IO Register Protection" name="IOREG" value="0xD8"/>
      </value-group>
      <value-group caption="" name="CPU_CLK_PRESCALE_4_BITS_SMALL">
        <value caption="1" name="VAL_0x00" value="0x00"/>
        <value caption="2" name="VAL_0x01" value="0x01"/>
        <value caption="4" name="VAL_0x02" value="0x02"/>
        <value caption="8" name="VAL_0x03" value="0x03"/>
        <value caption="16" name="VAL_0x04" value="0x04"/>
        <value caption="32" name="VAL_0x05" value="0x05"/>
        <value caption="64" name="VAL_0x06" value="0x06"/>
        <value caption="128" name="VAL_0x07" value="0x07"/>
        <value caption="256" name="VAL_0x08" value="0x08"/>
      </value-group>
      <value-group caption="Sleep Mode" name="CPU_SLEEP_MODE_3BITS">
        <value caption="Idle" name="IDLE" value="0x00"/>
        <value caption="ADC Noise Reduction" name="ADC" value="0x01"/>
        <value caption="Power Down" name="PDOWN" value="0x02"/>
        <value caption="Reserved" name="VAL_0x03" value="0x03"/>
        <value caption="Standby" name="STDBY" value="0x04"/>
        <value caption="Reserved" name="VAL_0x05" value="0x05"/>
        <value caption="Reserved" name="VAL_0x06" value="0x06"/>
        <value caption="Reserved" name="VAL_0x07" value="0x07"/>
      </value-group>
      <parameters>
        <param name="CORE_VERSION" value="AVR8L_0"/>
      </parameters>
    </module>
    <module caption="I/O Port" name="PORT">
      <register-group caption="I/O Port" name="PORTB">
        <register caption="Port Control Register" name="PORTCR" offset="0x16" size="1">
          <bitfield caption="Break-Before-Make Mode Enable for PORTB" mask="0x02" name="BBMB"/>
        </register>
        <register caption="Pull-up Enable Control Register for PORTB" name="PUEB" offset="0x07" size="1" mask="0x0F"/>
        <register caption="Data Direction Register, Port B" name="DDRB" offset="0x05" size="1" mask="0x0F"/>
        <register caption="Input Pins, Port B" name="PINB" offset="0x04" size="1" mask="0x0F"/>
        <register caption="Port B Data register" name="PORTB" offset="0x06" size="1" mask="0x0F"/>
      </register-group>
      <register-group caption="I/O Port" name="PORTA">
        <register caption="Port Control Register" name="PORTCR" offset="0x16" size="1">
          <bitfield caption="Break-Before-Make Mode Enable for PORTA" mask="0x01" name="BBMA"/>
        </register>
        <register caption="Pull-up Enable Control Register for PORTA" name="PUEA" offset="0x03" size="1" mask="0xFF"/>
        <register caption="Data Direction Register, Port A" name="DDRA" offset="0x01" size="1" mask="0xFF"/>
        <register caption="Input Pins, Port A" name="PINA" offset="0x00" size="1" mask="0xFF"/>
        <register caption="Port A Data register" name="PORTA" offset="0x02" size="1" mask="0xFF"/>
      </register-group>
    </module>
    <module caption="External Interrupts" name="EXINT">
      <register-group caption="External Interrupts" name="EXINT">
        <register caption="External Interrupt Control Register A" name="EICRA" offset="0x15" size="1">
          <bitfield caption="Interrupt Sense Control 0 Bit 1" mask="0x02" name="ISC01"/>
          <bitfield caption="Interrupt Sense Control 0 Bit 0" mask="0x01" name="ISC00"/>
        </register>
        <register caption="External Interrupt Mask register" name="EIMSK" offset="0x13" size="1">
          <bitfield caption="External Interrupt Request 0 Enable" mask="0x01" name="INT0"/>
        </register>
        <register caption="External Interrupt Flag register" name="EIFR" offset="0x14" size="1">
          <bitfield caption="External Interrupt Flag 0" mask="0x01" name="INTF0"/>
        </register>
        <register caption="Pin Change Interrupt Control Register" name="PCICR" offset="0x12" size="1">
          <bitfield caption="Pin Change Interrupt Enable 1" mask="0x02" name="PCIE1"/>
          <bitfield caption="Pin Change Interrupt Enable 0" mask="0x01" name="PCIE0"/>
        </register>
        <register caption="Pin Change Interrupt Flag Register" name="PCIFR" offset="0x11" size="1">
          <bitfield caption="Pin Change Interrupt Flag 1" mask="0x02" name="PCIF1"/>
          <bitfield caption="Pin Change Interrupt Flag 0" mask="0x01" name="PCIF0"/>
        </register>
        <register caption="Pin Change Mask Register 1" name="PCMSK1" offset="0x10" size="1" mask="0x0F">
          <bitfield caption="Pin Change Enable Mask 1 Bit 3" mask="0x08" name="PCINT11"/>
          <bitfield caption="Pin Change Enable Mask 1 Bit 2" mask="0x04" name="PCINT10"/>
          <bitfield caption="Pin Change Enable Mask 1 Bit 1" mask="0x02" name="PCINT9"/>
          <bitfield caption="Pin Change Enable Mask 1 Bit 0" mask="0x01" name="PCINT8"/>
        </register>
        <register caption="Pin Change Mask Register 0" name="PCMSK0" offset="0x0F" size="1" mask="0xFF">
          <bitfield caption="Pin Change Enable Mask 0 Bit 7" mask="0x80" name="PCINT7"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 6" mask="0x40" name="PCINT6"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 5" mask="0x20" name="PCINT5"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 4" mask="0x10" name="PCINT4"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 3" mask="0x08" name="PCINT3"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 2" mask="0x04" name="PCINT2"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 1" mask="0x02" name="PCINT1"/>
          <bitfield caption="Pin Change Enable Mask 0 Bit 0" mask="0x01" name="PCINT0"/>
        </register>
      </register-group>
    </module>
    <module caption="Timer/Counter, 16-bit" name="TC16">
      <register-group caption="Timer/Counter, 16-bit" name="TC0">
        <register caption="Timer/Counter 0 Control Register A" name="TCCR0A" offset="0x2E" size="1">
          <bitfield caption="Compare Output Mode for Channel A bits" mask="0xC0" name="COM0A"/>
          <bitfield caption="Compare Output Mode for Channel B bits" mask="0x30" name="COM0B"/>
          <bitfield caption="Waveform Generation Mode" mask="0x03" name="WGM0"/>
        </register>
        <register caption="Timer/Counter 0 Control Register B" name="TCCR0B" offset="0x2D" size="1">
          <bitfield caption="Input Capture Noise Canceler" mask="0x80" name="ICNC0"/>
          <bitfield caption="Input Capture Edge Select" mask="0x40" name="ICES0"/>
          <bitfield caption="Waveform Generation Mode" mask="0x18" name="WGM0" lsb="2"/>
          <bitfield caption="Clock Select" mask="0x07" name="CS0" values="CLK_SEL_3BIT_EXT"/>
        </register>
        <register caption="Timer/Counter 0 Control Register C" name="TCCR0C" offset="0x2C" size="1">
          <bitfield caption="Force Output Compare for Channel A" mask="0x80" name="FOC0A"/>
          <bitfield caption="Force Output Compare for Channel B" mask="0x40" name="FOC0B"/>
        </register>
        <register caption="Timer/Counter0 " name="TCNT0" offset="0x28" size="2" mask="0xFFFF"/>
        <register caption="Timer/Counter 0 Output Compare Register A " name="OCR0A" offset="0x26" size="2" mask="0xFFFF"/>
        <register caption="Timer/Counter0 Output Compare Register B " name="OCR0B" offset="0x24" size="2" mask="0xFFFF"/>
        <register caption="Input Capture Register  Bytes" name="ICR0" offset="0x22" size="2" mask="0xFFFF"/>
        <register caption="Timer Interrupt Mask Register 0" name="TIMSK0" offset="0x2B" size="1">
          <bitfield caption="Input Capture Interrupt Enable" mask="0x20" name="ICIE0"/>
          <bitfield caption="Output Compare B Match Interrupt Enable" mask="0x04" name="OCIE0B"/>
          <bitfield caption="Output Compare A Match Interrupt Enable" mask="0x02" name="OCIE0A"/>
          <bitfield caption="Overflow Interrupt Enable" mask="0x01" name="TOIE0"/>
        </register>
        <register caption="Overflow Interrupt Enable" name="TIFR0" offset="0x2A" size="1">
          <bitfield caption="Input Capture Flag" mask="0x20" name="ICF0"/>
          <bitfield caption="Timer Output Compare Flag 0B" mask="0x04" name="OCF0B"/>
          <bitfield caption="Timer Output Compare Flag 0A" mask="0x02" name="OCF0A"/>
          <bitfield caption="Timer Overflow Flag" mask="0x01" name="TOV0"/>
        </register>
        <register caption="General Timer/Counter Control Register" name="GTCCR" offset="0x2F" size="1">
          <bitfield caption="Timer Synchronization Mode" mask="0x80" name="TSM"/>
          <bitfield caption="Remap Bit for 14 pin part only" mask="0x02" name="REMAP"/>
          <bitfield caption="Prescaler Reset" mask="0x01" name="PSR"/>
        </register>
      </register-group>
      <value-group caption="" name="CLK_SEL_3BIT_EXT">
        <value caption="No Clock Source (Stopped)" name="VAL_0x00" value="0x00"/>
        <value caption="Running, No Prescaling" name="VAL_0x01" value="0x01"/>
        <value caption="Running, CLK/8" name="VAL_0x02" value="0x02"/>
        <value caption="Running, CLK/64" name="VAL_0x03" value="0x03"/>
        <value caption="Running, CLK/256" name="VAL_0x04" value="0x04"/>
        <value caption="Running, CLK/1024" name="VAL_0x05" value="0x05"/>
        <value caption="Running, ExtClk Tx Falling Edge" name="VAL_0x06" value="0x06"/>
        <value caption="Running, ExtClk Tx Rising Edge" name="VAL_0x07" value="0x07"/>
      </value-group>
    </module>
    <module caption="USART" name="USART">
      <register-group caption="USART" name="USART">
        <register caption="USART I/O Data Register" name="UDR" offset="0x08" bit-addressable="false" size="1" mask="0xFF"/>
        <register caption="USART Control and Status Register A" name="UCSRA" offset="0x0E" bit-addressable="false" size="1">
          <bitfield caption="USART Receive Complete" mask="0x80" name="RXC"/>
          <bitfield caption="USART Transmitt Complete" mask="0x40" name="TXC"/>
          <bitfield caption="USART Data Register Empty" mask="0x20" name="UDRE"/>
          <bitfield caption="Framing Error" mask="0x10" name="FE"/>
          <bitfield caption="Data overRun" mask="0x08" name="DOR"/>
          <bitfield caption="Parity Error" mask="0x04" name="UPE"/>
          <bitfield caption="Double the USART transmission speed" mask="0x02" name="U2X"/>
          <bitfield caption="Multi-processor Communication Mode" mask="0x01" name="MPCM"/>
        </register>
        <register caption="USART Control and Status Register B" name="UCSRB" offset="0x0D" bit-addressable="false" size="1">
          <bitfield caption="RX Complete Interrupt Enable" mask="0x80" name="RXCIE"/>
          <bitfield caption="TX Complete Interrupt Enable" mask="0x40" name="TXCIE"/>
          <bitfield caption="USART Data register Empty Interrupt Enable" mask="0x20" name="UDRIE"/>
          <bitfield caption="Receiver Enable" mask="0x10" name="RXEN"/>
          <bitfield caption="Transmitter Enable" mask="0x08" name="TXEN"/>
          <bitfield caption="Character Size" mask="0x04" name="UCSZ2"/>
          <bitfield caption="Receive Data Bit 8" mask="0x02" name="RXB8"/>
          <bitfield caption="Transmit Data Bit 8" mask="0x01" name="TXB8"/>
        </register>
        <register caption="USART Control and Status Register C" name="UCSRC" offset="0x0C" bit-addressable="false" size="1">
          <bitfield caption="USART Mode Select" mask="0xC0" name="UMSEL" values="COMM_USART_MODE"/>
          <bitfield caption="Parity Mode Bits" mask="0x30" name="UPM" values="COMM_UPM_PARITY_MODE"/>
          <bitfield caption="Stop Bit Select" mask="0x08" name="USBS" values="COMM_STOP_BIT_SEL"/>
          <bitfield caption="Character Size" mask="0x06" name="UCSZ"/>
          <bitfield caption="Clock Polarity" mask="0x01" name="UCPOL"/>
        </register>
        <register caption="USART Control and Status Register D" name="UCSRD" offset="0x0B" bit-addressable="false" size="1">
          <bitfield caption="USART RX Start Interrupt Enable" mask="0x80" name="RXSIE"/>
          <bitfield caption="USART RX Start Flag" mask="0x40" name="RXS"/>
          <bitfield caption="Start frame detection enable" mask="0x20" name="SFDE"/>
        </register>
        <register caption="USART Baud Rate Register  Bytes" name="UBRR" offset="0x09" bit-addressable="false" size="2" mask="0x0FFF"/>
      </register-group>
      <value-group caption="" name="COMM_USART_MODE">
        <value caption="Asynchronous Operation" name="VAL_0x00" value="0x00"/>
        <value caption="Synchronous Operation" name="VAL_0x01" value="0x01"/>
      </value-group>
      <value-group caption="" name="COMM_UPM_PARITY_MODE">
        <value caption="Disabled" name="VAL_0x00" value="0x00"/>
        <value caption="Reserved" name="VAL_0x01" value="0x01"/>
        <value caption="Enabled, Even Parity" name="VAL_0x02" value="0x02"/>
        <value caption="Enabled, Odd Parity" name="VAL_0x03" value="0x03"/>
      </value-group>
      <value-group caption="" name="COMM_STOP_BIT_SEL">
        <value caption="1-bit" name="VAL_0x00" value="0x00"/>
        <value caption="2-bit" name="VAL_0x01" value="0x01"/>
      </value-group>
    </module>
    <module caption="Watchdog Timer" name="WDT">
      <register-group caption="Watchdog Timer" name="WDT">
        <register caption="Watchdog Timer Control and Status Register" name="WDTCSR" offset="0x31" size="1">
          <bitfield caption="Watchdog Timer Interrupt Flag" mask="0x80" name="WDIF"/>
          <bitfield caption="Watchdog Timer Interrupt Enable" mask="0x40" name="WDIE"/>
          <bitfield caption="Watchdog Timer Prescaler Bits" mask="0x27" name="WDP" values="WDOG_TIMER_PRESCALE_4BITS"/>
          <bitfield caption="Watch Dog Enable" mask="0x08" name="WDE"/>
        </register>
      </register-group>
      <value-group caption="" name="WDOG_TIMER_PRESCALE_4BITS">
        <value caption="Oscillator Cycles 2K" name="VAL_0x00" value="0x00"/>
        <value caption="Oscillator Cycles 4K" name="VAL_0x01" value="0x01"/>
        <value caption="Oscillator Cycles 8K" name="VAL_0x02" value="0x02"/>
        <value caption="Oscillator Cycles 16K" name="VAL_0x03" value="0x03"/>
        <value caption="Oscillator Cycles 32K" name="VAL_0x04" value="0x04"/>
        <value caption="Oscillator Cycles 64K" name="VAL_0x05" value="0x05"/>
        <value caption="Oscillator Cycles 128K" name="VAL_0x06" value="0x06"/>
        <value caption="Oscillator Cycles 256K" name="VAL_0x07" value="0x07"/>
        <value caption="Oscillator Cycles 512K" name="VAL_0x08" value="0x08"/>
        <value caption="Oscillator Cycles 1024K" name="VAL_0x09" value="0x09"/>
      </value-group>
    </module>
  </modules>
  <pinouts>
    <pinout name="SOIC_8">
      <pin pad="VCC" position="1"/>
      <pin pad="PA0" position="2"/>
      <pin pad="PA1" position="3"/>
      <pin pad="PA2" position="4"/>
      <pin pad="PB1" position="5"/>
      <pin pad="PB2" position="6"/>
      <pin pad="PB3" position="7"/>
      <pin pad="GND" position="8"/>
    </pinout>
    
  </pinouts>
</avr-tools-device-file>