You are on page 1of 17

TCP/IP Stack Microchip

Author by Chandufo HUT 3/2010

Processor: dsPic33FJ128GP708 Debug: MpLab - C30 Library: TCP/IP Stack v5.20 Ethernet Card: ENC28J60 (with HTC245) Cu hnh chy TCP/IP: Phn cng: Cu hnh giao tip SPI2 (hoc SPI1) vi ENC28J60 Cu hnh chn CS, RS, CLK chn devices l ENC28J60 Cu hnh cc chn LED, LCD Phn mm: Cu hnh TCP/IP chn cc giao thc c sn.

I. Cu hnh phn cng: Cu hnh phn cng ch trong file HardwareProfile.h. Trong file ny ta nh ngha cc thnh phn nh sau: Chn Explorer_16 ng vi dng dsPic Chn Fcy=80Mhz (mc nh l Fcy=80Mhz, v vy ta cn cu hnh li b chia t c 80Mhz ng vi thch anh ca mnh) Cu hnh chn LED l cng A Cu hnh chn nt nhn l cng C Cu hnh Chn UART l UART2 Cu hnh chn LCD l cng B v D Cu hnh chn chn chip SC, v tn hiu Reset l CS ca ENC28J60 Cu hnh giao tip SPI l SPI2 giao tip vi ENC28J60 B cc cu hnh ADC, SPI1 i vi giao tip th nh EEPROM, SD, MMC Trong file: HardwareProfile.h 1. Chn phn cng l cho dsPic l l dng dsPic:
#define EXPLORER_16

2.Ti dng 739, cu hnh cho chn LED, nt nhn, ENC28J60, v UART
//dinh nghia LED #define LED0_TRIS #define LED0_IO #define LED1_TRIS #define LED1_IO #define LED2_TRIS #define LED2_IO #define LED3_TRIS #define LED3_IO #define LED4_TRIS #define LED4_IO #define LED5_TRIS #define LED5_IO #define LED6_TRIS #define LED6_IO #define LED7_TRIS #define LED7_IO #define LED_GET() #define LED_PUT(a) //dinh nghia nut nhan #define BUTTON0_TRIS #define BUTTON0_IO #define BUTTON1_TRIS #define BUTTON1_IO #define BUTTON2_TRIS #define BUTTON2_IO #define BUTTON3_TRIS #define BUTTON3_IO //dinh nghia UART #define UARTTX_TRIS #define UARTTX_IO #define UARTRX_TRIS #define UARTRX_IO // ENC28J60 I/O pins (TRISAbits.TRISA6) // Ref D3 (LATAbits.LATA6) (TRISAbits.TRISA7) // Ref D4 (LATAbits.LATA7) (TRISAbits.TRISA9) // Ref D5 (LATAbits.LATA9) (TRISAbits.TRISA10) // Ref D6 (LATAbits.LATA10) (TRISAbits.TRISA12) // Ref D7 (LATAbits.LATA12) (TRISAbits.TRISA13) // Ref D8 (LATAbits.LATA13) (TRISAbits.TRISA2) // Ref D9 (LATAbits.LATA2) (TRISAbits.TRISA3) (LATAbits.LATA3) (*((volatile unsigned char*)(&LATA))) (*((volatile unsigned char*)(&LATA)) = (a)) (TRISCbits.TRISC1) (PORTCbits.RC1) (TRISCbits.TRISC2) (PORTCbits.RC2) (TRISCbits.TRISC3) (PORTCbits.RC3) (TRISCbits.TRISC4) (PORTCbits.RC4) (TRISFbits.TRISF5) (PORTFbits.RF5) (TRISFbits.TRISF4) (PORTFbits.RF4) // Ref S4

// Ref S6 // Ref S3

#define ENC_CS_TRIS #define ENC_CS_IO #define ENC_RST_TRIS #define ENC_RST_IO

(TRISGbits.TRISG12) (PORTGbits.RG12) (TRISGbits.TRISG13) (PORTGbits.RG13)

