[Device] FlowcodeProduct=ARM DefaultPackageType=1 Pins=64 Ports=4 ADCPins=8 ADCBits=10 ADCType=1 MaxClock=55000000 PrescalerBits=3 ClockDivider=1 TimerOverflow=256 ConfigAddress=0x0000 ConfigCount=1 ConfigOverride=1 ProgrammerOverride=Tools\mLoader\mLoader.exe ProgSwitchesOverride="-p128 "%f.s19"" PWMCount=2 UARTCount=2 EepromSize=0 FlashSize=32768 RamSize=8192 [ICD] ClockPort=1 ClockPin=6 DataPort=1 DataPin=7 [Pins] Pin1 = "ADVREF" Pin2 = "GND" Pin3 = "PORTE4/AD4" Pin4 = "PORTE5/AD5" Pin5 = "PORTE6/AD6" Pin6 = "PORTE7/AD7" Pin7 = "VDDIN" Pin8 = "VDDOUT" Pin9 = "PORTD0/PORTE0/PA17/AD0" Pin10 = "PORTD1/PORTE1/PA18/AD1" Pin11 = "PORTC7/PA21/RXD1" Pin12 = "VDDCORE" Pin13 = "PORTD2/PORTE2/PA19/AD2" Pin14 = "PORTC6/PA22/TXD1" Pin15 = "PORTC5/PA23/SCK1" Pin16 = "PORTD3/PORTE3/PA20/IRQ0/AD3" Pin17 = "GND" Pin18 = "VDDIO" Pin19 = "PORTD4/PA16/TIOB1" Pin20 = "PORTB7/PA15/TIOA1" Pin21 = "PORTB6/PA14/SPCK" Pin22 = "PORTB5/PA13/MOSI" Pin23 = "PORTC0/PA24/RTS1" Pin24 = "VDDCORE" Pin25 = "PORTC4/PA25/CTS1" Pin26 = "PORTC1/PA26/TIOA2" Pin27 = "PORTB4/PA12/MISO" Pin28 = "PORTB3/PA11/PWM0" Pin29 = "PORTB2/PA10/DTXD" Pin30 = "PORTB1/PA9/DRXD" Pin31 = "PORTB0/PA8/ADTRG" Pin32 = "PORTA7/PA7/PWM3" Pin33 = "TDI" Pin34 = "PORTA6/PA6/TXD0" Pin35 = "PORTA5/PA5/RXD0" Pin36 = "PORTA4/PA4/TWCK" Pin37 = "PORTC2/PA27/TIOB2" Pin38 = "PORTC3/PA28/TCLK1" Pin39 = "NRST" Pin40 = "TST" Pin41 = "PORTD5/PA29/TCLK2" Pin42 = "PORTD6/PA30/IRQ1" Pin43 = "PORTA3/PA3/TWD" Pin44 = "PORTA2/PA2/PWM2" Pin45 = "VDDIO" Pin46 = "GND" Pin47 = "PORTA1/PA1/PWM1" Pin48 = "PORTA0/PA0/PWM0" Pin49 = "TDO" Pin50 = "JTAGSEL" Pin51 = "TMS" Pin52 = "PORTD7/PA31" Pin53 = "TCK" Pin54 = "VDDCORE" Pin55 = "ERASE" Pin56 = "DDM" Pin57 = "DDP" Pin58 = "VDDIO" Pin59 = "VDDFLASH" Pin60 = "GND" Pin61 = "XOUT" Pin62 = "XIN" Pin63 = "PLLRC" Pin64 = "VDDPLL" [Ports] PortPin9=0x0300 PortPin10=0x0301 PortPin11=0x0207 PortPin13=0x0302 PortPin14=0x0206 PortPin15=0x0205 PortPin16=0x0303 PortPin19=0x0304 PortPin20=0x0107 PortPin21=0x0106 PortPin22=0x0105 PortPin23=0x0200 PortPin25=0x0204 PortPin26=0x0201 PortPin27=0x0104 PortPin28=0x0103 PortPin29=0x0102 PortPin30=0x0101 PortPin31=0x0100 PortPin32=0x0007 PortPin34=0x0006 PortPin35=0x0005 PortPin36=0x0004 PortPin37=0x0202 PortPin38=0x0203 PortPin41=0x0305 PortPin42=0x0306 PortPin43=0x0003 PortPin44=0x0002 PortPin47=0x0001 PortPin48=0x0000 PortPin52=0x0307 [PortMasks] PortMask0=0xFF PortMask1=0xFF PortMask2=0xFF PortMask3=0xFF [ADCPins] ADC0=9 ADC1=10 ADC2=13 ADC3=16 ADC4=3 ADC5=4 ADC6=5 ADC7=6 [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 MCK %c\n#define MCKKHz (MCK/1000)\n#define MCKMHz ((MCKKHz+500)/1000)\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n\nint errno;\n\n" MainStart="void main()\n{\n" MainEnd="\tmainendloop: goto mainendloop;\n}\n\n" IntStart="void FC_Interrupt(unsigned int, unsigned int);\nvoid FC_Interrupt(unsigned int periphID, unsigned int IFlags)\n{\n" IntEnd="}\n" Initialise="AT91F_PIO_CfgInput(AT91C_BASE_PIOA, 0xffffffff);\n\tAT91C_BASE_PIOA->PIO_IFER = 0xffffffff;\n\tAT91C_BASE_PIOA->PIO_PPUDR = 0xffffffff;\n\tAT91C_BASE_TCB->TCB_BMR = 0;\n" IntInit="InterruptCfg();\n" InputCmdFull="%o=port%p_in(0xff);\n" InputCmdOneBit="%o=(port%p_in(%m) == %m);\n" InputCmdMask="%o=port%p_in(%m);\n" OutputCmdFull="port%p_out(%o,0xff);\n" OutputCmdOneBit="if(%o)\n\tport%p_out(%m,%m);\nelse\n\tport%p_out(0,%m);" OutputCmdMask="port%p_out(%o,%m);\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="" IntHandler="" [Defines] Define1=#define MX_ARM7 Define2=#define MX_PWM Define3=#define MX_PWM_CNT 2 Define4=#define MX_PWM_TRIS1 Define5=#define MX_PWM_TRIS2 Define6=#define MX_PWM_1 Define7=#define MX_PWM_2 Define8=#define MX_SPI Define9=#define MX_SPI_B [Interrupts] GeneralInit="" Count=6 1=TMR0 2=IRQ0 3=IRQ1 4=PORTB 5=TMR1 6=TMR2 [TMR0] Name="TMR0 8-BIT" PrescaleOpt=1 MaxTimerOverflow=256 FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_TC0OVF_HANDLER\n#define MX_TC0OVF_HANDLER\nif ((periphID == AT91C_ID_TC0) && (IFlags & AT91C_TC_CPCS))\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91C_BASE_TC0->TC_RC = 0x00000100;\nAT91C_BASE_TC0->TC_IER = AT91C_TC_CPCS;\n" DisableCode="AT91C_BASE_TC0->TC_IDR = AT91C_TC_CPCS;\n" OptCnt=2 TmrOpt=1 Opt1="Clock Source Select" Opt1Cnt=8 Opt1_1="Internal clock (MCK) 1:2" Opt1_1Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c000;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_2="Internal clock (MCK) 1:8" Opt1_2Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c001;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_3="Internal clock (MCK) 1:32" Opt1_3Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c002;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_4="Internal clock (MCK) 1:128" Opt1_4Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c003;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_5="Internal clock (MCK) 1:1024" Opt1_5Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c004;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_6="External clock (XC0)" Opt1_6Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c005;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_7="Internal clock (XC1)" Opt1_7Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c006;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt1_8="Internal clock (XC2)" Opt1_8Val="AT91F_TC0_CfgPMC();\nAT91C_BASE_TC0->TC_CMR = 0x0000c007;\nAT91C_BASE_TC0->TC_CCR = 0x05;\n" Opt2="Source Edge Select" Opt2Cnt=2 Opt2_1="high-to-low transition" Opt2_1Val="AT91C_BASE_TC0->TC_CMR |= 0x00000008;\n" Opt2_2="low-to-high transition" Opt2_2Val="AT91C_BASE_TC0->TC_CMR &= 0xfffffff7;\n" [IRQ0] Name=IRQ0 FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_IRQ0_HANDLER\n#define MX_IRQ0_HANDLER\nif (periphID == AT91C_ID_IRQ0)\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_IRQ0);" DisableCode="AT91F_AIC_DisableIt(AT91C_BASE_AIC,AT91C_ID_IRQ0);" IntPort=3 IntPin=3 OptCnt=1 TmrOpt=0 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of IRQ0" Opt1_1Val="AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_IRQ0,4,AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE,IRQ0_Interrupt);\n" Opt1_2="falling edge of IRQ0" Opt1_2Val="AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_IRQ0,4,AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED,IRQ0_Interrupt);\n" [IRQ1] Name=IRQ1 FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_IRQ1_HANDLER\n#define MX_IRQ1_HANDLER\nif (periphID == AT91C_ID_IRQ1)\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91F_AIC_EnableIt(AT91C_BASE_AIC,AT91C_ID_IRQ1);" DisableCode="AT91F_AIC_DisableIt(AT91C_BASE_AIC,AT91C_ID_IRQ1);" IntPort=3 IntPin=6 OptCnt=1 TmrOpt=0 Opt1="Interrupt Edge Select" Opt1Cnt=2 Opt1_1="rising edge of IRQ1" Opt1_1Val="AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_IRQ1,4,AT91C_AIC_SRCTYPE_EXT_POSITIVE_EDGE,IRQ1_Interrupt);\n" Opt1_2="falling edge of IRQ1" Opt1_2Val="AT91F_AIC_ConfigureIt(AT91C_BASE_AIC,AT91C_ID_IRQ1,4,AT91C_AIC_SRCTYPE_INT_EDGE_TRIGGERED,IRQ1_Interrupt);\n" [PORTB] Name=PORTB Change FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_PORTB_HANDLER\n#define MX_PORTB_HANDLER\nif ((periphID == AT91C_ID_PIOA) && (IFlags & (PORTB4 | PORTB5 | PORTB6 | PORTB7)))\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91C_BASE_PIOA->PIO_IER = PORTB4 | PORTB5 | PORTB6 | PORTB7;\n" DisableCode="AT91C_BASE_PIOA->PIO_IDR = PORTB4 | PORTB5 | PORTB6 | PORTB7;\n" OptCnt=0 TmrOpt=0 [TMR1] Name="TMR1 Compare" FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_TC1CMP_HANDLER\n#define MX_TC1CMP_HANDLER\nif ((periphID == AT91C_ID_TC1) && (IFlags & AT91C_TC_CPCS))\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91C_BASE_TC1->TC_IER = AT91C_TC_CPCS;\n" DisableCode="AT91C_BASE_TC1->TC_IDR = AT91C_TC_CPCS;\n" OptCnt=3 TmrOpt=1 BitCountOpt=2 Opt1="Clock Source Select" Opt1Cnt=8 Opt1_1="Internal clock (MCK) 1:2" Opt1_1Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c000;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_2="Internal clock (MCK) 1:8" Opt1_2Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c001;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_3="Internal clock (MCK) 1:32" Opt1_3Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c002;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_4="Internal clock (MCK) 1:128" Opt1_4Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c003;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_5="Internal clock (MCK) 1:1024" Opt1_5Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c004;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_6="External clock (XC0)" Opt1_6Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c005;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_7="Internal clock (XC1)" Opt1_7Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c006;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt1_8="Internal clock (XC2)" Opt1_8Val="AT91F_TC1_CfgPMC();\nAT91C_BASE_TC1->TC_CMR = 0x0000c007;\nAT91C_BASE_TC1->TC_CCR = 0x05;\n" Opt2="Count mode" Opt2Cnt=9 Opt2_1="8-bit count" Opt2_1Val="AT91C_BASE_TC1->TC_RC = 0x00000100;\n" Opt2_2="9-bit count" Opt2_2Val="AT91C_BASE_TC1->TC_RC = 0x00000200;\n" Opt2_3="10-bit count" Opt2_3Val="AT91C_BASE_TC1->TC_RC = 0x00000400;\n" Opt2_4="11-bit count" Opt2_4Val="AT91C_BASE_TC1->TC_RC = 0x00000800;\n" Opt2_5="12-bit count" Opt2_5Val="AT91C_BASE_TC1->TC_RC = 0x00001000;\n" Opt2_6="13-bit count" Opt2_6Val="AT91C_BASE_TC1->TC_RC = 0x00002000;\n" Opt2_7="14-bit count" Opt2_7Val="AT91C_BASE_TC1->TC_RC = 0x00004000;\n" Opt2_8="15-bit count" Opt2_8Val="AT91C_BASE_TC1->TC_RC = 0x00008000;\n" Opt2_9="16-bit count" Opt2_9Val="AT91C_BASE_TC1->TC_RC = 0x00000000;\n" Opt3="Source Edge Select" Opt3Cnt=2 Opt3_1="high-to-low transition" Opt3_1Val="AT91C_BASE_TC1->TC_CMR |= 0x00000008;\n" Opt3_2="low-to-high transition" Opt3_2Val="AT91C_BASE_TC1->TC_CMR &= 0xfffffff7;\n" [TMR2] ;NOTE: Name="TMR2 Compare" FlagReg= FlagBit= UseExplicitHandlerCode=1 HandlerCode="#ifndef MX_TC2CMP_HANDLER\n#define MX_TC2CMP_HANDLER\nif ((periphID == AT91C_ID_TC2) && (IFlags & AT91C_TC_CPCS))\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" EnReg= EnBit= UseExplicitEnableCode=1 EnableCode="AT91C_BASE_TC2->TC_IER = AT91C_TC_CPCS;\n" DisableCode="AT91C_BASE_TC2->TC_IDR = AT91C_TC_CPCS;\n" OptCnt=3 TmrOpt=1 BitCountOpt=2 Opt1="Clock Source Select" Opt1Cnt=8 Opt1_1="Internal clock (MCK) 1:2" Opt1_1Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c000;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_2="Internal clock (MCK) 1:8" Opt1_2Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c001;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_3="Internal clock (MCK) 1:32" Opt1_3Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c002;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_4="Internal clock (MCK) 1:128" Opt1_4Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c003;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_5="Internal clock (MCK) 1:1024" Opt1_5Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c004;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_6="External clock (XC0)" Opt1_6Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c005;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_7="Internal clock (XC1)" Opt1_7Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c006;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt1_8="Internal clock (XC2)" Opt1_8Val="AT91F_TC2_CfgPMC();\nAT91C_BASE_TC2->TC_CMR = 0x0000c007;\nAT91C_BASE_TC2->TC_CCR = 0x05;\n" Opt2="Count mode" Opt2Cnt=9 Opt2_1="8-bit count" Opt2_1Val="AT91C_BASE_TC2->TC_RC = 0x00000100;\n" Opt2_2="9-bit count" Opt2_2Val="AT91C_BASE_TC2->TC_RC = 0x00000200;\n" Opt2_3="10-bit count" Opt2_3Val="AT91C_BASE_TC2->TC_RC = 0x00000400;\n" Opt2_4="11-bit count" Opt2_4Val="AT91C_BASE_TC2->TC_RC = 0x00000800;\n" Opt2_5="12-bit count" Opt2_5Val="AT91C_BASE_TC2->TC_RC = 0x00001000;\n" Opt2_6="13-bit count" Opt2_6Val="AT91C_BASE_TC2->TC_RC = 0x00002000;\n" Opt2_7="14-bit count" Opt2_7Val="AT91C_BASE_TC2->TC_RC = 0x00004000;\n" Opt2_8="15-bit count" Opt2_8Val="AT91C_BASE_TC2->TC_RC = 0x00008000;\n" Opt2_9="16-bit count" Opt2_9Val="AT91C_BASE_TC2->TC_RC = 0x00000000;\n" Opt3="Source Edge Select" Opt3Cnt=2 Opt3_1="high-to-low transition" Opt3_1Val="AT91C_BASE_TC2->TC_CMR |= 0x00000008;\n" Opt3_2="low-to-high transition" Opt3_2Val="AT91C_BASE_TC2->TC_CMR &= 0xfffffff7;\n"