Presentation is loading. Please wait.

Presentation is loading. Please wait.

Retis.sssup.it The dsPic33 and FLEX board Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy Corso di Sistemi in.

Similar presentations


Presentation on theme: "Retis.sssup.it The dsPic33 and FLEX board Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy Corso di Sistemi in."— Presentation transcript:

1 retis.sssup.it The dsPic33 and FLEX board Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy p.pagano@sssup.it Corso di Sistemi in Tempo Reale Laurea in Ingegneria dell‘Automazione a.a. 2008-2009

2 retis.sssup.it Course Outline (1/2) Second day (24 th ) FSM implementation in C (slides by prof. Di Natale) A case study Real Hardware demonstration

3 retis.sssup.it Outline Introduction to the FLEX board A FSM instantiation on the FLEX Visit the web site: http://feanor.sssup.it/~pagano/personalWEB/courses.htm

4 retis.sssup.it FLEX idea: cheap, small, easy-to-use evaluation boards Typical applications: industrial sensing and control small robots wireless sensor networks demo boards for university labs embedded boards

5 retis.sssup.it Flex

6 retis.sssup.it board layout

7 retis.sssup.it add-on boards 1 - 2.54mm pattern 2 - 2.54mm alternate pattern (RJ45 / RS232 connectors) 3 - 1.27mm pattern (SMD components) 4 - 5.08mm pattern (clamps) breadboard

8 retis.sssup.it add-on boards 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 multibus

9 retis.sssup.it 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.

10 retis.sssup.it 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

11 retis.sssup.it COFF file structure http://delorie.com/djgpp/doc/coff/

12 retis.sssup.it Peripheral Mapping Expansion Board PIN I/O: Leds -> PortD (output) But’s -> PortG (input) LCD -> PortA (output)

13 retis.sssup.it 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.

14 retis.sssup.it How to configure ports 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; }: Configuring a port for INPUT: void initButtons (void) { TRISGbits.TRISG6 = 1; TRISGbits.TRISG7 = 1; TRISGbits.TRISG8 = 1; TRISGbits.TRISG9 = 1; } 4 Buttons 16 pels of the LCD

15 retis.sssup.it How to read/write ports 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; } 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; }

16 retis.sssup.it the end Questions ?

17 retis.sssup.it HOWTO initialize and transit 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; } init transition signal generation


Download ppt "Retis.sssup.it The dsPic33 and FLEX board Paolo Pagano RETIS Laboratory, Scuola Superiore Sant'Anna, Pisa, Italy Corso di Sistemi in."

Similar presentations


Ads by Google