1 / 17

The dsPic33 and FLEX board

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 )

roscoe
Download Presentation

The dsPic33 and FLEX board

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

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

  3. 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. 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

  5. Flex

  6. board layout

  7. 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)

  8. 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

  9. 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. 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. COFF file structure http://delorie.com/djgpp/doc/coff/

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

  13. 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. 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

  15. 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; } }

  16. the end Questions ?

  17. 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

More Related