//dinh nghia SPI2 #if defined(__C30__) // PIC24F, PIC24H, dsPIC30, dsPIC33 #define ENC_SPI_IF (IFS0bits.SPI2IF) #define ENC_SSPBUF (SPI2BUF) #define ENC_SPISTAT (SPI2STAT) #define ENC_SPISTATbits (SPI2STATbits) #define ENC_SPICON1 (SPI2CON1) #define ENC_SPICON1bits (SPI2CON1bits) #define ENC_SPICON2 (SPI2CON2)

3. Cu hnh LCD: Ti dng 1066, trong file hardwareprofile.h


#if !defined(ENC100_INTERFACE_MODE) || (ENC100_INTERFACE_MODE == 0) #define LCD_DATA_TRIS (*((volatile BYTE*)&TRISD)) #define LCD_DATA_IO (*((volatile BYTE*)&LATD)) #define LCD_RD_WR_TRIS (TRISBbits.TRISB5) #define LCD_RD_WR_IO (LATBbits.LATB5) #define LCD_RS_TRIS (TRISBbits.TRISB4) #define LCD_RS_IO (LATBbits.LATB4) #define LCD_E_TRIS (TRISBbits.TRISB6) #define LCD_E_IO (LATBbits.LATB6) #endif // SPI only

4. Chn Fcy=80Mhz: Ti dng 181.


#elif defined(__dsPIC33F__) // dsPIC33F processor //...#define GetSystemClock() #define GetSystemClock() #define GetInstructionClock() #define GetPeripheralClock() (80000000ul) // Hz (80000000ul) // Hz (Fosc = 80Mhz (GetSystemClock()/2) GetInstructionClock()

II. Cc thit lp chy chng trnh: Trong file maindemo.c c cc thit lp sau: Thit lp b chia Fcy=80Mhz Qui nh chn vo/ra i vi nt nhn, LED. (ring LCD th khng cn, v c thit lp trong chng trnh LCD, ta ch cn chn chn cho n) Cu hnh bt sn ln i vi nt nhn. B cc thit lp ADC v khng dng. 1. nh ngha p33 chy tc 40MIPs. Ti dng 327 ca maindemo.h:
#if defined(__dsPIC33F__) || defined(__PIC24H__) PLLFBD = 30; // Multiply by M=32 for 160MHz VCO output (10MHz External oscillator) CLKDIV = 0x0000; // FRC: divide by 2, PLLPOST: divide by 2=N1, PLLPRE: divide by 2=N2

2. Cu hnh cho chng trnh bt sn ln ca nt nhn, chn LED l chn ra, nut nhn l chn vo. Trong maindemo.h:

