picdem.net. carte picdem.net rs232 ethernet alim lcd2 x 16 rtl8019 pic
TRANSCRIPT
PICDEM.net
Carte PICDEM.net
RS232 EthernetAlim
LCD 2 X 16
RTL8019
PIC
Schéma PICDEM.net
Reset
RB5
NIC
LCD, EEPROM, ICD2
RS232
Interface réseau (NIC) RTL8019
(NIC)Network Interface Controller
Transfo. et prise Ethernet
Adressage du RTL8019
0 0000 0000 0110 000x xxxxCablé à l’adresse &h300 (bus ISA)
RTL8019 en boitiers 100L QFP
Démonstration (mpnicee.mcp)
Version pour RTL8019 ou compatible NE2000
Fichier compressé MCHPStackv211.EXEAutour du 18F452
Page d’accueil
Fichiers source C et web
Fichiers sources principale (main) Webserv.c
Fichiers web principale index.htm
Liaisons PICDEM.net au PC client
Port Ethernet (RJ45)
PC client
Port COM
Liaison Ethernet (RJ45) direct par câble croisé , par câble droit avec un hub ou réseau local
PICDEM.net
Configuration de l’Hyper Terminal
Menu de Paramètrage
Réponse du PICSERVEUR après appuis en simultané de la touche reset et RB5
1 : Adresse mac en decimal pour les deux derniers octets du PICServeur
(00 04 a3 00 XX XX)
2 : Adresse IP du PICServeur
3 : Passerelle Internet
4 : Masque de sous réseau
5/6 : Attribution d’adresse IP par serveur DHCP sur le reseau
7 : Transfert du fichier image des fichiers HTML et autre que le serveur retournera à la demande
Configuration IP du PC
Compilation des fichiers en fichier image (*.BIN)
Cible du raccourci MPFSC:\MCHPStack\source\MPFS.exe C:\MCHPStack\Source\WebPages test.bin
Transfert du fichier image par l’Hyper Terminal
Transfert du fichier image par FTP
Utilisateur : ftpMot de passe : microchip
Cible du raccourci (FTP)C:\MCHPStack\ftp\ftp.exe 192.168.0.2
INDEX.HTM<HTML><HEAD><TITLE>Microchip TCP/IP Stack Demo</TITLE></HEAD><FRAMESET rows="15%,40%,20%" border=0><FRAME name="top" src="Header.htm" marginheight=0 marginwidth=10><FRAME name="middle" src="Home.htm" marginheight=5 marginwidth=10><FRAMESET cols="50%,50%" border=0><FRAME name="left" src="Status.cgi" marginheight=2 marginwidth=50%><FRAME name="right" src="Commands.cgi" marginheight=2 marginwidth=50%></FRAMESET></FRAMESET></HTML>
HOME.HTM<html><head><title>PICStack Home</title></head><body bgcolor="#FFFFFF"><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr><td valign="top" width="50%"><font color="#000000"><strong>Welcome!</strong></font></a><p><font color="#000000">This site is used to demonstrate the power and abilities of an 8-bit embedded web server. This site is powerd by Microchip PIC microcontroller running Microchip TCP/IP Stack. Everything you see is served through a Microchip PICDEM.net Internet/Ethernet demonstration board.</font></p></td> <td valign="top" width="50%"><font color="#000000">Bottom half of this page illustrates a real-time control of PICDEM.net board. "Status" section refreshes board information every few seconds and "Commands" section issues command to toggle on-board LEDs. </font><p><font color="#000000">Push on-board switch or rotate one of the potentiometers and see the screen getting updated. You may also click on one of the two LED command buttons toggle on-boad LEDs.</font></p> </td> </tr></table></body></html>
STATUS.CGI
<html><meta http-equiv="refresh" content="3"><body><table><tr><td><b>Results</b></td></tr><tr><td>Pot1:</td><td>%02</td></tr><tr><td>Pot2:</td><td>%03</td></tr></table><table cellpadding="3"><tr><td>Switch:</td><td>%04</td></tr>
<tr><td>LEDs:</td><td>D6=%01</td><td>D5=%00</td></tr></table></body></html>
Declaration dans (websrvr.c)/* * CGI Variable codes. - There could be 0-255 variables. */#define VAR_LED_D5 (0)#define VAR_LED_D6 (1)#define VAR_ANAIN_AN0 (2)#define VAR_ANAIN_AN1 (3)#define VAR_DIGIN_RB5 (4)
“Sniffer” STATUS.CGI
PC PICServeur
PC
PICServeur
WORD HTTPGetVar(BYTE var, WORD ref, BYTE* val){switch(var) { case VAR_LED_D5: if ( LATA3 ) *val = '0'; else *val = '1'; break;
…………….. case VAR_ANAIN_AN0: if ( ref == HTTP_START_OF_VAR ) { ref = (BYTE)0; } *val = AN0String[(BYTE)ref]; if ( AN0String[(BYTE)ref] == '\0' ) return HTTP_END_OF_VAR;
(BYTE)ref++; return ref;
•
Webserv.cFonction “HTTPGetVar”
COMMAND.CGI
<html><body bgcolor="#FFFFFF"><FORM METHOD=GET action=0><table><tr><td><b>Commands</b></td></tr><tr><td><input type=submit name=0 value="Toggle LED1"></td></tr><tr><td><input type=submit name=1 value="Toggle LED2"></td></tr></table></body></html>
Valeur renvoyé au serveur par clic sur "Toggle LED1 ou 2"
“Sniffer” COMMAND.CGI
<tr><td><input type=submit name=0 value="Toggle LED1"></td></tr>
Webserv.cFonction “HTTPExecCmd”
Fonction > void HTTPExecCmd(BYTE** argv, BYTE argc) dans (websrvr.c) var = argv[1][0] - '0';
switch(var) { case VAR_LED_D5: /* * This is "D5". * Toggle D5. */ LATA3 ^= 1; break;
case VAR_LED_D6: /* * This is "D6". * Toggle it. */ LATA2 ^= 1; break; }
Exécution des commandes :Valeurs retournées par un clic sur “Toggle LED1”“http:192.168.0.2/0?0=Toggle+LED1”
0?0=Toggle+LED1Overview: This function is a "callback" from HTTPServer task. Whenever a remote node performs interactive task on page that was served, HTTPServer calls this functions with action arguments info. Main application should interpret this argument and act accordingly.
Following is the format of argv: If HTTP action was : thank.htm?name=Joe&age=25 argv[0] => thank.htm argv[1] => name argv[2] => Joe argv[3] => age argv[4] => 25
Carte test ISA RTL8019“NE2000”
ISA
R
ES
ET
RB5
RS232
POT2
POT1
LED
1LED
2
VLCD
Edition de pages HTML (MOZILLA)
“Edition avec MozillaCOMMAND.CGI
“Sniffer” COMMAND.CGI
Application
Contrôle d’un
réseau de gaz
Surveillanced’un
réseau de gaz
Inverseur semi automatique
Pressostats
InverseurManuel
Gaz Argon
Pressostat
Contact
Surveillance d’un réseau de gaz
Webserv.c
Fonction “WORD HTTPGetVar(BYTE var, WORD ref, BYTE* val)”….
case VAR_DIGIN_RB5: if ( PORTB_RB5 ) *val = '1'; else *val = '0'; break;
case VAR_DIGIN_RB6: if ( PORTB_RB6 ) *val = '1'; else *val = '0'; break;
case VAR_DIGIN_RB7: if ( PORTB_RB7 ) *val = '1'; else *val = '0'; break; }…..
En conclusion
ExplorateurHTTP
FTP
NICSTACK IP
CommandCGI
EEPROM
StatusCGI
Sortie
Entrée
HTTPGetVar
HTTPExecCmd