[Device] Pins=32 Ports=4 ADCPins=8 ADCBits=10 MaxClock=20000000 PrescalerBits=3 ClockDivider=1 ConfigAddress=0x0000 ConfigCount=3 PortBits=8 PWMCount=6 UARTCount=1 SPICount=1 I2CCount=1 CANCount=0 ComparatorCount=0 TimerCount8=2 TimerCount16=1 EepromSize=1024 HasAltPWM=0 DefaultPackageType=1 FlowcodeProduct=AVR ChipName=atmega328p AltChipName=m328p FlashSize=32768 RamSize=2048 [ICD] ClockPort=1 ClockPin=6 DataPort=1 DataPin=7 [Pins] Pin1="(PCINT19/OC2B/INT1) PD3" Pin2="(PCINT20/XCK/T0) PD4" Pin3="GND" Pin4="VCC" Pin5="GND" Pin6="VCC" Pin7="(PCINT6/XTAL1/TOSC1) PB6" Pin8="(PCINT7/XTAL2/TOSC2) PB7" Pin9="(PCINT21/OC0B/T1) PD5" Pin10="(PCINT22/OC0A/AIN0) PD6" Pin11="(PCINT23/AIN1) PD7" Pin12="(PCINT0/CLK0/ICP1) PB0" Pin13="PB1 (OC1A/PCINT1)" Pin14="PB2 (/SS/OC1B/PCINT2)" Pin15="PB3 (MOSI/OC2A/PCINT3)" Pin16="PB4 (MISO/PCINT4)" Pin17="PB5 (SCK/PCINT5)" Pin18="AVcc" Pin19="ADC6" Pin20="ARef" Pin21="Gnd" Pin22="ADC7" Pin23="PC0 (ADC0/PCINT8)" Pin24="PC1 (ADC1/PCINT9)" Pin25="PC2 (ADC2/PCINT10)" Pin26="PC3 (ADC3/PCINT11)" Pin27="PC4 (ADC4/SDA/PCINT12)" Pin28="PC5 (ADC5/SCL/PCINT13)" Pin29="PC6 (PCINT14/RESET)" Pin30="(PCINT16/RXD) PD0" Pin31="(PCINT17/TXD) PD1" Pin32="(PCINT18/INT0) PD2" [Ports] PortPin1=0x0303 PortPin2=0x0304 PortPin7=0x0106 PortPin8=0x0107 PortPin9=0x0305 PortPin10=0x0306 PortPin11=0x0307 PortPin12=0x0100 PortPin13=0x0101 PortPin14=0x0102 PortPin15=0x0103 PortPin16=0x0104 PortPin17=0x0105 PortPin23=0x0200 PortPin24=0x0201 PortPin25=0x0202 PortPin26=0x0203 PortPin27=0x0204 PortPin28=0x0205 PortPin29=0x0206 PortPin30=0x0300 PortPin31=0x0301 PortPin32=0x0302 [PortMasks] PortMask0=0x00 PortMask1=0xFF PortMask2=0x7F PortMask3=0xFF [ADCPins] ADC0=23 ADC1=24 ADC2=25 ADC3=26 ADC4=27 ADC5=28 ADC6=19 ADC7=22 [Code] ;Substitute macros ;%c Clock Speed ;%o Operand ;%s Prescaler ;%p PortID ;%m MaskBits ;%i Inverse Mask ;%a ADC channel ;%a Config Address ;%v Config Value ;%r Interrupt Flag Register ;%b Interrupt Flag Bit ;%n Interrupt Macro Name Directives="#define F_CPU %cUL\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n" MainStart="int main()\n{\n" MainEnd="\tmainendloop: goto mainendloop;\n}\n\n" IntStart="" IntEnd="" Initialise="MCUSR=0x00;\n" IntInit="" InputCmdFull="DDR%p = DDR%p & %i;\n%o = PIN%p;\n" InputCmdOneBit="DDR%p = DDR%p & %i;\n%o = ((PIN%p & %m) == %m);\n" InputCmdMask="DDR%p = DDR%p & %i;\n%o = PIN%p & %m;\n" OutputCmdFull="DDR%p = 0xFF;\nPORT%p = %o;\n" OutputCmdOneBit="DDR%p = DDR%p | %m;\nif (%o)\n\tPORT%p = (PORT%p & %i) | %m;\nelse\n\tPORT%p = PORT%p & %i;\n" OutputCmdMask="DDR%p = DDR%p | %m;\nPORT%p = (PORT%p & %i) | %o;\n" DelayCmdS="delay_s(%o);\n" DelayCmdMs="delay_ms(%o);\n" DelayCmdUs="delay_us(%o);\n" WdtDelayCmdS="Wdt_Delay_S(%o);\n" WdtDelayCmdMs="Wdt_Delay_Ms(%o);\n" InitialPortLetter="A" ConfigData="#pragma DATA %a, %v\n" IntHandler="" [Defines] Define1=#define FC_CAL_AVR Define2=#define MX_ADC Define3=#define MX_ADC_TYPE_2 Define4=#define MX_ADC_BITS_10 Define5=#define MX_EE Define6=#define MX_EE_SIZE 1024 Define7=#define MX_SPI_1 Define8=#define MX_SPI_1_MISO_PORT PORTB Define9=#define MX_SPI_1_MISO_TRIS DDRB Define10=#define MX_SPI_1_MISO_PIN 4 Define11=#define MX_SPI_1_MOSI_PORT PORTB Define12=#define MX_SPI_1_MOSI_TRIS DDRB Define13=#define MX_SPI_1_MOSI_PIN 3 Define14=#define MX_SPI_1_CLK_PORT PORTB Define15=#define MX_SPI_1_CLK_TRIS DDRB Define16=#define MX_SPI_1_CLK_PIN 5 Define17=#define MX_SPI_1_SS_PORT PORTB Define18=#define MX_SPI_1_SS_TRIS DDRB Define19=#define MX_SPI_1_SS_PIN 2 Define20=#define MX_UART_1 Define21=#define MX_UART_1_TX_PORT PORTD Define22=#define MX_UART_1_TX_TRIS DDRD Define23=#define MX_UART_1_TX_PIN 1 Define24=#define MX_UART_1_RX_PORT PORTD Define25=#define MX_UART_1_RX_TRIS DDRD Define26=#define MX_UART_1_RX_PIN 0 Define27=#define MX_UART_ID Define28=#define MX_UART_UCSRC Define29=#define MX_MI2C Define30=#define MX_I2C_1 Define31=#define MX_I2C_1_SDA_PORT PORTC Define32=#define MX_I2C_1_SDA_TRIS DDRC Define33=#define MX_I2C_1_SDA_PIN 4 Define34=#define MX_I2C_1_SCL_PORT PORTC Define35=#define MX_I2C_1_SCL_TRIS DDRC Define36=#define MX_I2C_1_SCL_PIN 5 Define37=#define MX_PWM Define38=#define MX_PWMTYPE 1 Define39=#define MX_PWM_CNT 6 Define40=#define MX_PWM_TMR0_CNT 2 Define41=#define MX_PWM_TMR1_CNT 2 Define42=#define MX_PWM_TMR2_CNT 2 Define43=#define MX_PWM_PSCA1 Define44=#define MX_PWM_PSCA8 Define45=#define MX_PWM_PSCA64 Define46=#define MX_PWM_PSCA256 Define47=#define MX_PWM_PSCA1024 Define48=#define MX_PWM_1_PORT PORTD Define49=#define MX_PWM_1_TRIS DDRD Define50=#define MX_PWM_1_PIN 6 Define51=#define MX_PWM_2_PORT PORTD Define52=#define MX_PWM_2_TRIS DDRD Define53=#define MX_PWM_2_PIN 5 Define54=#define MX_PWM_3_PORT PORTB Define55=#define MX_PWM_3_TRIS DDRB Define56=#define MX_PWM_3_PIN 1 Define57=#define MX_PWM_4_PORT PORTB Define58=#define MX_PWM_4_TRIS DDRB Define59=#define MX_PWM_4_PIN 2 Define60=#define MX_PWM_5_PORT PORTB Define61=#define MX_PWM_5_TRIS DDRB Define62=#define MX_PWM_5_PIN 3 Define63=#define MX_PWM_6_PORT PORTD Define64=#define MX_PWM_6_TRIS DDRD Define65=#define MX_PWM_6_PIN 3 [Interrupts] GeneralInit="sei();\n" Count=7 1=TMR0 2=TMR1 3=TMR2 4=PORTB 5=INT0 6=INT1 7=RXINT0 [TMR0] Name="TMR0 Overflow" HandlerCode="#ifndef MX_TIMER0OVF_HANDLER\n#define MX_TIMER0OVF_HANDLER\nISR(TIMER0_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="TIMSK0 |= (1 << TOIE0);\n" DisableCode="TIMSK0 &= ~(1 << TOIE0);\n" OptCnt=1 PrescaleOpt=1 MaxTimerOverflow=256 Opt1="Clock Source & Prescaler Select" Opt1Cnt=8 Opt1_1="no clock" Opt1_1Val="TCCR0B &= 0xf8;\n" Opt1_2="1:1" Opt1_2Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x01;\n" Opt1_3="1:8" Opt1_3Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x02;\n" Opt1_4="1:64" Opt1_4Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x03;\n" Opt1_5="1:256" Opt1_5Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x04;\n" Opt1_6="1:1024" Opt1_6Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x05;\n" Opt1_7="T0 pin, -ve edge" Opt1_7Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x06;\n" Opt1_8="T0 pin, +ve edge" Opt1_8Val="TCCR0B &= 0xf8;\nTCCR0B |= 0x07;\n" [TMR1] Name="TMR1 Overflow" HandlerCode="#ifndef MX_TIMER1OVF_HANDLER\n#define MX_TIMER1OVF_HANDLER\nISR(TIMER1_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="TIMSK1 |= (1 << TOIE1);\n" DisableCode="TIMSK1 &= ~(1 << TOIE1);\n" OptCnt=1 PrescaleOpt=1 MaxTimerOverflow=65536 Opt1="Clock Source & Prescaler Select" Opt1Cnt=8 Opt1_1="no clock" Opt1_1Val="TCCR1B &= 0xf8;\n" Opt1_2="1:1" Opt1_2Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x01;\n" Opt1_3="1:8" Opt1_3Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x02;\n" Opt1_4="1:64" Opt1_4Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x03;\n" Opt1_5="1:256" Opt1_5Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x04;\n" Opt1_6="1:1024" Opt1_6Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x05;\n" Opt1_7="T1 pin, -ve edge" Opt1_7Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x06;\n" Opt1_8="T1 pin, +ve edge" Opt1_8Val="TCCR1B &= 0xf8;\nTCCR1B |= 0x07;\n" [TMR2] Name="TMR2 Overflow" HandlerCode="#ifndef MX_TIMER2OVF_HANDLER\n#define MX_TIMER2OVF_HANDLER\nISR(TIMER2_OVF_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="TIMSK2 |= (1 << TOIE2);\n" DisableCode="TIMSK2 &= ~(1 << TOIE2);\n" OptCnt=1 PrescaleOpt=1 MaxTimerOverflow=256 Opt1="Clock Source & Prescaler Select" Opt1Cnt=8 Opt1_1="no clock" Opt1_1Val="TCCR2B &= 0xf8;\n" Opt1_2="1:1" Opt1_2Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x01;\n" Opt1_3="1:8" Opt1_3Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x02;\n" Opt1_4="1:32" Opt1_4Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x03;\n" Opt1_5="1:64" Opt1_5Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x04;\n" Opt1_6="1:128" Opt1_6Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x05;\n" Opt1_7="1:256" Opt1_7Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x06;\n" Opt1_8="1:1024" Opt1_8Val="TCCR2B &= 0xf8;\nTCCR2B |= 0x07;\n" [PORTB] Name="PORTB Change" REMask=0x00,0xFF FEMask=0x00,0xFF ConfOpt=0x04 HandlerCode="#ifndef MX_PCINT0_HANDLER\n#define MX_PCINT0_HANDLER\nISR(PCINT0_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="PCICR |= (1 << PCIE0);\n" DisableCode="PCICR &= ~(1 << PCIE0);\n" OptCnt=0 [INT0] Name="INT0 Input" REMask=0x00,0x00,0x00,0x04 FEMask=0x00,0x00,0x00,0x04 ConfOpt=0x03 EdgeOpt=0x01 HandlerCode="#ifndef MX_INT0_HANDLER\n#define MX_INT0_HANDLER\nISR(INT0_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="EIMSK |= (1 << INT0);\n" DisableCode="EIMSK &= ~(1 << INT0);\n" OptCnt=1 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of INT0" Opt1_1Val="EICRA |= (1 << ISC01) | (1 << ISC00);\n" Opt1_2="falling edge of INT0" Opt1_2Val="EICRA |= (1 << ISC01);\nEICRA &= ~(1 << ISC00);\n" [INT1] Name="INT1 Input" REMask=0x00,0x00,0x00,0x08 FEMask=0x00,0x00,0x00,0x08 ConfOpt=0x03 EdgeOpt=0x01 HandlerCode="#ifndef MX_INT1_HANDLER\n#define MX_INT1_HANDLER\nISR(INT1_vect)\n{\n\tFCM_%n();\n}\n#else\n#warning The interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="EIMSK |= (1 << INT1);\n" DisableCode="EIMSK &= ~(1 << INT1);\n" OptCnt=1 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of INT1" Opt1_1Val="EICRA |= (1 << ISC11) | (1 << ISC10);\n" Opt1_2="falling edge of INT1" Opt1_2Val="EICRA |= (1 << ISC11);\nEICRA &= ~(1 << ISC10);\n" [RXINT0] Name="UART0 RX" HandlerCode="#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 interrupt has previously been enabled, so the macro <%n> may never get called.\n#endif\n" EnableCode="UCSR0B |= (1 << RXCIE0);\n" DisableCode="UCSR0B &= ~(1 << RXCIE0);\n" OptCnt=0