static void InitializeBoard(void) { // LEDs qui dinh chan ra LED0_TRIS = 0; //RA6 LED1_TRIS = 0; //RA7 LED2_TRIS = 0; //RA9 #if !defined(EXPLORER_16) LED7_TRIS = 0; #endif LED_PUT(0xFF); LED2_IO=1; //dinh nghia chan vao cho Button BUTTON0_TRIS = 1; BUTTON1_TRIS = 1; //bat theo suon len. AD1PCFGH=0XFFFF; AD1PCFGL=0XFFFF; // Pin multiplexed with a button on EXPLORER_16 //cho LED sang

//RC1; RC2; RC3; RC4

. III. Thit lp khng dng b nh ngoi. B nh ngoi dng lu tr Web nhng, Web y nh dng http v http2. B nh dng lu tr c th c 3 loi: SD/MMD, EEPROM, Flash Serial. Nu mun dng Web nhng, ta c th lu tr vo b nh ni. lc y, cn to mt file b nh ca Web nh dng MPFS. to ra file nh dng MPFS th Microchip a ra cng c MPFS2 trong folder Utilities chuyn ton b d liu Web thnh mt file duy nht. Web phi c a vo 1 folder, i vi trnh dch C30 th file c xut ra l MPFS.s. s dng Web nhng trong b nh ni, trong file TCPIPconfig.h b thit lp dng b nh ngoi, v #include MPFS.s trong chng trnh maindemo.c. t li tn mc nh ca Web server l index.htm trong file TCPIPConfig.h dng 465. Tuy nhin vi mc ch khng dng Web nhng, v vy ta khng dng Web http v cc giao thc truyn nhn ca http l SMTP v SNMP. ng thi s khng dng b nh ni v ngoi lu Web nhng na. lm iu ny ta lm nh sau: Trong file TCPIPconfig.h b cc dng i:
//#define STACK_USE_HTTP2_SERVER //#define STACK_USE_HTTP_SERVER //#define STACK_USE_SMTP_CLIENT //#define STACK_USE_SNMP_SERVER

V cng ng thi b lu tr trong EEPROM v Flash memory


//#define MPFS_USE_EEPROM //#define MPFS_USE_SPI_FLASH

Lc ny ta nh ngha khng dng Web nhng, v tt nhin chng ta cgng khng cn #include MPFS.s trong chng trnh Maindemo.c

nh ngha a ch IP,MAC, Hostname: Tt c nh ngha ny c nh ngha trong file TCPIPConfig.h. Chng ta ch cn thay i IP, Submask Net, DNS. 1. a chi IP: a ch IP c thit lp ban u l 192.168.1.1 a ch ny c thit lp l IP ng. Khi khi ng, TCP/IP s gi gi tin ARP hi xem a ch ny c s dng hay cha, nu cha, th IP ny s l IP ca TCP. Cn nu khng TCP s c mt IP khc do mng cung cp.
#define MY_DEFAULT_IP_ADDR_BYTE1 #define MY_DEFAULT_IP_ADDR_BYTE2 #define MY_DEFAULT_IP_ADDR_BYTE3 #define MY_DEFAULT_IP_ADDR_BYTE4 (192ul) (168ul) (1ul) (1ul)

2. a ch MAC v hostname: MAC c thit lp vi ENC l 00-04-A3-00-00-00. Hostname l:


#define MY_DEFAULT_HOST_NAME "1stChandufo"

3. Submask net, Gateway: Submasknet c chn l: 255.255.0.0


#define MY_DEFAULT_MASK_BYTE1 #define MY_DEFAULT_MASK_BYTE2 #define MY_DEFAULT_MASK_BYTE3 #define MY_DEFAULT_MASK_BYTE4 (255ul) (255ul) (0ul) (0ul)

Cn ch trong thit lp mng LAN cng phi cng Submasknet. Mc nh ca Windows l 255.255.255.0. V vy ta phi nh ngha li l 255.255.0.0 trong thit lp mng LAN i vi Windows nh.Hoc ta c th nh ngha li cho TCP l 255.255.255.0. Nhng ni tm li l 2 ci thng phi ging nhau. V mt l thuyt c th khng ging nhau cng c, v vn c th cng mng LAN. Ch cn ging nhau 2 lp A v B, sau khi AND IP vi SubmaskNet.

c im ca TCP/IP Stack: TCP/IP Stack l ng dng to mt Webserver nhng, hoc cc giao thc giao tip Enthernet hin hnh. Bao gm cc giao thc truyn d liu TCP, UDP. V h tr cc module khc nh: IP, ICMP, DHCP, ARP v DNS TCP/IP cng c cc Module s dng cho lp application nh: HTTP cho Web, SMTP cho gi v nhn Email, SNMP cho giao thc trng thi v iu khin. Telnet cho iu khin t xa, TFTP. Cu trc th mc ca TCP/IP: TCP/IP v5.20 c bn ci t MCHP_App_ Lib v2010_02_09_Installer.zip nng 79Mb. Sau khi ci t, th mc ca TCP/IP nh sau:

Th mc ch m ngun cho dng dsPic l: \TCPIP Demo App Th mc cha chng trnh dch MPFS image l: Microchip\Utilities Th mc cha chng trnh C# pht hin IP, MAC, Hostname vit sn l Microchip\TCPIP Stack\Utilities\Source\Microchip Ethernet Discoverer Chng ta ch lm vic vi 2 th mc l Microchip v TCPIP Demo App. Cc th mc khc xa i cng c.

Phn cng h tr ca TCPIP Stack

TCPIP h tr hu ht cc dng PIC c giao thc SPI, bao gm dng Pic18, Pic24, dsPic30,dsPic33, Pic32. Sau y l mt vi dng Pic c Microchip code sn:

Nh trn thy, dng dsPic33FJ256GP710 tc MIPS l 40MIPs, giao tip SPI vi ENC, xung thch anh l 8Mhz. Tc truyn UDP trong mng LAN l 256Kb/sec. TCP v l do bo m d liu v xc nhn nn tc TCP lun thp hn UDP, v vi b m 200byte ca FIFO th tc TCP trong mng LAN l 77Kb/sec. Cc file cn thit cho TCP/IP:
A main file- this is the file with your application code in it.. ARP.c and ARP.h- These files are used by the stack to discover the MAC address associated with a given IP address. Delay.c and Delay.h These files are used to provide delays for some stack functions. Note that it would be best to not use these delays in your own code, as they do create blocking conditions. Physical layer files These files are used to enable a specified physical layer. More information on which files to include can be found in the Hardware Configuration section. Helpers.c and Helpers.h These files contain helper functions used for miscellaneous stack tasks. IP.c and IP.h These files provide internet layer functionality for the stack. StackTsk.c and StackTsk.h These files contain the code to initialize the stack and perform the callbacks that keep the stack going. Tick.c and Tick.h These files implement a tick timer that is used to implement some timing functionality within the stack. HardwareProfile.h This configuration file is used to set up hardware options. TCPIPConfig.h This configuration file is used to set up firmware options. MAC.h This header file provides macros and structures relating to the hardware MAC layer. TCPIP.h This is the primary include file for the stack. Your main file should include TCPIP.h.

Porting cho dng dsPic33FJ128GP708: Chy demo ca dng dsPic33FJ256GP710, s dng ENC28J60. Code c h tr sn trong th mc Application/TCPIP Demo App-C30.mcp Chn Devices l dsPic33FJ128GP708. Cu hnh khng s dng HTTP website v b nh EEPROM. (b STACK_USE_HTTP_SERVER, STACK_USE_HTTP2_SERVER,STACK_USE_SMTP_CLIENT,STACK_USE_S NMP_SERVER, #define MPFS_USE_EEPROM) Th dch li chng trnh. Hot ng ca TCP/IP Khi nh ngha ch chy ban u nh trn, chng trnh c rt nhiu tin ch c bn. nh UDP, TCP, cc hm Barkeley, Pingdemo, UART. V vy bn c th bt tay vo tm hiu tng ng tc v c vit sn. TCP/IP Stack hot ng gn ging cu trc ca HH thi gian thc, tc l cc nhim v s c chia thnh cc tc v ( y l TCP, UDP, Ping,). Tt c hot ng ca TCP/IP s c mt ng h chung qun l theo Time Split. Tc l c mt Timer h thng (Timer1), c 1 khong thi gian ngn s ngt (gi l 1 TICK), khi b ngt, h thng s treo li, ng cnh ca tt c cc tc v c b lp lch li ra, xem xt tc v no c chy theo kiu chia s thi gian (v khng c mc u tin cho tc v). Sau cho php tc v chim quyn thc thi ca CPU. n TICK tip theo, h thng li treo li, v li li ng cnh ra, c tip tc nh vy mi. Vi c ch hot ng ny, chip dsPic33 c coi nh mt lc c th va thc hin TCP, va thc hin UDP, Ping,. Va c th l Server v Client cng mt lc. V vy, dsPic nu c thit lp ch TCP Server/Client s hot ng ng thi c 2 hot ng ny. Server lng nghe kt ni t Client no trn mng. Cn Client th gi lnh m cng kt ni ti mt Server no cng trn mng, m ta c th xc lp c. V vy, hot ng ca cc tc v l c lp vi nhau, khng chu nh hng ln nhau. y l im mnh ca h thng m phng theo thi gian thc. Kt ni gia dsPic33 vi PC c 2 ch : Ch mng LAN, a ch PC l 192.268.1.x, v Submasknet l 255.255.0.0. Kim tra TCP Server bng Advanced Serial Port Terminal, UDP trn cng 30303 bng Microchip Ethernet Discoverer, Ch mng ton cu, c cm trc tip RJ45 t moderm vo RJ45 ca KIT, lc s thc hin c cc lnh Ping Google, TCP client/server.

TCP Server/Client Process Phn ny ta s tm hiu 2 tc v TCP Server v TCP Client hot ng nh th no. Kch hot TCP Server/Client: Uncomment 2 protype sau trong file Tcpipconfig.h:
#define STACK_USE_GENERIC_TCP_CLIENT_EXAMPLE // HTTP Client in GenericTCPClient.c #define STACK_USE_GENERIC_TCP_SERVER_EXAMPLE // Server in GenericTCPServer.c

1. TCP Client trong file: GenericTCPClient.c: TCP Client s kt ni vi Google bng cng 80 (cng 80 l cng LUN LUN LISTEN bt c Server no, giao thc TCP). Sau khi c tn hiu kt ni, s kt ni vi Google. TCP Client tip tc gi lnh tm kim t Chandufo, bng phng thc truy cp l GET, URL tm kim trn Google c nh ngha l:
static ROM BYTE RemoteURL[] = "/search?as_q=Chandufo"

Phng thc GET bn c th tham kho trn Internet bit thm cch thc cu lnh, y, l m ngun ca phng thc GET:
TCPPutROMString(MySocket, (ROM BYTE*)"GET "); TCPPutROMString(MySocket, RemoteURL); TCPPutROMString(MySocket, (ROM BYTE*)" HTTP/1.0\r\nHost: "); TCPPutString(MySocket, ServerName); TCPPutROMString(MySocket, (ROM BYTE*)"\r\nConnection: close\r\n\r\n");

Lnh GET l phng thc ly ni dung HTML. Vi Google, khi nhn c mt lnh l GET "/search?as_q=Chandufo n s tr v kt qu tm kim. V kt qu ny c dspic33 nhn v v Gi vo UART tam kho st xem c ng kt qu tm kim. Khi mun tm kim, ta phi nhn nt Button1 (_RC1) thc hin lnh tm kim ny:
case SM_DONE: // Do nothing unless the user pushes BUTTON1 and wants to restart the whole connection/download process if(BUTTON1_IO == 0u) GenericTCPExampleState = SM_HOME; break;

2. TCP server trong file GenericTCPServer.c: TCP Server c nhim v m mt cng 9760 LNG NGHE cc kt ni t my Client.
#define SERVER_PORT 9760

Lnh m mt cng 9760 lng nghe, to thnh server nh sau:

//TCP_OPEN_SERVER=0 nhe. server_port=9760


MySocket = TCPOpen(0, TCP_OPEN_SERVER, SERVER_PORT, TCP_PURPOSE_GENERIC_TCP_SERVER);

Khi c tn hiu l mt m ASCII gi ti cng 9760, Server s i thnh ch IN HOA, ri gi tr v cho Client. Trong on code ny, Chandufo code thm on l khi nhn c chui string, server s ghi ln LCD, ri upcase gi ln cng 9760 cho Client. Chng trnh TEST server bn dng Advanced Serial Port Terminal.

Host l a ch IP ca dsPic, hin ln trn LCD, hoc gi qua cng UART bn c th thy khi Reset hoc khi thay i IP. Bn hy sent th mt chui string xem nh.

M phng TCP/ IP Stack ca Microchip. File m phng cho dng Pic PIC24FJ128GA010, tuy nhin bn c th thay i Pic np cho dng dsPic33 nh trn. File m phng ny l ca bn ProtelUs cung cp, v vy, bn c th tm thy trong thu mc sample ca n. M ngun ca n c Chandufo gi km theo. Bn c th chy n xem mt vi kt qu. Vi mc nh l dng Web nhng, bn hy dng FireFox g a ch hin th trn LCD ca Protelus, s hin ra c trang Web nhng trong , dng iu khin v hin th trng thi ca mch. Protelus:

FireFox: G a ch 192.168.1.4, l a ch ca dsPic. Chng trnh ny l chng trnh m phng, c Web nhng, trong thc t, chandufo khng dng Web nhng m ch dng dsPic trao i d liu thng qua Internet. V vy khng cn con EEPROM 25LC256 (256Kb)

UDP Server UDP server c vit trong file Announce.c Cng ca UDP server l :
#define ANNOUNCE_PORT 30303

Nhim v ca UDP server, lng nghe kt ni t Client, khi c tn hiu hi bt u bng k t D, th tr v chui tring cho Client bao gm Hostname, MAC. Khi c s thay i IP, hoc l khi ng h thng, UDP server s gi ra cng 30303 mt chui gm hostname, MAC v thng tin khi ng li ngun. Microhip a sn mt Utilities kim tra hot ng ny, da trn m ngun C#. chng trnh: \Microchip\TCPIP Stack\Utilities\Microchip Ethernet Discoverer.exe

Chandufo vit mt chng trnh ta theo m ngun C# ny giao tip UDP vi dsPic33. bt tt LED, v hin th LCD. Giao din chng trnh nh sau.

Vi UDP Client trn phn mm C# c cc on Code sau: u tin phi m Socket UDP. Sau kt ni ti port 30303 xem IP ca thit b no y. ( y l DsPic), tc l ly a ch IP ca server dsPic. Sau to mt cho chnh mnh (l client) mt a ch IP bt k ti cng 30303 lun( c th trng s hiu cng c Server v client m), lng nghe cc d liu t server gi ti, sau to mt i tng thc lm nhim v lng nghe
//tao doi tuong UDP GlobalUDP.UDPClient = new UdpClient(); //tim` kiem dia chi IP cua remote GlobalUDP.EP = System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303); //tao mot cong listen de lang nghe du lieu System.Net.IPEndPoint BindEP = System.Net.IPEndPoint(System.Net.IPAddress.Any, 30303); // tao cong lang nghe. GlobalUDP.UDPClient.Client.Bind(BindEP); new

new

Gi thng ip ly a ch MAC, Localhost l chui string c k t D u tin. M lnh gi thng ip nh sau:


// Gui thong diep chu "D" de lay thong tin he thong (ki tu dau tien la chu "D") byte[] DiscoverMsg = Encoding.ASCII.GetBytes("Discovery: Who is out there?"); // truyen thong diep yeu cau` GlobalUDP.UDPClient.Send(DiscoverMsg, DiscoverMsg.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303));

M lnh trn c th thay bng lnh sau ( v a ch IP ca server chng ta c c phn trn, ( trong phn GlobalUDP.EP )
// Gui thong diep chu "D" de lay thong tin he thong (ki tu dau tien la chu "D") byte[] DiscoverMsg = Encoding.ASCII.GetBytes("Discovery: Who is out there?"); // truyen thong diep yeu cau` GlobalUDP.UDPClient.Send(DiscoverMsg, DiscoverMsg.Length, GlobalUDP.EP);

Cc nhim v LED, LCD trn C# c thc hin tng t trong s kin on_click, v d vi LCD nh sau: LCD s gi xung mt chui k t di 16bytes, ghi ln hang trn ca LCD. M lnh l ch L: ( y cha x l on nhp vo qu 16 k t, cng kh d, bn t lm nh, he):
//truyen thong diep ghi vao LCD, ma lenh la "L" //xu li de thong diep chi dung lai la 16 ki tu string str1 = "L" + txtLCD.Text; int kk = 0; for (kk = str1.Length; kk < 16; kk++) str1 = str1 + " "; //MessageBox.Show(str1); byte[] DiscoverMsg = Encoding.ASCII.GetBytes(str1);

// truyen thong diep yeu cau` GlobalUDP.UDPClient.Send(DiscoverMsg, DiscoverMsg.Length, GlobalUDP.EP);

UDP Server trn dspic: Nhim v l m mt UDP, lien tc lng nghe trn cng 30303. Nu c tn hiu ch D, th gi MAC, Localhost. Nu c tn hiu ch L th hin th chui string nhn c vo LCD, nu c tn hiu l 1, 2, 3 th s thay i trng thi ON/OFF ca n LED tng ng trn cng A (RA6, RA7, RA9). File ngun: Announce.c Khai bo Socket v m mt Socket:
static UDP_SOCKET MySocket; // Open a UDP socket for outbound broadcast transmission MySocket = UDPOpen(ANNOUNCE_PORT, NULL, ANNOUNCE_PORT); Tham s ANNOUNCE_PORT u tin l tn UDP, bn c th v d nh 2840, 2534cn tham s ANNOUNCE_PORT th 2 l

ly bt c s no, s hiu cng ca

UDP, l 30303 nh khai bo. M ngun sau s c d liu m lnh v 16 k t trong b m nhn, Nu khng c 16 k t ( v d nh gi LED, ch gi m lnh thi), th chui c v l bt k. (iu khng quan trng, v ch khi m lnh ng, th chc chn s c chui k t nhn c l ng ):
// See if this is a discovery query or reply UDPGet(&i); UDPGetArray(&j[0],lenStr);

M lnh ghi LCD, n LED:


if (i=='L') { //cstring for (kk=0; kk<lenStr; kk++) strLCD[kk]=j[kk]; #ifdef USE_LCD //LCDPos = 1; strcpy(LCDText, strLCD); LCDUpdate(); #endif } if (i=='1') LED0_IO=!LED0_IO; if (i=='2') LED1_IO=!LED1_IO; if (i=='3') LED2_IO=!LED2_IO;

Ch , kiu enum khi bin ghi l DiscoverySM++, tc l tr ti gi tr th 2 trong tp hp enum. Enum l mt kiu tp hp ca bt c kiu no.

Web nhng vo dsPic33 Vi xy dng m hnh khng c b nh EEPROM, v vy bn cn lu tr ni dung Web vo b nh. lu tr c, cn chuyn ton b trang Web vi ngn ng html c thit k bng (notepad, Dreamwaver) vo trong 1 kiu d liu m Mplab hiu c nh mt chui hng s. Cng c chuyn i l MPFS2.exe c dng nh sau:

Vi trnh dch C30, file to ra l file MPFSImg2.s, file ny c cho vo phn header ca file Maindemo.c. #include "MPFSImg2.s" V tt nhin ta phi nh ngha s dng dch v http2 cng dch v mail. V b dch v s dng b nh ngoi. Tt c trong file TCPIPconfig.h. iu ny c ni phn trn. (phn III. Thit lp khng dng b nh ngoi). Khi np xong, ta ch cn truy cp vo IP ca dsPic l c th vo c trang Web nhng ny. Hin ti Chandufo thy ang Debug sai phn ny, v nu khi nhng vao Web, vy th cc hm function vit sn l javascript nh %16, %17 c thc hin nh th no th cha bit. hic. Nhng v mt l thuyt l nh vy, Chandufo kim chng trong phn m phng ca Protelus.

Vn Web trn PC Khi thc hin dsPic nh l mt trm thu thp d liu, Enthernet ch l phng thc truyn ti d liu. Th mt giao din Web c thit lp trn PC, lc y, PC va l mt server, va l mt Client. PC s l Server cho cc my PC t xa truy cp ti. V PC l Client kt ni ti dsPic nhm ly d liu thu thp c, x l v tr v cho PC xa do yu cu.

Khi c mt Request t RemotePC, Server PC s x l, m cng 9760 (TCP ti dsPic theo thit lp trn), gi d liu theo tiu chun TCP, hoc UDP (vi cng 30303) vo dspic. Dspic server lng nghe, x l, tr li cho PC Client. PCClient s x l. i vi RemotePC th PC Client l PC server. PCserver tr li RemotePC d liu theo yu cu. 1. Vn thit lp mng ton cu Vn thit lp mng ton cu. Tc l PC ca mnh thanh PC server RemotePC bt c u c th truy cp c vo PC ca bn theo a ch c ISP cung cp. V cn Free, bn hy ng k mt tn min trn trang www.dyndns.org cho PC nh mnh. Cch thit lp Chandufo a vo mt ti liu khc tn l Cu hnh Server trn PC nh mnh.doc. File c nh km trong cng folder. 2. Vn lp trnh Web giao tip vi con Dspic Web Chandufo s thit k bng ngn ng ASP.Net (h tr HTML), s dng C# lm giao din lp trnh. Vic chn C# bi v chng trnh phn mm c. C th tm hiu a vo. Vic chn ASP. Net v c th s dng ngay trnh server IIS ca Windows (khi phi dng Apache v PHP). Hin y l vic hp dn nht l lp trnh Web s dng C# giao tip vi con dsPic. Chandufo vn ang tm hiu.

You might also like