<fcd>

  <build>
    <compiler exe="$(appdir)compilers\avr\batchfiles\avra.bat" params="$(chip:l) &quot;$(outdir)$(target).elf&quot; &quot;$(outdir)$(target).c&quot; &quot;$(outdir)$(target).lst&quot;" />		
    <linker exe="$(appdir)compilers\avr\batchfiles\avrb.bat" params="&quot;$(outdir)$(target).elf&quot; &quot;$(outdir)$(target).hex&quot; &quot;$(outdir)$(target).cof&quot;" />
    <programmer exe="$(appdir)compilers\avr\batchfiles\avrc_arduinoA.bat" params="m328p arduino com7 57600 &quot;$(target).hex&quot;" UsesComm="1" />
  </build>

  <device file="Arduino Pro 328 5V"
          name="ATMEGA328"
          namealt="m328"
          product="AVR"
          family="ATMEGA"
          bits="8" >

    <comminfo pid=""
          vid="0403"
          devdesc="" />

    <clock max_speed="16000000"
           master_divider="1"
           fixed="16000000" />

    <memory>
      <flash bytes="32768" />
      <ram bytes="2048" />
    </memory>

    <configuration address="0x0000"
                   mult="1" >
      <format>
      </format>

      <setting>
      </setting>

    </configuration>

    <pins sides="4" smd="1" >
        <pin name="(OC2B/Digital 3) PD3 " port="3" bit="3" />
        <pin name="(XCK/T0/Digital 4) PD4" port="3" bit="4" />
        <pin name="" />
        <pin name="" />
        <pin name="" />
        <pin name="" />
        <pin name="Xtal 1" />
        <pin name="Xtal 2" />
        <pin name="(T1/Digital 5 PWM/T1 ) PD5" port="3" bit="5" />
        <pin name="(AIN0/Digital 6/PWM) PD6" port="3" bit="6" />
        <pin name="(Digital 7 ) PD7" port="3" bit="7" />
        <pin name="(Digital 8/) PB0" port="1" bit="0" />
        <pin name="(Digital 9/PWM/INT) PB1" port="1" bit="1" />
        <pin name="(SS/Digital 10/PWM) PB2" port="1" bit="2" />
        <pin name="(MOSI/Digital 11/PWM/INT) PB3" port="1" bit="3" />
        <pin name="(MISO/Digital 12) PB4" port="1" bit="4" />
        <pin name="PB5 9(SCK/PCINT5 Digital 13 led)" port="1" bit="5" />
		<pin name="" />
		<pin name="" />
        <pin name="" />
        <pin name="" />
        <pin name="" />
        <pin name="PC0 (AN0)" port="2" bit="0" adc="0" />
        <pin name="PC1 (AN1)" port="2" bit="1" adc="1" />
        <pin name="PC2 (AN2)" port="2" bit="2" adc="2" />
        <pin name="PC3 (AN3)" port="2" bit="3" adc="3" />
        <pin name="PC4 (SDA/AN4)" port="2" bit="4" adc="4" />
        <pin name="PC5 (SCL/AN5)" port="2" bit="5" adc="5" />
		<pin name="PC6 Reset" port="2" bit="6" />
		<pin name="PD0 (RXD/Digital 0)" port="3" bit="0" />
		<pin name="PD1 (TXD/Digital 1)" port="3" bit="1" />
		<pin name="PD2(PCINT18/INT0/Digital 2)" port="3" bit="2" />
    </pins>

    <adc type="2" bits="10" >
      <speed>
        <option name="Fosc / 2" value="1" />
        <option name="Fosc / 4" value="2" />
        <option name="Fosc / 8" value="3" />
        <option name="Fosc / 16" value="4" />
        <option name="Fosc / 32" value="5" />
        <option name="Fosc / 64" value="6" />
        <option name="Fosc / 128" value="7" />
      </speed>
    </adc>

    <eeprom type="1" bytes="1024" />

    <spi>
      <miso port="1" pin="4" />
      <mosi port="1" pin="3" />
      <clk port="1" pin="5" />
      <ss port="1" pin="2" />
    </spi>

    <uart>
      <tx port="3" pin="1" />
      <rx port="3" pin="0" />
    </uart>

    <i2c master="1" >
      <sda port="2" pin="4" />
      <scl port="2" pin="5" />
    </i2c>

    <pwm type="1" >
      <timer>
        <option name="timer0" count="2" />
        <option name="timer1" count="2" />
        <option name="timer2" count="2" />
        <option name="timer3" count="0" />
        <option name="timer4" count="0" />
        <option name="timer5" count="0" />
      </timer>
      <prescaler>
        <option name="1" value="1" />
        <option name="8" value="8" />
        <option name="64" value="64" />
        <option name="256" value="256" />
        <option name="1024" value="1024" />
      </prescaler>
      <out port="3" pin="6" />
      <out port="3" pin="5" />
      <out port="1" pin="1" />
      <out port="1" pin="2" />
      <out port="1" pin="3" />
      <out port="3" pin="3" />
    </pwm>

    <interrupts>

      <interrupt
          ident="TMR0"
          type="timer8"
          name="Timer 0"
          handler='#ifndef MX_TIMER0OVF_HANDLER\n#define MX_TIMER0OVF_HANDLER\nISR(TIMER0_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <TIMER0 OVF> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n'
          enable="TIMSK0 |= (1 << TOIE0);\n"
          disable="TIMSK0 &= ~(1 << TOIE0);\n" >
        <timer overflow="256" extrange="0" />
        <options>
          <prescale name="Prescaler Rate">
            <entry name="no clock" value ="TCCR0B &= 0xf8;\n" />
            <entry name="1:1" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x01;\n" />
            <entry name="1:8" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x02;\n" />
            <entry name="1:64" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x03;\n" />
            <entry name="1:256" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x04;\n" />
            <entry name="1:1024" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x05;\n" />
            <entry name="T0 pin, -ve edge" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x06;\n" />
            <entry name="T0 pin, +ve edge" value ="TCCR0B &= 0xf8;\nTCCR0B |= 0x07;\n" />
          </prescale>
        </options>
      </interrupt>

      <interrupt
          ident="TMR1"
          type="timer16"
          name="Timer 1"
          handler='#ifndef MX_TIMER1OVF_HANDLER\n#define MX_TIMER1OVF_HANDLER\nISR(TIMER1_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <TIMER1 OVF> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n'
          enable="TIMSK1 |= (1 << TOIE1);\n"
          disable="TIMSK1 &= ~(1 << TOIE1);\n" >
        <timer overflow="65536" extrange="0" />
        <options>
          <prescale name="Prescaler Rate">
            <entry name="no clock" value ="TCCR1B &= 0xf8;\n" />
            <entry name="1:1" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x01;\n" />
            <entry name="1:8" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x02;\n" />
            <entry name="1:64" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x03;\n" />
            <entry name="1:256" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x04;\n" />
            <entry name="1:1024" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x05;\n" />
            <entry name="T0 pin, -ve edge" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x06;\n" />
            <entry name="T0 pin, +ve edge" value ="TCCR1B &= 0xf8;\nTCCR1B |= 0x07;\n" />
          </prescale>
        </options>
      </interrupt>

      <interrupt
          ident="TMR2"
          type="timer8"
          name="Timer 2"
          handler='#ifndef MX_TIMER2OVF_HANDLER\n#define MX_TIMER2OVF_HANDLER\nISR(TIMER2_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <TIMER2 OVF> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n'
          enable="TIMSK2 |= (1 << TOIE2);\n"
          disable="TIMSK2 &= ~(1 << TOIE2);\n" >
        <timer overflow="256" extrange="0" />
        <options>
          <prescale name="Prescaler Rate">
            <entry name="no clock" value ="TCCR2B &= 0xf8;\n" />
            <entry name="1:1" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x01;\n" />
            <entry name="1:8" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x02;\n" />
            <entry name="1:64" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x03;\n" />
            <entry name="1:256" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x04;\n" />
            <entry name="1:1024" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x05;\n" />
            <entry name="T0 pin, -ve edge" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x06;\n" />
            <entry name="T0 pin, +ve edge" value ="TCCR2B &= 0xf8;\nTCCR2B |= 0x07;\n" />
          </prescale>
        </options>
      </interrupt>

        <interrupt ident='IOC0' type='multipin' name='IOC PORT B' handler='#ifndef MX_PCINT0_HANDLER\n#define MX_PCINT0_HANDLER\nISR(PCINT0_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The &lt;PORTB Change&gt; interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.\n#endif\n' enable='PCMSK0=%pB0h;\nPCICR |= (1 &lt;&lt; PCIE0);\n' disable='PCICR &amp;= ~(1 &lt;&lt; PCIE0);\n' >
            <ioc config='0x0C' >
                <rising port='1' mask='0xFF' />
                <falling port='1' mask='0xFF' />
            </ioc>
        </interrupt>
        <interrupt ident='IOC1' type='multipin' name='IOC PORT C' handler='#ifndef MX_PCINT1_HANDLER\n#define MX_PCINT1_HANDLER\nISR(PCINT1_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The &lt;PORTC Change&gt; interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.\n#endif\n' enable='PCMSK1=%pC0h;\nPCICR |= (1 &lt;&lt; PCIE1);\n' disable='PCICR &amp;= ~(1 &lt;&lt; PCIE1);\n' >
            <ioc config='0x0C' >
                <rising port='2' mask='0x7F' />
                <falling port='2' mask='0x7F' />
            </ioc>
        </interrupt>
        <interrupt ident='IOC2' type='multipin' name='IOC PORT D' handler='#ifndef MX_PCINT2_HANDLER\n#define MX_PCINT2_HANDLER\nISR(PCINT2_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The &lt;PORTD Change&gt; interrupt has previously been enabled, so the macro &lt;%n&gt; may never get called.\n#endif\n' enable='PCMSK2=%pD0h;\nPCICR |= (1 &lt;&lt; PCIE2);\n' disable='PCICR &amp;= ~(1 &lt;&lt; PCIE2);\n' >
            <ioc config='0x0C' >
                <rising port='3' mask='0xFF' />
                <falling port='3' mask='0xFF' />
            </ioc>
        </interrupt>

      <interrupt
          ident="INT0"
          type="pin"
          name="INT0 Input"
          handler="#ifndef MX_INT0_HANDLER\n#define MX_INT0_HANDLER\nISR(INT0_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <INT0 Input> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n"
          enable="EIMSK |= (1 << INT0);\n"
          disable="EIMSK &= ~(1 << INT0);\n" >
        <ioc config="3">
          <rising port="3" mask="1" />
          <falling port="3" mask="1" />
        </ioc>
        <options>
          <edge name="Interrupt Edge Select">
            <entry name="Rising edge of INT" value="EICRA |= (1 << ISC01) | (1 << ISC00);\n" />
            <entry name="Falling edge of INT" value="EICRA |= (1 << ISC01);\nEICRA &= ~(1 << ISC00);\n" />
          </edge>
        </options>
      </interrupt>

      <interrupt
          ident="INT1"
          type="pin"
          name="INT1 Input"
          handler="#ifndef MX_INT1_HANDLER\n#define MX_INT1_HANDLER\nISR(INT1_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <INT1 Input> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n"
          enable="EIMSK |= (1 << INT1);\n"
          disable="EIMSK &= ~(1 << INT1);\n" >
        <ioc config="3">
          <rising port="3" mask="2" />
          <falling port="3" mask="2" />
        </ioc>
        <options>
          <edge name="Interrupt Edge Select">
            <entry name="Rising edge of INT" value="EICRA |= (1 << ISC11) | (1 << ISC10);\n" />
            <entry name="Falling edge of INT" value="EICRA |= (1 << ISC11);\nEICRA &= ~(1 << ISC10);\n" />
          </edge>
        </options>
      </interrupt>

      <interrupt
          ident="RXINT0"
          type="comms"
          name="UART0 RX"
          handler="#ifndef MX_UART0_RX_HANDLER\n#define MX_UART0_RX_HANDLER\nISR(USART_RX_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The <UART0 RX> interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n"
          enable="UCSR0B |= (1 << RXCIE0);\n"
          disable="UCSR0B &=  ~(1 << RXCIE0);\n" >
      </interrupt>


    </interrupts>

  </device>

  <inline>

    <defines code="#define MX_UART_ID\n#define MX_UART_UCSRC\n\n#include <stdlib.h>\n#include <stdio.h>\n#include <math.h>\n#include <avr\io.h>\n#include <avr\interrupt.h>\n#include <avr\eeprom.h>\n#include <avr\wdt.h>\n\n" />
    <directives code="" />

    <main>
      <start code="int main()\n{\n" />
      <end code="\tmainendloop: goto mainendloop;\n}\n\n" />
      <init code="\tMCUSR=0x00;\n\tMCUSR=0x00;\n\twdt_disable();\n" />
    </main>

    <interrupt>
      <enable code="sei();\n" />
      <start code="" />
      <end code="" />
      <init code="" />
    </interrupt>

    <config>
      <start code='//Configuration Start\n' /> 
      <body code='' /> 
      <end code='//Configuration End\n\n' />
    </config>

  </inline>

  <flowkit2>
    <analog>
      <map from='AN0' port="2" pin="0" />
      <map from='AN1' port="2" pin="1" />
      <map from='AN2' port="2" pin="2" />
      <map from='AN3' port="2" pin="3" />
      <map from='AN4' port="2" pin="4" />
      <map from='AN5' port="2" pin="5" />
    </analog>
    <digital>
      <map from='D0' port="3" pin="0" />
      <map from='D1' port="3" pin="1" />
      <map from='D2' port="3" pin="2" />
      <map from='D3' port="3" pin="3" />
      <map from='D4' port="3" pin="4" />
      <map from='D5' port="3" pin="5" />
      <map from='D6' port="3" pin="6" />
      <map from='D7' port="3" pin="7" />
      <map from='D8' port="1" pin="0" />
      <map from='D9' port="1" pin="1" />
      <map from='D10' port="1" pin="2" />
      <map from='D11' port="1" pin="3" />
      <map from='D12' port="1" pin="4" />
      <map from='D13' port="1" pin="5" />
      <map from='D14' port="2" pin="4" />
      <map from='D15' port="2" pin="5" />
    </digital>
  </flowkit2>

  <test>

    <icd>
      <clock port="1" pin="1" />
      <data port="1" pin="0" />
    </icd>

  </test>

</fcd>
