[Device] Pins=40 Ports=4 ADCPins=8 ADCBits=10 MaxClock=20000000 PrescalerBits=3 ClockDivider=1 ConfigAddress=0x0000 ConfigCount=2 PortBits=8 PWMCount=4 UARTCount=1 SPICount=1 I2CCount=1 CANCount=0 ComparatorCount=0 TimerCount8=2 TimerCount16=1 EepromSize=1024 HasAltPWM=0 DefaultPackageType=0 FlowcodeProduct=AVR ChipName=atmega32 AltChipName=m32 FlashSize=32768 RamSize=2048 [ICD] ClockPort=1 ClockPin=6 DataPort=1 DataPin=7 [Pins] Pin1="(XCK/T0) PB0" Pin2="(T1) PB1" Pin3="(INT2/AIN0) PB2" Pin4="(OC0/AIN1) PB3" Pin5="(/SS) PB4" Pin6="(MOSI) PB5" Pin7="(MISO) PB6" Pin8="(SCK) PB7" Pin9="/RESET" Pin10="VCC" Pin11="GND" Pin12="XTAL2" Pin13="XTAL1" Pin14="(RXD) PD0" Pin15="(TXD) PD1" Pin16="(INT0) PD2" Pin17="(INT1) PD3" Pin18="(OC1B) PD4" Pin19="(OC1A) PD5" Pin20="(ICP1) PD6" Pin21="PD7 (OC2)" Pin22="PC0 (SCL)" Pin23="PC1 (SDA)" Pin24="PC2 (TCK)" Pin25="PC3 (TMS)" Pin26="PC4 (TD0)" Pin27="PC5 (TDI)" Pin28="PC6 (TOSC1)" Pin29="PC7 (TOSC2)" Pin30="AVCC" Pin31="GND" Pin32="AREF" Pin33="PA7 (ADC7)" Pin34="PA6 (ADC6)" Pin35="PA5 (ADC5)" Pin36="PA4 (ADC4)" Pin37="PA3 (ADC3)" Pin38="PA2 (ADC2)" Pin39="PA1 (ADC1)" Pin40="PA0 (ADC0)" [Ports] PortPin1=0x0100 PortPin2=0x0101 PortPin3=0x0102 PortPin4=0x0103 PortPin5=0x0104 PortPin6=0x0105 PortPin7=0x0106 PortPin8=0x0107 PortPin14=0x0300 PortPin15=0x0301 PortPin16=0x0302 PortPin17=0x0303 PortPin18=0x0304 PortPin19=0x0305 PortPin20=0x0306 PortPin21=0x0307 PortPin22=0x0200 PortPin23=0x0201 PortPin24=0x0202 PortPin25=0x0203 PortPin26=0x0204 PortPin27=0x0205 PortPin28=0x0206 PortPin29=0x0207 PortPin33=0x0007 PortPin34=0x0006 PortPin35=0x0005 PortPin36=0x0004 PortPin37=0x0003 PortPin38=0x0002 PortPin39=0x0001 PortPin40=0x0000 [PortMasks] PortMask0=0xFF PortMask1=0xFF PortMask2=0xFF PortMask3=0xFF [ADCPins] ADC0=40 ADC1=39 ADC2=38 ADC3=37 ADC4=36 ADC5=35 ADC6=34 ADC7=33 [ADC_ConvSpeed] Count=7 Opt1=Fosc / 2 Opt1_Val=1 Opt2=Fosc / 4 Opt2_Val=2 Opt3=Fosc / 8 Opt3_Val=3 Opt4=Fosc / 16 Opt4_Val=4 Opt5=Fosc / 32 Opt5_Val=5 Opt6=Fosc / 64 Opt6_Val=6 Opt7=Fosc / 128 Opt7_Val=7 [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="MCUCSR=0x00;\n\twdt_disable();\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_1 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 6 Define11=#define MX_SPI_1_MOSI_PORT PORTB Define12=#define MX_SPI_1_MOSI_TRIS DDRB Define13=#define MX_SPI_1_MOSI_PIN 5 Define14=#define MX_SPI_1_CLK_PORT PORTB Define15=#define MX_SPI_1_CLK_TRIS DDRB Define16=#define MX_SPI_1_CLK_PIN 7 Define17=#define MX_SPI_1_SS_PORT PORTB Define18=#define MX_SPI_1_SS_TRIS DDRB Define19=#define MX_SPI_1_SS_PIN 4 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_MI2C Define28=#define MX_I2C_1 Define29=#define MX_I2C_1_SDA_PORT PORTC Define30=#define MX_I2C_1_SDA_TRIS DDRC Define31=#define MX_I2C_1_SDA_PIN 1 Define32=#define MX_I2C_1_SCL_PORT PORTC Define33=#define MX_I2C_1_SCL_TRIS DDRC Define34=#define MX_I2C_1_SCL_PIN 0 Define35=#define MX_PWM Define36=#define MX_PWMTYPE 1 Define37=#define MX_PWM_CNT 4 Define38=#define MX_PWM_TMR0_CNT 1 Define39=#define MX_PWM_TMR1_CNT 2 Define39=#define MX_PWM_TMR2_CNT 1 Define40=#define MX_PWM_PSCA1 Define41=#define MX_PWM_PSCA8 Define42=#define MX_PWM_PSCA64 Define43=#define MX_PWM_PSCA256 Define44=#define MX_PWM_PSCA1024 Define45=#define MX_PWM_1_PORT PORTB Define46=#define MX_PWM_1_TRIS DDRB Define47=#define MX_PWM_1_PIN 3 Define48=#define MX_PWM_2_PORT PORTD Define49=#define MX_PWM_2_TRIS DDRD Define50=#define MX_PWM_2_PIN 5 Define51=#define MX_PWM_3_PORT PORTD Define52=#define MX_PWM_3_TRIS DDRD Define53=#define MX_PWM_3_PIN 4 Define54=#define MX_PWM_4_PORT PORTD Define55=#define MX_PWM_4_TRIS DDRD Define56=#define MX_PWM_4_PIN 7 Define57=#define OCR0A OCR0 Define58=#define COM0A0 COM00 Define59=#define COM0A1 COM01 [Interrupts] GeneralInit="sei();\n" Count=7 1=TMR0 2=TMR1 3=TMR2 4=INT0 5=INT1 6=INT2 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="TIMSK |= (1 << TOIE0);\n" DisableCode="TIMSK &= ~(1 << TOIE0);\n" OptCnt=1 PrescaleOpt=1 MaxTimerOverflow=256 Opt1="Clock Source & Prescaler Select" Opt1Cnt=8 Opt1_1="no clock" Opt1_1Val="TCCR0 &= 0xf8;\n" Opt1_2="1:1" Opt1_2Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x01;\n" Opt1_3="1:8" Opt1_3Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x02;\n" Opt1_4="1:64" Opt1_4Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x03;\n" Opt1_5="1:256" Opt1_5Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x04;\n" Opt1_6="1:1024" Opt1_6Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x05;\n" Opt1_7="T0 pin, -ve edge" Opt1_7Val="TCCR0 &= 0xf8;\nTCCR0 |= 0x06;\n" Opt1_8="T0 pin, +ve edge" Opt1_8Val="TCCR0 &= 0xf8;\nTCCR0 |= 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" [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="GICR |= (1 << INT0);\n" DisableCode="GICR &= ~(1 << INT0);\n" OptCnt=1 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of INT0" Opt1_1Val="MCUCR |= (1 << ISC01) | (1 << ISC00);\n" Opt1_2="falling edge of INT0" Opt1_2Val="MCUCR |= (1 << ISC01);\nMCUCR &= ~(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="GICR |= (1 << INT1);\n" DisableCode="GICR &= ~(1 << INT1);\n" OptCnt=1 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of INT1" Opt1_1Val="MCUCR |= (1 << ISC11) | (1 << ISC10);\n" Opt1_2="falling edge of INT1" Opt1_2Val="MCUCR |= (1 << ISC11);\nMCUCR &= ~(1 << ISC10);\n" [INT2] Name="INT2 Input" REMask=0x00,0x04 FEMask=0x00,0x04 ConfOpt=0x03 EdgeOpt=0x01 HandlerCode="#ifndef MX_INT2_HANDLER\n#define MX_INT2_HANDLER\nISR(INT2_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="GICR |= (1 << INT2);\n" DisableCode="GICR &= ~(1 << INT2);\n" OptCnt=1 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of INT2" Opt1_1Val="MCUCSR |= (1 << ISC2);\n" Opt1_2="falling edge of INT2" Opt1_2Val="MCUCSR &= ~(1 << ISC2);\n" [RXINT0] Name="UART0 RX" HandlerCode="#ifndef MX_UART0_RX_HANDLER\n#define MX_UART0_RX_HANDLER\nISR(USART0_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