170 likes | 287 Views
Corso di Sistemi in Tempo Reale Laurea in Ingegneria dell‘Automazione a.a. 2008-2009. The dsPic33 and FLEX board. Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy p.pagano@sssup.it. Course Outline (1/2). Second day (24 th )
E N D
Corso di Sistemi in Tempo RealeLaurea in Ingegneria dell‘Automazione a.a. 2008-2009 The dsPic33 and FLEX board Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy p.pagano@sssup.it
Course Outline (1/2) • Second day (24th) • FSM implementation in C (slides by prof. Di Natale) • A case study • Real Hardware demonstration
Outline • Introduction to the FLEX board • A FSM instantiation on the FLEX • Visit the web site: http://feanor.sssup.it/~pagano/personalWEB/courses.htm
FLEX embedded boards idea: cheap, small, easy-to-use evaluation boards Typical applications: • industrial sensing and control • small robots • wireless sensor networks • demo boards for university labs
add-on boards breadboard 1 - 2.54mm pattern 2 - 2.54mm alternate pattern (RJ45 / RS232 connectors) 3 - 1.27mm pattern (SMD components) 4 - 5.08mm pattern (clamps)
add-on boards multibus 1 - Serial port 2 (RS232 / RS422 / RS485 / TP-UART) 2 - Serial port 1 (RS232 / RS422 / RS485) 3 - CAN port 1 4 - CAN port 2 5 - I2C port 6 - SPI port 7 - 10Mbit Ethernet 8 - RJ45 Ethernet
Our test device • It is an extended basic flex board; • We connected the dsPic33 core to: • Set of buttons (input); • Set of leds (output); • LCD display (status display). • We have in mind to simulate an elevator controller: • its implementation starts from FSM modeling; • the model is validated by OTS tools (Uppaal); • the code generation is done by hand.
How to program our device • Our FLEX board should run a specific program (firmware); • We need a compiler to translate from C to machine code; • We need a linker command file that allows the test code to be targeted to the dsPIC33; • We need a tool to transfer the firmware from the PC to the MCU flash memory. MPLAB_C30 gld script Microchip ICD2
COFF file structure http://delorie.com/djgpp/doc/coff/
Peripheral Mapping • Expansion Board PIN I/O: • Leds -> PortD (output) • But’s -> PortG (input) • LCD -> PortA (output)
MCU I/O • A port is a set of analog/digital enabled pins. • A port can be configured to catch analog or digital inputs. Digital signals can have a duration (like those generated by pushing buttons) or can be “levels” (latch mode). • of course finite signals must be caught while high.
dsPic has 7 ports defined in the included header: #include "p33FJ256MC710.h" Configuring a port for OUTPUT void initLeds (void) { TRISDbits.TRISD0 = 0; TRISDbits.TRISD1 = 0; TRISDbits.TRISD2 = 0; TRISDbits.TRISD3 = 0; TRISDbits.TRISD4 = 0; TRISDbits.TRISD5 = 0; TRISDbits.TRISD6 = 0; TRISDbits.TRISD7 = 0; TRISDbits.TRISD8 = 0; TRISDbits.TRISD9 = 0; TRISDbits.TRISD10 = 0; TRISDbits.TRISD11 = 0; TRISDbits.TRISD12 = 0; TRISDbits.TRISD13 = 0; TRISDbits.TRISD14 = 0; TRISDbits.TRISD15 = 0; }: How to configure ports • Configuring a port for INPUT: void initButtons (void) { TRISGbits.TRISG6 = 1; TRISGbits.TRISG7 = 1; TRISGbits.TRISG8 = 1; TRISGbits.TRISG9 = 1; } 16 pels of the LCD 4 Buttons
Writing OUTPUT: void setLed ( int led, int on_off ){ switch (led){ case 0: LATDbits.LATD0 = on_off; break; case 1: LATDbits.LATD1 = on_off; break; case 2: LATDbits.LATD2 = on_off; break; case 3: LATDbits.LATD3 = on_off; break; } } How to read/write ports • Reading INPUT: int getButton ( int j ){ switch (j){ case 0: return !PORTGbits.RG6; case 1: return !PORTGbits.RG7; case 2: return !PORTGbits.RG8; case 3: return !PORTGbits.RG9; } }
the end Questions ?
static enum State { IDLE, S0, S1, S2, S3 }; static enum Signal { ABSENT, GO_TO_S0, GO_TO_S1, GO_TO_S2, GO_TO_S3 }; void FSMInit(FSM *me){ me->state_ = IDLE; } void FSMTran_(FSM *me, unsigned int dest) { me->state_ = dest; } enum Signal FSMGetSignals(FSM *me){ if (b0) return GO_TO_S0; else if (b1) return GO_TO_S1; else if (b2) return GO_TO_S2; else if (b3) return GO_TO_S3; return ABSENT; } HOWTO initialize and transit init signal generation transition