CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet...

59
1 CORSO SITE PLAYER n questi ultimi anni abbiamo assistito ad una vera e propria esplosione dell'utilizzo delle reti locali (LAN) e di Internet. Tipicamente siamo abituati a concepire le reti come insiemi di compu- ter che scambiano fra loro informazioni; tuttavia nulla vieta di pensare di poter collegare ad una rete di computer dei dispositivi elettronici. La possibilità di controllare diversi dispositivi elettronici attraver- so una rete LAN, e quindi anche attraverso Internet, apre le porte a tutta una serie di applicazioni altri- menti improponibili. Pensiamo ad esempio alla pos- sibilità di verificare da remoto lo stato di un allarme, oppure poter accendere e spegnere delle luci, piut- tosto che un condizionatore, semplicemente acce- dendo a questi dispositivi come a delle normali pagine Internet. Una rete è formata fondamentalmente da un suppor- to fisico che porta le informazioni e da una serie di protocolli che descrivono in sostanza le regole in cui i dati viaggiano sul supporto fisico. Per potersi col- legare ad una certa rete occorre quindi utilizzare lo stesso supporto fisico e adottare gli stessi protocolli per poter scambiare informazioni con gli altri dispo- sitivi collegati alla rete. Abbiamo parlato di LAN e di Internet. Una LAN (Local Area Network) è una rete locale, come quel- le che possiamo trovare nella maggior parte degli uffici e delle aziende. I vari computer sono connes- si tra di loro utilizzando delle schede di rete, colle- gate a loro volta attraverso degli hub o degli switch. Le schede all'interno dei computer rispettano lo standard Ethernet, che prevede un connettore RJ45 e l'utilizzo di un normale doppino telefonico come canale fisico. Ogni scheda Ethernet possiede un pro- prio indirizzo unico (indirizzo MAC) attraverso il quale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle prime schede che supportavano una velocità di 10Mbit/sec (ethernet 10baseT), alle più recenti che > Corso di programmazione e utilizzo del modulo SitePlayer TM SP1. L’integrato realizza un vero e proprio Web Server, permette cioè di interagire con qualsiasi dispositivo elettronico attraverso una normale pagina Internet. Grazie a questo corso impareremo insieme a programmare il modulo realizzando applicazioni che utilizzano la rete per comunicare con dispositivi remoti di vari genere. Pr Pr ima punta ima punta ta ta Elettronica In - settembre 2003 73 a cura di Ing. Roberto Nogarotto

Transcript of CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet...

Page 1: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

1

COR

SOSI

TEP

LAY

ER

n questi ultimi anni abbiamo assistito ad unavera e propria esplosione dell'utilizzo delle

reti locali (LAN) e di Internet. Tipicamente siamoabituati a concepire le reti come insiemi di compu-ter che scambiano fra loro informazioni; tuttavianulla vieta di pensare di poter collegare ad una retedi computer dei dispositivi elettronici. La possibilitàdi controllare diversi dispositivi elettronici attraver-so una rete LAN, e quindi anche attraverso Internet,apre le porte a tutta una serie di applicazioni altri-menti improponibili. Pensiamo ad esempio alla pos-sibilità di verificare da remoto lo stato di un allarme,oppure poter accendere e spegnere delle luci, piut-tosto che un condizionatore, semplicemente acce-dendo a questi dispositivi come a delle normalipagine Internet.Una rete è formata fondamentalmente da un suppor-to fisico che porta le informazioni e da una serie diprotocolli che descrivono in sostanza le regole in cuii dati viaggiano sul supporto fisico. Per potersi col-

legare ad una certa rete occorre quindi utilizzare lostesso supporto fisico e adottare gli stessi protocolliper poter scambiare informazioni con gli altri dispo-sitivi collegati alla rete.Abbiamo parlato di LAN e di Internet. Una LAN(Local Area Network) è una rete locale, come quel-le che possiamo trovare nella maggior parte degliuffici e delle aziende. I vari computer sono connes-si tra di loro utilizzando delle schede di rete, colle-gate a loro volta attraverso degli hub o degli switch.Le schede all'interno dei computer rispettano lostandard Ethernet, che prevede un connettore RJ45e l'utilizzo di un normale doppino telefonico comecanale fisico. Ogni scheda Ethernet possiede un pro-prio indirizzo unico (indirizzo MAC) attraverso ilquale è univocamente identificata all'interno di unarete. Le schede Ethernet possono scambiare dati adifferenti velocità; negli ultimi anni si è passati dalleprime schede che supportavano una velocità di10Mbit/sec (ethernet 10baseT), alle più recenti che>

Corso di programmazione e utilizzodel modulo SitePlayerTM SP1.

L’integrato realizza un vero e proprioWeb Server, permette cioè di interagire

con qualsiasi dispositivo elettronicoattraverso una normale pagina Internet.

Grazie a questo corso impareremoinsieme a programmare il modulo

realizzando applicazioni che utilizzanola rete per comunicare con dispositivi

remoti di vari genere.PrPrima puntaima puntatata

Elettronica In - settembre 2003 73

a cura di Ing. Roberto Nogarotto

Page 2: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

supportano velocità di cifra di 100 Mbit/sec(100baseT). Attraverso un modem, o eventualmen-te un router, è poi possibile per i vari computercomunicare con il mondo esterno collegandosi adInternet. Come abbiamo già detto, affinché attra-verso le schede di rete vari computer possanocomunicare, questi devono utilizzare dei protocolliper scambiarsi i dati.Nella maggior parte delle attuali applicazioni, perla trasmissione delle informazioni si utilizzano iprotocolli IP (Internet Protocol) e TCP(Transmission Control Protocol) che, soprattutto

grazie alla recente diffusione di Internet, sono dive-nuti di fatto lo standard per questo genere di opera-zioni. In linea teorica, per realizzare un dispositivoelettronico in grado di comunicare attraverso unaLAN, dovremmo implementare i protocolli IP eTCP, ovvero fisicamente scrivere il software cherealizza la gestione di questi protocolli.Molto più comodo è ovviamente avere un disposi-tivo che faccia per così dire da interfaccia fra laLAN e il mondo esterno. Questo dispositivodovrebbe quindi essere in grado di gestire i variprotocolli della rete, in modo da poter comunicare

COR

SOSITE

PLA

YER

74 settembre 2003 - Elettronica In

Siteplayer Sp1: embedded ethernet

web server coprocessor module

33 mm

22,9 mm

12,7 mm8,25 mm

5,1 mm

PPPPIIIINNNN1111

PPPPIIIINNNN9999PPPPIIIINNNN11110000

PPPPIIIINNNN11118888

! Completo Ethernet Web Server in circa1,17 pollici quadrati (circa 750 mm2).

! Sistema Real Time di modifica dellagrafica delle pagine web.

! La modalità Stand Alone permette il controllo di 8 relè, 4 segnali PWM a 8 bit,interruttori di input o contatori di eventisenza nessun altro processore esterno.

! I dati possono essere letti dal webattraverso campi testuali, tasti grafici ecollegamenti.

! Standard Ethernet 10BaseT con correzionehardware automatica della polarità.

! 48KByte di memoria Flash per pagineWeb, scrivibile via Ethernet.

! Supporto ai protocolli ARP, ICMP, IP,UDP, TCP, DHCP.

! Indirizzo IP statico o dinamico ottenutoattraverso server DHCP.

! Porta seriale di Baud Rate compreso tra300 e 115.200 bit/sec da utilizzare comeinterfaccia verso un processore.

! Possibilità di scrivere programmi inJAVA, C, C++ e Visual Basic permonitorare e controllare da remoto ilmodulo SitePlayer.

! 768 Byte di SiteObjectsTM che possonoassumere il formato bit, byte, integer,long, string e grafici.

! Le pagine web possono essere realizzateutilizzando i tools di sviluppo standardper codice HTML.

! Connessione diretta al filtro 10BaseT oalla presa RJ45 con filtri interni.

Page 3: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

correttamente con gli altri dispositivi collegati, edessere capace di interagire col mondo esterno attra-verso dei semplici comandi, ad esempio attraversoun normale sistema di comunicazione seriale.

Proprio per consentire all’utente finale di realizza-re delle proprie applicazioni Internet senza doversipreoccupare di gestire i vari protocolli, la societàNetMedia Inc. ha sviluppato il modulo SitePlayerTM

SP1 che svolge esattamente le funzioni che abbia-mo appena descritte: da un lato gestisce i protocol-li di comunicazione Internet mentre dall’altrocomunica con il mondo esterno attraverso una con-nessione di tipo seriale.In pratica il modulo SitePlayer realizza quello cheviene chiamato un Web Server. Che cosa sia un ser-ver è presto detto: è un software che risponde adelle chiamate effettuate da un client, inviando inrisposta a queste chiamate dei dati. Vediamo con unesempio semplicissimo cosa significa tutto ciò:quando ci si collega ad Internet e si inserisce l'indi-

COR

SOSI

TEP

LAY

ER

Elettronica In - settembre 2003 75

>

PINOUT e diagramma a blocchi

SerialDevice

InterfaceUART

SiteObjectsProcessorSi interfaccia conla perifericaUART perpermettere lamodifica deiSiteObjects.

SitePlayerWeb ServerMemorizza le pagine web epermette l�aggiornamento daidati e della grafica delSiteObjects.Gestisce inoltre i processi diinput dal browser.

EthernetProtocolProcessorSi interfaccia conl�Ethernet per ilsupporto alprotocollo TCP/IP.

10BaseTEthernetInterface

SiteObjects RAM storage

768Byte contenenti le informazioniper modificare le pagine web e i datiin ingresso.

FLASH Web Pages

48KByte. Memorizzapagine web e informazionidi configurazione.

Hardware Port

8 pin per relè; 4 outPWM; input.

Il modulo SitePlayerTM

PIN NUMBER1

234567

8

910

da 11 a 18

PIN NAMELink LED

RX+RX-TX-TX+VSSRXD

TXD

VCCReset

DESCRIZIONE:Basso quando è stata stabilita una connessione; generalmente utilizzatoper comandare un LED.Pin + porta ricevitore 10BaseT.Pin - porta ricevitore 10BaseT.Pin - porta trasmettitore 10BaseT.Pin + porta trasmettitore 10BaseT.Massa.Pin ricezione UART. Può essere collegato direttamente al pin TXD diun�UART esterna.Pin trasmissione UART. Può essere collegato direttamente al pin RXD diun�UART esterna.Alimentazione (+5V).Pin alto per Reset; massa o nessuna connessione per funzionamento nor-male.Porte I/O Hardware.

Page 4: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

schede Ethernet sono identificate da un indirizzo a48 bit. Vi è un particolare protocollo (ARP, AddressResolution Protocol) che permette di associare agliindirizzi IP (che sono codificati con 4 byte) gliindirizzi fisici delle schede Ethernet (che sonoinvece codificati a 8 byte).Descritto in questo modo la rete Internet apparemolto semplice; occorre però ricordare che questaè solo una visione, per così dire, dall'alto di quelloche in succede realtà. A fronte di questa semplicitàdi utilizzo come utenti, vi è una enorme comples-sità nella implementazione dei diversi protocolli, adiversi livelli, che gestiscono la comunicazione. Ilgrande vantaggio di utilizzare un modulo come ilSitePlayer consiste proprio nel poter lavorare ad unlivello più alto, che permette di non doversi preoc-cupare più di tanto di cosa stia succedendo ai livel-li più bassi.

Per realizzare un web server, cioè un oggetto cherisponda alle richieste di un client, occorre quindiavere del software che supporti i numerosi proto-colli coinvolti ai vari livelli, nonché avere memo-rizzate le pagine web (realizzate in linguaggioHTML) e le immagini che, rispedite indietro alclient che le ha richieste, verranno visualizzate dalbrowser.Il modulo Siteplayer implementa esattamente que-ste funzioni: il software del micro permette lagestione dei vari protocolli, e di questa parte disoftware in realtà in seguito non ci si dovrà piùpreoccupare, mentre le varie pagine web elaboratedall'utente vengono scaricate nella memoria flashper essere restituite nel momento in cui vengonorichieste da un browser.A questo punto vediamo più in dettaglio, da un’ot-tica hardware, in cosa consiste il moduloSiteplayer. Esso è costituito fondamentalmente daun transceiver Ethernet e da un microcontrollore89C51. Per permettere al modulo di comunicarevia Ethernet è necessario interporre un trasformato-re ed un connettore RJ45. Abbiamo già accennatoal fatto che in una rete Ehternet le varie schededevono essere collegate attraverso un hub o unoswitch, e quindi anche il SitePlayer non deve esse-re collegato direttamente ad una scheda di rete maad una periferica di questo tipo. Questi due dispo-sitivi si differenziano per il fatto che lo switch rico-nosce gli indirizzi dei vari pacchetti di dati in viag-

COR

SOSITE

PLA

YER

76 settembre 2003 - Elettronica In

rizzo di una pagina web, il computer dal qualerichiediamo l'invio di una pagina è il client, mentreil computer al quale richiediamo l'invio dei datidella pagina è il server. Il client chiama il serverattraverso il suo indirizzo IP, cioè l'indirizzo cheidentifica univocamente ogni computer collegato inun certo momento alla rete. Il client ed il server simettono in comunicazione utilizzando il TCP.A questo punto il browser che utilizziamo nelnostro computer per visualizzare le pagine web,utilizzando un altro protocollo, l'HTTP (Hyper TextTrasfer Protocol), richiede l'invio della pagina webal server. Una pagina web è costituita sostanzial-mente da testo, ed utilizza un linguaggio particola-re: l'HTML. Questo linguaggio prevede l'utilizzo didiversi comandi per definire ad esempio il colore disfondo, la posizione di immagini e così via. Ilbrowser, quando riceve questo testo, interpreta ilcodice html ricostruendo l'immagine della paginada visualizzare.In generale un sito web può contenere diversi filehtml, ma il principale è tipicamente index.htm.Oltre a questo file, possono essere poi inclusi varifile immagine, suoni e così via. Nell'effettuare unarichiesta di una pagina, tipicamente il browser,dopo aver scaricato la pagina principale, va a cer-care eventuali link ad altri file, procedendo quindia richiedere l’invio dei file necessari.Abbiamo parlato di indirizzo IP; analizziamolo unpo’ più in dettaglio. Questo è costituito da 4 byte;normalmente viene indicato coi quattro valori deci-mali separati da un punto. Quasi nessuno è abitua-to ad utilizzare questa codifica degli indirizzi, inquanto navigando mediante browser in Internetinseriamo un indirizzo in forma testuale (ad esem-pio www.futuranet.it). Questo testo viene peròassociato, attraverso il DNS (Domain NameSystem) al proprio indirizzo internet a 32 bit.L'indirizzo IP può essere statico o dinamico. E' sta-tico quando lo si assegna ad un computer o ad undispositivo in maniera defintiva e univoca. Vi èinvece la possibilità che l'indirizzo IP di una mac-china venga assegnato dinamicamente dal servernel momento del collegamento. In questo caso, lostesso computer può avere indirizzi differenti ognivolta che ci si connette ad Internet. Questa è adesempio la situazione tipica di quando si accede adInternet attraverso un provider. Quest’ultimo dispo-ne di una serie di indirizzi possibili, e quando uncomputer richiede il collegamento ad Internet, gliviene assegnato uno degli indirizzi disponibile almomento. Abbiamo detto in precedenza che le

Hardware e softwaredel modulo SitePlayerTM

Page 5: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

gio nella rete, e li inoltra quindi soltanto alla sche-da che li deve ricevere. Ricordiamo che ilSitePlayer funziona secondo lo standard a 10 Mb/s,e quindi l'hub e lo switch devono supportare questavelocità. Volendo, il modulo può anche essere col-legato direttamente ad una schede di rete, ma inquesto caso il cavo deve essere del tipo incrociato.Tornando al microcontrollore, questo contiene tuttele istruzioni necessarie per gestire i vari protocollidi comunicazione; dispone inoltre di 64 Kbyte dimemoria flash, di cui 48 Kbyte sono disponibili percaricare le pagine web. Il microcontrollore imple-menta poi anche una porta seriale che permette lacomunicazione con un altro microprocessore attra-verso un normale sistema asincrono a 9600 baud.In pratica il modulo Siteplayer comunica con ilmondo esterno attraverso delle locazioni di memo-ria che è possibile leggere e scrivere attraverso laseriale. Queste locazioni di memoria vengono poiutilizzate dal micro per aggiornare le pagine webinserite. Il modulo prevede anche alcune linee diI/O che possono essere utilizzate, ad esempio, perleggere lo stato di alcuni pulsanti o per pilotare deirelè. Vediamo a questo punto le operazioni da effet-tuare per realizzare un dispositivo in grado dicomunicare attraverso una rete Ethernet.Innanzitutto occorre realizzare la pagina web chevogliamo venga visualizzata. Per far questo è pos-sibile scrivere il codice html della pagina con unnormale editor di testo. Se non si conosce il lin-guaggio html, è anche possibile far “scrivere” ilcodice html utilizzando un ambiente grafico. È pos-

sibile, ad esempio, utilizzare un programma comeFront Page per realizzare la pagina graficamente ericavarne quindi il codice html. Ovviamente saràpossibile realizzare anche più pagine web, ed inte-grare delle immagini in queste. Occorre ricordareperò che il limite di memoria disponibile è comun-que limitato a 48 Kbyte. All'interno del codice htmlè possibile inserire degli script particolari, chevedremo nelle prossime puntate, per fare in mododi “collegare” il contenuto della pagina web con ilcontenuto di alcune locazioni di memoria delmodulo SitePlayer. Una volta realizzato il codicehtml, è necessario realizzare un file di definizione,che dovrà avere estensione .spd. Questo file contie-ne una serie di informazioni, fra le quali, ad esem-pio, il tipo di indirizzo IP (statico o dinamico), e nelcaso sia statico, l'indirizzo stesso. È poi possibileimpostare delle password e scegliere le directorydove risiedono le pagine web e le eventuali imma-gini da caricare. Occorre poi definire ovviamente lelocazioni di memoria che corrisponderanno ai varioggetti inseriti nelle pagine web, in modo da poterpoi essere letti o scritti attraverso la seriale. Unavolta realizzato tutto questo, occorre utilizzare unprogramma linker (fornito con il moduloSitePlayer) per poter assemblare pagine web,immagini e file di definizione in un unico file. Daquesto stesso programma è poi possibile scaricareil tutto all'interno del modulo. Per fare questo èpossibile utilizzare la connessione Ethernet, se ilmodulo è già collegato e “visto” dalla rete, oppureeffettuare la programmazione con la seriale.

COR

SOSI

TEP

LAY

ER

Elettronica In - settembre 2003 77

Per iil

Il modulo SitePlayer presentato è disponibile già montato e collaudato(cod. 8200-SP1) al prezzo di Euro 42,00: il modulo implementa un WebServer, un controllore Ethernet 10baseT, una memoria Flash in cui inseri-re le pagine Web e un dispositivo di interfacciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l�alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331/576139 ~ Fax: 0331/466686 ~ Sito: www.futuranet.it

Page 6: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

PAGINA BIANCA

Page 7: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

2

CO

RSO

SITE

PLAY

ER

ella precedente puntata del Corso abbiamoiniziato ad analizzare il modulo SitePlayer

SP1 ed in particolare abbiamo visto in quale conte-sto applicativo può essere utilizzato. Sono state ana-lizzate le operazioni che sono necessarie per pro-grammare il SitePlayer. Occorre innanzitutto realiz-zare la pagina web (sia scrivendo direttamente ilcodice html sia utilizzando un ambiente grafico) chevogliamo visualizzare. All’interno del codice html èpossibile inserire dei particolari script (che analizze-remo nelle prossime puntate) in modo da collegarela pagina web ad alcune locazioni di memoriadell’SP1. In seguito è necessario realizzare un file didefinizione (estensione .spd) contenente alcuneinformazioni (ad esempio il tipo di indirizzo IP,delle password, ecc.). L’ultima operazione è la defi-nizione delle locazioni di memoria che corrispondo-no ai diversi oggetti inseriti nelle pagine web. Unavolta completate tutte queste operazioni è necessa-rio utilizzare un apposito programma linker (dispo-

nibile gratuitamente sul sito www.siteplayer.com)che assembli tutti gli elementi che compongono lepagine web e il file di definizione in un unico file,che infine andrà scaricato all’interno del modulo.Per facilitare l'apprendimento delle funzionalità delmodulo, della sua programmazione e del suo inter-facciamento col mondo esterno, abbiamo realizzatouna semplice ma completa DemoBoard, la cui strut-tura si può vedere nell’immagine presente in questepagine. Gli elementi principali che la costituisconosono facilmente identificabili: si può notare un con-nettore in cui inserire il modulo SitePlayer SP1, unmicrocontrollore PIC della famiglia 16F876, leinterfacce verso la connessione Ethernet e verso ilprogrammatore in circuit per il PIC, oltre ad unaserie di risorse di I/O che tra breve analizzeremo.Prima di entrare nel dettaglio della demoboard,vediamo come questa deve essere connessa perpoter funzionare correttamente. Il tutto è mostratonello schema presente nel box “collegamenti della>

Corso di programmazione e utilizzodel modulo SitePlayerTM SP1.

L’integrato realizza un Web Server,permette cioè di interfacciare e

comandare un circuito elettronicoattraverso una normale pagina Internet.

Grazie a questo corso impareremoa programmare il modulo

realizzando applicazioni chesi basano su pagine internet per

accedere a circuiti elettronici.Seconda puntaSeconda puntatata

Elettronica In - ottobre 2003 71

a cura di Ing. Roberto Nogarotto

Page 8: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

demoboard”. La demoboard, oltre ovviamenteall'alimentazione ottenuta da un normale alimenta-tore a 12 V, deve essere collegata ad un computerattraverso un cavo di rete ed un HUB o, se preferi-te, ad uno switch. Non è possibile collegare diretta-mente la demoboard alla scheda di rete installatanel PC, a meno di utilizzare un cavo incrociato.Poiché tuttavia il costo di un HUB ethernet è oggi-giorno veramente irrisorio (si parla di qualche deci-na di euro), questa rappresenta sicuramente la solu-zione più comoda e che consigliamo, anche perchéè possibile utilizzare lo stesso HUB per collegareeventualmente altri computer presenti e realizzare

così una completa rete LAN. Una volta collegatofisicamente alla rete, il modulo può essere già vistodalla stessa, purché ovviamente l'indirizzo IPimpostato nel SitePlayer SP1 sia valido.L'ulteriore collegamento da effettuare riguarda laprogrammazione del PIC. E' possibile utilizzare unprogrammatore esterno con zoccolo ZIF e quindiestrarre fisicamente dalla demoboard il micro ognivolta che intendiamo riprogrammarlo. Poiché tuttavia questa famiglia di micro prevede lapossibilità della programmazione in-circuit (signi-fica che il micro rimane nel circuito target e soloalcune linee del PIC vengono usate per la program-

CO

RSO

SITEPLAYER

72 ottobre 2003 - Elettronica In

DigitalOut

DigitalIn

Pic Program Selector

User Pic

Pic In-CircuitProgramming

Ethernet10Base-TConnector

Power12 Vdc

AnalogIn

PWMOut

AnalogOut Temperature

Sensor

SitePlayer

Module

Struttura generale della demoboard: sono identificabili il connettore in cuiinstallare il modulo SitePlayer SP1, il microcontrollore PIC della famiglia 16F876,

i connettori verso la rete ethernet e verso il programmatore in-circuit delmicrocontrollore, alcune risorse di I/O (ingresso e uscita analogici, uscita onda PWM,sensore di temperatura, ingressi e uscite digitali). Sono infine presenti il connettored�alimentazione e il deviatore che seleziona la programmazione o l�utilizzo del PIC.

S T R U T T U R A dd ee mm oo bb oo aa rr dddd ee mm oo bb oo aa rr dd

Page 9: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

schema elettrico pubblicato in queste pagine. U1rappresenta il connettore su cui innestare il moduloSitePlayer SP1. Il modulo comunica da un lato conla rete Ethernet tramite un connettore RJ45 e dal-l'altro con il PIC attraverso una normale linea seria-le (TX ed RX) ed una linea di I/O. Il collegamentoattraverso il connettore RJ45 è realizzato utilizzan-do le linee TPO+, TPO-, TPI+ e TPI- (piedini 2,3,4e 5 del SitePlayer). Da notare che il connettoreRJ45, essendo anche un filtro, necessita di 4 con-densatori esterni, siglati C1, C2, C3 e C4. Il modu-lo comunica con il micro, come abbiamo detto,attraverso le due linee di comunicazione seriale TX

CO

RSO

SITE

PLAY

ER

Elettronica In - ottobre 2003 73

>

HUBHUB10/100 BASE-T

LAN LAN Ethernet

PowerPower+ 12 Vdc

PICProgramming

FT386FT386

LPT1LPT1Parallel Port

PCPC

DemoboardSiteplayerFT497FT497

PowerPower+ 18 Vdc

LANLANEthernet

mazione), abbiamo pensato di rendere disponibileun connettore che permetta l'utilizzo di un pro-grammatore preposto alla programmazione in-cir-cuit. Un possibile programmatore di questo tipo èl'FT386, da collegare alla porta parallela di un PC;quest’ultimo può essere tranquillamente lo stessoche si utilizza per sfogliare le pagine web delSitePlayer attraverso la LAN.

Entriamo adesso più nel dettaglio della descrizionedella demoboard, utilizzando come riferimento lo

Demoboard per SitePlayerTM

Schema che mostra come eseguire i collegamenti tra la demoboard, il PC e il programmatore in circuit per PIC. Nel nostro esempio si è scelto di utilizzare un

collegamento tra demoboard e computer realizzato tramite un HUB ethernet; a nostroparere rappresenta infatti la scelta più comoda e veloce e che permette inoltre di

realizzare una piccola rete LAN composta da altri dispositivi.Il collegamento tra demoboard e programmatore per PIC è realizzato tramite un cavo flet a 6 fili, mentre la connessione tra computer e PIC programming

è realizzata mediante cavo parallelo.

C O L L E G A M E N T I D E L L A dd ee mm oo bb oo aa rr dddd ee mm oo bb oo aa rr dd

Page 10: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

dei dati da leggere, andando così ad interrogare ilmodulo solo quando effettivamente c'è stata unacomunicazione. Questo permette di alleggerire dimolto il compito del PIC (che altrimenti dovevainterrogare, ad intervalli regolari e mediante unatecnica di polling, il modulo) e soprattutto di evita-re che il PIC vada ad interrogare il modulo SP1

CO

RSO

SITEPLAYER

74 ottobre 2003 - Elettronica In

(piedino 8) ed RX (piedino 7). Abbiamo utilizzatopoi una linea di I/O del SitePlayer (piedino 11) inquanto questo piedino, che si trova normalmente alivello logico alto, viene portato a livello basso perun breve intervallo di tempo (circa 5 microsecondi)quando arrivano dei dati dalla rete. In pratica il PICutilizzerà questa linea per sapere quando ci sono

S C H E M A e l e t t r i c oe l e t t r i c o

Page 11: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

quando quest’ultimo sta ricevendo dei dati dallarete. Completano il collegamento del modulo lelinee di alimentazione ed il led che segnala quandoil modulo sta effettuando una comunicazione con larete.Passiamo a questo punto ad analizzare il PIC e lesue interfacce. Cominciamo dalla PortB; questelinee sono tutte collegate ad un dip switch (DS1).Sottolineiamo che non è stato necessario utilizzaredelle resistenze di pull-up per mantenere un livellologico normalmente alto, in quanto è possibile con-figurare questa porta in modo da utilizzare le resi-stenze di pull-up interne del micro.Occorre notare il collegamento delle due linee RB6ed RB7. Poiché queste linee servono anche per laprogrammazione in circuit del microcontrollore,abbiamo inserito un deviatore (siglato DEV1).Quando occorre programmare il PIC, è necessarioportare il deviatore in modo da collegare RB6 edRB7 verso le linee SDA ed SCL del connettore diprogrammazione. Invece, quando si utilizza nor-malmente la scheda, il deviatore collega RB6 edRB7 al dip switch.A proposito della programmazione in-circuit, oltrealle due linee SDA ed SCL e alla linea di massa(GND), l'unica altra linea necessaria è quella rela-tiva al piedino di reset (MCLR), in quanto per farentrare in programmazione il micro è necessarioportare questo piedino ad una tensione positiva ele-vata (tipicamente 13.5 V). Il diodo D2 è necessario per evitare che questa ten-sione vada a danneggiare lo stabilizzatore U3.Tornando alle porte del PIC, la PortC viene utiliz-zata per visualizzare dei dati, e quindi tutte le lineedi questa porta vengono utilizzate per accendere ospegnere dei LED (LD1÷LD8).Anche qui vi è una particolarità da sottolineare, inquesto caso relativa a RC2; questa infatti viene uti-lizzata anche per ottenere un'uscita PWM (modula-zione a larghezza di impulso). Questa stessa uscitaviene utilizzata, attraverso un filtro, per ottenereun'uscita analogica. Fornire un segnale PWM, loricordiamo, significa fornire un’onda quadra di fre-quenza costante, ma il cui duty cycle, cioè il rap-porto fra la durata del livello logico alto e del livel-lo logico basso, varia fra lo 0% ed il 100%. Se si fapassare questo segnale attraverso un filtro passabasso, come è quello realizzato dalla resistenzaR11 e dal condensatore C12, si ottiene una tensio-ne sufficientemente livellata il cui valore è propor-zionale alla percentuale del duty cycle. Per evitareche questa tensione subisca delle variazioni a causa

del carico applicato, abbiamo interposto un buffernon invertente (cioè un amplificatore a guadagnounitario in cui la polarità del segnale di uscita è lastessa di quello di ingresso) realizzato dall'opera-zionale U4b.Con la tecnica PWM vengono normalmente con-trollati dei carichi, come la velocità dei motori incorrente continua o la luminosità delle lampade,variando semplicemente il duty cycle del segnale.Più è basso il duty cycle, minore sarà la velocità dirotazione del motore o la luminosità della lampada.Poiché ovviamente non si può utilizzare diretta-mente il piedino del micro per alimentare questicarichi, tipicamente si può inserire un transistor(meglio se Darlington) o un MOS di potenza chepossano fornire la corrente richiesta.La scelta di utilizzare proprio la linea RC2 delmicro è stata imposta dall'hardware del micro stes-so. Infatti fra le risorse che questo micro mette adisposizione, vi è proprio un modulo (che è essen-zialmente costituito da un contatore) che permettedi ottenere appunto su RC2 dei segnali PWM il cuiduty cycle è modificabile a piacere semplicementesettando correttamente il contenuto di alcuni regi-stri di uso speciale.Abbiamo previsto infine nella demoboard dueingressi analogici, che fanno capo ai piedini RA0 eRA1. Il micro 16F876 integra infatti al propriointerno un preciso convertitore A/D; questo conver-titore dispone anche di un multiplexer, per cui piùlinee della PortA possono essere utilizzate comeingressi analogici. Nel nostro caso, abbiamo utiliz-zato solo due di queste linee. La prima, RA0, è col-legata ad un trimmer, che permette di variare la ten-sione ai suoi capi da 0V fino a quasi 5 V. La secon-da linea, RA1, è invece collegata, attraverso unostadio di amplificazione e filtraggio realizzatoattorno all'operazione U4a, ad una sonda di tempe-ratura.Questa sonda, la ben nota LM35, fornisce in uscitauna tensione proporzionale alla propria temperatu-ra. In particolare fornisce 10 mV per ogni gradocentigrado misurato; pertanto utilizzando la sondaper un intervallo di temperature compreso fra 0°Ce 40°C, si ottiene in uscita una tensione compresafra 0V e 400 mV. Poiché questa tensione, applicatadirettamente all'ingresso del convertitore, nonavrebbe permesso di sfruttare tutta la dinamica delconvertitore (che lavora invece fra 0V e 5V) abbia-mo inserito uno stadio amplificatore. Essendo inconfigurazione non invertente, l'operazionale ha unguadagno dato dalla formula 1 + R7/(R6 + R5).

CO

RSO

SITE

PLAY

ER

Elettronica In - ottobre 2003 75

>

Page 12: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

Inserendo i valori delle resistenze da noi proposti,si ottiene un guadagno complessivo pari a 10, por-tando così il range da 0V a 4V. Il condensatore C8fa lavorare il circuito come filtro passa basso, perridurre eventuali rumori presenti.Per completare la descrizione dell'hardware, nonrimane che la sezione di alimentazione, realizzataattorno ad un normalissimo 7805 che alimenta

pressoché tutto il circuito, compreso il moduloSitePlayer.

L’ultima sezione dell’articolo riguarda, come sem-pre, le operazioni necessarie alla realizzazione pra-

CO

RSO

SITEPLAYER

76 ottobre 2003 - Elettronica In

>

P I A N O D I mm oo nn tt aa gg gg ii oomm oo nn tt aa gg gg ii oo

ELENCO COMPONENTI:C1, C2: 10nF 1KVC3, C4: 10nF 1KVC5: 100 µF 25V elettroliticoC6: 10 µF 63V elettroliticoC7: 100 nF multistratoC8: 100 pF multistratoC9: 100nF multistratoC10: 22 pF ceramicoC11: 22 pF ceramicoC12: 1 µF 100V elettrolitico

R4: trimmer 1Kohm

D1: 1N4007D2: 1N4007

LD1÷LD4: led rettangolare verdeLD5÷LD8: led rettangolare gialloLD9: led 5mm verdeLD10: led 5mm giallo

U1: modulo SitePlayer SP1U2: PIC16F876AU3: 7805U4: LM324

SENS: sensore temperatura LM35

Q1: quarzo 4MHz

DS1: dipswitch 8 poli

DEV1: deviatore 12 poli da C.S. 90°

Varie:-morsettiera 2 poli (2 pz.);-connettore RJ45;-zoccolo 7+7 pin;-zoccolo 14+14 pin;-strip 2 poli (2 pz.);-strip 3 poli maschio (2 pz.);-strip 6 poli maschio (2 pz.);-strip 8 poli maschio (2 pz.);-strip 9 poli maschio (4 pz.);-plug alimentazione;-vite testa svasata 3 MA lungh. 10mm;-dado 3 MA;-circuito stampato cod. S0497.

R1: 1KohmR2: 4,7KohmR3: 220ohmR5: 330ohmR6: 3,3KohmR7: 33KohmR8: 100KohmR9,R10: 1KohmR11: 10KohmR12÷R19: 470ohm

Realizzazione della Demoboard

Page 13: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

tica della demoboard. La prima operazione consistenel costruire la basetta che costituisce il circuito.Partite da una fotocopia delle tracce rame pubbli-cate in queste pagine e realizzatela mediante la tec-nica della fotoincisione o il PnP.Successivamente iniziate l’operazione di saldaturadei diversi componenti elettronici; tutta la procedu-ra non dovrebbe presentare particolari problemi.Per ogni dubbio (soprattutto per il verso di mon-

taggio degli elementi che presentano polarità)dovrebbe essere sufficiente riferirsi alle immagini eagli schemi pubblicati nel piano di montaggio.Terminata la costruzione posizionate il moduloSitePlayer SP1 nei rispettivi connettori e, comeabbiamo appena visto, collegate la demoboard alprogrammatore per microcontrollori FT386 e al PC(tramite hub o switch, come da noi consigliatoall’interno dell’articolo).

CO

RSO

SITE

PLAY

ER

T R A C C E l a t o r a m el a t o r a m e

Elettronica In - ottobre 2003 77

Per iil

Il modulo SitePlayer presentato all�interno del Corso è disponibile giàmontato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modu-lo implementa un Web Server, un controllore Ethernet 10baseT, unamemoria Flash in cui inserire le pagine Web e un dispositivo di interfac-ciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l�alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331/576139 ~ Fax: 0331/466686 ~ http://www.futuranet.it

Page 14: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

PAGINA BIANCA

Page 15: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

3

CO

RSO

SITE

PLAY

ER

ome avevamo già brevemente anticipato nellaprima puntata del Corso, la metodologia che

porta alla realizzazione di una completa applicazio-ne basata sul modulo SitePlayer si può ricondurre adue fasi principali: la creazione delle pagine web ela creazione di un file di definizione da “scaricare”,insieme con le pagine web, nel modulo. In più, se ilmodulo risulta collegato ad un microcontrollore,occorre ovviamente scrivere il programma chegestisca la comunicazione fra il micro stesso e ilmodulo. Una volta create le pagine web ed il file didefinizione, attraverso un programma particolaredenominato SitePlayer Linker otterremo il fileunico di programmazione del modulo. Sempre dalSitePlayer Linker potremo a questo punto effettua-re il download all'interno del modulo utilizzando laconnessione Ethernet. Le pagine web vengono crea-te utilizzando il linguaggio html. Vedremo il conte-nuto di alcune pagine html analizzando i vari pro-grammi demo che abbiamo realizzato, cercando di

rendere comprensibili le poche istruzioni che abbia-mo utilizzato anche a chi è a digiuno di conoscenzedi questo linguaggio. Adesso, andiamo invece adanalizzare più in dettaglio come si realizza il file didefinizione.

Un file di definizione si compone essenzialmente ditre sezioni: la sezione di definizione, la sezioneoggetti e la sezione di esportazione. La primasezione definisce una serie di parametri che il linkerutilizza per produrre il file risultato binario, oltre adalcuni parametri che definiscono il modo di funzio-namento del modulo stesso.La sezione oggetti definisce invece gli oggetti,ovvero le variabili che il modulo utilizza per comu-nicare con il mondo esterno, nel nostro caso con ilmicrocontrollore PIC.La terza e ultima sezione, infine, definisce quali file>

Corso di programmazione e utilizzodel modulo SitePlayerTM SP1.

L’integrato realizza un Web Server,permette cioè di interfacciare e

comandare un circuito elettronicoattraverso una normale pagina Internet.

Grazie a questo Corso impareremoa programmare il modulo

realizzando applicazioni che utilizzandopagine Internet consentono di

controllare circuiti elettronici remoti.TTerza puntaerza puntatata

Elettronica In - novembre 2003 55

a cura dell’Ing. Roberto Nogarotto

Il file di definizione

Page 16: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

verranno generati durante il processo di “linking”.A questo punto passiamo a vedere, nel dettaglio,queste tre sezioni.

Tutte le definizioni devono cominciare con il sim-bolo del dollaro ($); per inserire dei commenti èsufficiente utilizzare il simbolo punto e virgola (;).Vediamo ora le più importanti definizioni disponi-bili. Nell’analisi utilizzeremo la seguente sintassi:fra parentesi quadre riportiamo gli argomenti diuna certa definizione e di seguito i valori di defaultdel modulo.

$DHCPON [on/off] default: onCon questa istruzione si definisce se il modulo deveavere un indirizzo IP fisso, nel qual caso questoparametro va settato a off, oppure se l'indirizzo IP èdel tipo dinamico e viene ottenuto da un server uti-lizzando il protocollo DHCP (Dynamic HostConfiguration Protocol).Nel caso in cui questo parametro sia impostato a oned il modulo non riesca ad ottenere un indirizzo IPda un server, utilizzerà l'indirizzo IP definito dalladirettiva $InitialIP.

$Devicename [nome]Con questa direttiva è possibile associare ad ognimodulo un nome che comunque non deve esserepiù lungo di 64 caratteri.

$DownloadPassword [password]Con questa funzione è possibile specificare unapassword, la cui lunghezza può essere al massimodi 16 caratteri. Questa password viene richiestaogni qualvolta si cerchi di scaricare un nuovo sitoweb nel modulo.Oltretutto il modulo SitePlayer SP1, prima di per-mettere il download, verifica che il computer cheha richiesto questa operazione si trovi all’internodella stessa rete locale.

$Include [filename]Se si vuole inserire un file (ad esempio una libreriadi oggetti), con questo comando si specifica esatta-mente il percorso ed il nome del file da includere.

$InitialIP [xxx.xxx.xxx.xxx]Con questo comando si specifica l'indirizzo IP ini-ziale del modulo nel formato dot decimal (nel casofosse disabilitata la funzionalità DHCP) oppure

l'indirizzo IP di default in caso di mancata assegna-zione dal server (nel caso sia abilitata la modalitàDHCP).

$Parse [estensione]Questa direttiva serve per definire in quali tipi difile, oltre a quelli html, dovranno essere ricercati glioggetti.

$PostIRQ [on/off] default: offImpostando a on questa definizione, si abilita ilPIN numero 11 del modulo a generare un impulsodi 5 microsecondi ogni volta che vengono ricevutidei dati attraverso ethernet. È importante notare cheviene generato questo impulso solo se i dati iningresso modificano i dati già presenti in memoria.

$Sitefile [filename]Quando il programma SiteLinker elabora una direc-tory per creare una pagina web scaricabile nelSiteplayer, viene creato un file binario con esten-sione .SBD. Con questo comando si indica il nomeda attribuire a questo file.

$SitePassword [password]Utilizzato per proteggere tutti i file che risiedono inuna determinata directory.

$Sitepath [path]Specifica al programma SiteLinker dove risiedono ifile che costituiscono l'applicazione web server.L'argomento di questa funzione è il percorso com-pleto dei file. Ad esempio la seguente definizione:

$Sitepath "C:\Program Files\SitePlayer\SP_Root"

specifica che i file che costituiscono l’applicazioneweb server sono contenuti nella directoryC:\ProgramFiles\SitePlayer\SP_Root. Pertantotutti i file presenti in questa directory vengono ela-borati e diventano la root del sito del SitePlayer.

Gli oggetti sono delle variabili attraverso le quali ilSitePlayer comunica con il mondo esterno. Nellamaggioranza dei casi, come del resto nella nostrademoboard, il Siteplayer comunica con un micro-controllore. Sarà proprio attraverso la lettura e l’e-ventuale modifica di questi oggetti che il SitePlayerpotrà comunicare con il micro. D'altro canto, que-sti oggetti del Siteplayer rappresentano anche degli

CO

RSO

SITEPLAYER

56 novembre 2003 - Elettronica In

«Sezione di definizione»

«Sezione oggetti»

Page 17: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

oggetti presenti nelle pagine web. Per esempio sup-poniamo di voler rendere disponibile su una paginaweb la temperatura di una stanza. Per prima cosadovremo definire nel SitePlayer e nella pagina webun oggetto caratterizzato dallo stesso nome. Ilmicro, dopo aver letto da una sonda il valore dellatemperatura, attraverso la seriale andrà a modifica-re il valore dell'oggetto ed il site player, ogni voltache gli verrà richiesto l'invio della pagina web daun browser, la invierà aggiornando l'oggetto con lostesso nome presente nella pagina stessa.Gli oggetti possono avere un nome lungo al massi-mo 32 caratteri comprendenti lettere e/o numeri;però il primo carattere deve essere necessariamen-te una lettera.Vediamo un esempio di definizione di un oggetto:

Temperatura db 25

Questa definizione crea un oggetto di nomeTemperatura; questo oggetto è del tipo byte (db) ilcui valore di default è 25.I tipi di oggetti che possono essere definiti sono bit(composti da un singolo bit; si utilizza lo specifica-tore DBIT), byte o stringhe (composti da 8 bit; spe-cificando DB), word (16 bit; utilizzando DW) einfine double (32 bit; utilizzando DD).L’allocazione degli oggetti in memoria avviene uti-lizzando la direttiva ORG, del tutto simile, comefunzionalità, alla omonima direttiva dei compilato-ri assembler.All’interno del modulo SitePlayer, gli oggetti fon-damentalmente possono essere allocati all’internodella memoria contenuta tra l’indirizzo 0000h e02FFh, anche se alcune di queste locazioni (in par-ticolare quelle comprese tra 02D0h e 02DFh) sonoriservate alla gestione del protocollo UDP.Comunque vedremo più avanti nel Corso come i

vari oggetti vanno specificati nelle pagine web ecome il micro accede ad essi attraverso la portaseriale.Oltre agli oggetti che abbiamo appena visto e cheutilizzeremo anche nei programmi di esempio pre-visti per la nostra demoboard, esistono tutta unaserie di altri oggetti che però non andremo ad ana-lizzare nel dettaglio. Questi sono il Serial PortOutput Object, utilizzato per inviare una stringadirettamente attraverso la seriale del SitePlayer, ilSerial Peripheral Interface (SPI) Object, utilizzatoper sfruttare la SPI del SitePlayer (la SPI è un utilesistema di interfaccia seriale per comunicare condei dispositivi, come memorie, convertitori, con-trollori di motori, ecc. che utilizzano questo canaledi comunicazione).Sono infine presenti una serie di oggetti che sovrin-tendono l'invio di dati con il protocollo UDP.

In questa sezione si definisce quali file (ed inquale posizione) verranno creati durante l'elabora-zione del SiteLinker. Questi file possono essereutili per essere inseriti in programmi scritti in C, inVisual Basic, in assembler o in HTML. Se questifile non sono necessari, si può omettere questasezione.

Abbiamo visto come si definiscono gli oggetti ecome questi siano il canale di comunicazione con ilmicrocontrollore. Vediamo adesso come questioggetti vengono definiti all'interno di una paginaWeb.Per inserire un oggetto in una pagina html è suffi-

CO

RSO

SITE

PLAY

ER

Elettronica In - novembre 2003 57

>

«Sezione export»

Inserire gli oggettinelle pagine Web

Le due immagini mostrano ciò che visualizzerebbe un Browser se la pagina fosse residente su unnormale server (a sinistra) oppure nel SitePlayer (a destra): si nota che SitePlayer provvede

a sostituire il testo ^Temperatura con il relativo valore.

Page 18: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

esempio di 2; o ancora inviare separatamente le sin-gole cifre che compongono l'oggetto stesso. Leoperazioni che possono essere eseguite sugli ogget-ti prima di essere inviati sono riassunte nella tabel-la presente in questa pagina.

Abbiamo visto come creare degli oggetti ed inse-rirli nelle pagine web e nei file di definizione. Aquesto punto ci rimane da analizzare come elabora-re i file delle pagine web (con le eventuali immagi-ni) ed il file di definizione per ottenere un unico fileda scaricare nel modulo SitePlayer.Il programma che ci permette di fare tutto ciò è for-nito direttamente dalla NetMedia e prende il nomedi SiteLinker.Una volta avviato, questo programma si presentacon una finestra principale da cui è possibile richie-dere l’esecuzione di alcuni diversi comandi.La prima operazione da effettuare è quella di apri-re un file di definizione (che avrà estensione .SPD).Per aprire un file è necessario richiamare il coman-do Open contenuto nel menu File.Il programma è in grado di aprire due differenti tipidi file: quelli con estensione .spd oppure quelli conestensione .spb. Questi ultimi (*.spb) sono i file chesono già stati compilati e sono quindi pronti peressere scaricati all’interno del modulo.

CO

RSO

SITEPLAYER

58 novembre 2003 - Elettronica In

ciente inserire il nome dell'oggetto (che, lo ricor-diamo, deve coincidere esattamente con il nomedichiarato nel file di definizione), preceduto dalsimbolo “^”. Vediamo con un semplice esempio inlinguaggio html come si inserisce un oggetto:

<html><body>La temperatura è ^Temperatura</body></html>

Visualizzando con un browser questo semplice file,comparirà ovviamente la scritta “La temperatura è^Temperatura”. Però, quando questo programmaviene caricato sul Siteplayer e viene poi richiestoda un browser, al posto di ^Temperatura ilSiteplayer invia il valore numerico assunto in quel-l’istante dall'oggetto Temperatura.

Sugli oggetti è possibile eseguire delle operazionimatematiche, logiche o di gestione di stringhe. Insostanza, utilizzando degli operatori matematici, èpossibile fare in modo che al browser venga invia-to non il valore numerico dell'oggetto ma il valoremodificato da una certa operazione matematica. Adesempio si potrebbe voler inviare non il valore del-l'oggetto temperatura, ma lo stesso aumentato ad

«Modificatori»

^oggetto:n

^oggetto+n^oggetto-n^oggetto*n^oggetto/n^oggetto&n^oggetto|n^oggetto~n^oggetto#n

^oggetto$n^oggetto�n

Visualizza la n-esima cifra di oggetto, partendo da destra.Per esempio, se oggetto vale 35, ^oggetto:1 visualizza soltanto la cifra 5.Somma n a oggetto e visualizza il totale.Sottrae n a oggetto e visualizza il totale.Moltiplica oggetto per n e visualizza il totale.Divide oggetto per n e visualizza il totale.Esegue l�AND logico tra n e oggetto e visualizza il totale.Esegue l�OR logico tra n e oggetto e visualizza il totale.Esegue lo XOR logico tra n e oggetto e visualizza il totale.Esegue l�AND logico tra n e oggetto e visualizza �CHECKED� se il risultatoè diverso da zero oppure non visualizza nulla se il risultato è 0.Se oggetto= n visualizza �CHECKED� altrimenti non visualizza nulla.Restituisce l'n-esimo bit di oggetto contando da destra (0 è il primo bit).

Modificatori Modificatori applicabiliapplicabiliagliagli OggettiOggetti

Operazione Significato del modificatore

L�ambiente di sviluppo delmodulo SitePlayer: il SiteLinker

Page 19: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

Una volta aperto un file, nel menu Download sirendono disponibili i vari comandi che permettonodi compilare il programma (Make download file),effettuare la programmazione del modulo(Download Siteplayer) oppure compilare e pro-grammare il modulo (Make and download).Prima di effettuare la programmazione è necessariospecificare l'indirizzo IP a cui risponde il moduloche deve essere programmato. Questo è possibileattraverso il comando IP address for downloadcontenuto all’interno del menu Configure.Il comando DownloadPassword presente nellostesso menu definisce invece la password che ilSiteLinker invia al modulo per poter effettuare ildownload. Ovviamente questa password devecorrispondere alla password già presente nel

modulo nel momento in cui lo si vuole program-mare.Una volta avviata la creazione del file da scaricare,che avrà estensione .SPD, all'interno della finestradel SiteLinker compaiono una serie di informazio-ni. Le operazioni che il linker esegue sono innanzi-tutto la ricerca di tutti gli oggetti definiti nel file didefinizione. Nel caso non venga trovata la corri-spondenza di qualche oggetto, questa anomaliaviene segnalata.Se invece tutto il processo avviene correttamente,vengono riportati il numero degli oggetti presenti ela quantità di memoria flash occupata. Inoltre, seera stato avviato il comando Make and downloadfile, viene immediatamente avviata la programma-zione del modulo.

CO

RSO

SITE

PLAY

ER

Elettronica In - novembre 2003 59

Per iil

Il modulo SitePlayer presentato all�interno del Corso è disponibile giàmontato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modu-lo implementa un Web Server, un controllore Ethernet 10baseT, unamemoria Flash in cui inserire le pagine Web e un dispositivo di interfac-ciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l�alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331/576139 ~ Fax: 0331/466686 ~ http://www.futuranet.it

L�Ambiente SiteLinkerL�Ambiente SiteLinker

Page 20: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

PAGINA BIANCA

Page 21: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

4

CO

RSO

SITE

PLAY

ER

opo aver visto nelle puntate precedenti i prin-cipi fondamentali di come si realizza una

applicazione con i moduli Siteplayer, la struttura diun programma e l’ambiente di sviluppo(SiteLinker) che consente di trasferire immagini epagine web nella memoria del modulo SitePlayer,iniziamo ora ad analizzare i programmi che abbia-mo realizzato per la demoboard, in modo da acqui-sire la necessaria dimestichezza con le tecniche diprogrammazione.Tutti i programmi delle demoboard dovranno avereuna propria directory. Nel nostro caso queste direc-tory sono tutte sottodirectory ricavate dal percorsoC:\Programmi\SitePlayer\demoboard. All’interno di questa directory, per ogni program-ma, abbiamo ricavato un’ulteriore sottodirectory, adesempio per il demo1 la sottodirectory èC:\Programmi\SitePlayer\demoboard\demo1. In questa directory verranno posizionati sia il pro-gramma in basic per la gestione del PIC (estensione.BAS per il file sorgente ed estensione .HEX per il

file compilato) che il file di definizione con esten-sione .SPD. Nella stessa directory viene poi ricavata una sotto-directory, che chiameremo root (sempre ad esempioper il demo1 C:\Programmi\SitePlayer\demo-board\demo1\root) nella quale si troveranno tutti ifile relativi alle pagine html. Vi sarà quindi sicura-mente almeno un file index.htm, le eventuali altrepagine html e tutte le immagini, tipicamente in for-mato jpeg che serviranno. Ovviamente i programmipotranno essere posizionati in qualunque directory,avendo però l’accortezza di definire esattamente ipercorsi nel file di definizione, come spiegato detta-gliatamente più avanti.Per ogni programma dovremo quindi crearealmeno tre file.I file html possono essere riportati esattamentecome li abbiamo realizzati oppure modificati a pia-cere, nel caso si conosca il linguaggio html. Nellepuntate del Corso, anziché spiegare i dettagli dellepagine da noi realizzate, cercheremo di evidenziare>

Corso di programmazione e utilizzodel modulo SitePlayerTM SP1.

L’integrato realizza un Web Server,permette cioè di interfacciare e

comandare un circuito elettronicoattraverso una normale pagina Internet.

Grazie a questo Corso impareremoa programmare il modulo

realizzando applicazioni che utilizzandopagine Internet consentono di

controllare circuiti elettronici remoti.QuarQuarta puntata puntatata

Elettronica In - dicembre 2003 / gennaio 2004 85

a cura dell’Ing. Roberto Nogarotto

Page 22: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITEPLAYER

86 dicembre 2003 / gennaio 2004 - Elettronica In

;DEMO1.SPD

;DEFINITIONS$Devicename �Futura elettronica Demo1�$DHCP off$DownloadPassword ��$SitePassword ��$InitialIP �192.168.0.250�$PostIRQ on$Sitefile�C:\Programmi\SitePlayer\demoboard\demo1\demo1.spb�$Sitepath �C:\Programmi\SitePlayer\demoboard\demo1\root�

;OBJECTSorg 05hDipswitch db 0

Esempio di gestione di ingressi digitali: viene letto lo stato del dip-switch DS1 e vienevisualizzato 1 o 0 in funzione dello stato del relativo dip.

DEMO 1

i punti chiave che permettono di realizzare pagineweb con inseriti gli oggetti derivanti dal moduloSitePlayer. I file di definizione possono anch’essiessere modificati, ad esempio per impostare unindirizzo IP diverso da quello da noi proposto e chepotrebbe non essere adatto per una particolare rete. I programmi per la gestione dei PIC sono stati scrit-ti in PicBasic. Questi programmi potranno esserescritti anche in assembler piuttosto che in C, edanche in questo caso abbiamo cercato di evidenzia-re le funzionalità che deve svolgere un programmapiuttosto che fare un elenco delle istruzioni utiliz-zate.

Con questa demo vogliamo spiegare come sia pos-sibile passare dei parametri dal micro al moduloSitePlayer e da questo ad una pagina web, in modotale che, ad ogni richiesta di invio da parte di unbrowser, la pagina html inviata in risposta dalmodulo contenga i dati aggiornati. In particolareviene visualizzato nella pagina web lo stato degli 8dip switch presenti nella demoboard.I file di cui abbiamo bisogno per creare questaapplicazione sono innanzitutto il file index.htm checontiene la pagina html della nostra applicazione,le immagini necessarie per la corretta visualizza-zione della pagina, il file demo1.bas, scritto inPICbasic, da utilizzare per la programmazione delmicro ed il file demo1.spd di definizione da utiliz-zare per programmare il modulo SitePlayer.Andiamo adesso ad analizzare in dettaglio questifile.

Questo è il file della pagina html, ed è riportato nelbox Demo1: listato html. Per poter vedere comerisulta la pagina web è sufficiente aprire questo filecon un browser internet, come ad explorer. Perpoter visualizzare invece il codice html di questapagina è sufficiente aprire questo file con un editordi testo, come ad esempio notepad o blocco note.

DEMO 1: Definizioni

Programma Demo1

File index.htm

Page 23: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 87

<html><head><title>Futurel Demo1</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�></head><body bgcolor=�#FFFFFF� background=�sfondo1.gif�><table width=�300� border=�0� align=�center� bordercolor=�#FFFFFF� bgcolor=�#FFFFFF�>

<tr> <td><div align=�center�><img src=�futurel1.jpg� width=�100� height=�37�></div></td>

</tr><tr> <td><div align=�center�><font color=�#999999� size=�2� face=�Arial, Helvetica, sans-serif�>WEB SERVER COPROCESSOR <br>

DEVELOPER BOARD FT497</font></div></td></tr><tr>

<td><hr noshade></td></tr><tr>

<td><div align=�left�><font size=�2� face=�Arial, Helvetica, sans-serif�>File: <strong>demo1.spd</strong></font></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td><p><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip1 = ^Dipswitch�7</font></p>

</td></tr><tr>

<td><p><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip2 = ^Dipswitch�6</font></p>

</td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip3 = ^Dipswitch�5</font></td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip4 = ^Dipswitch�4</font></td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip5 = ^Dipswitch�3</font></td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip6 = ^Dipswitch�2</font></td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip7 = ^Dipswitch�1</font></td></tr><tr>

<td><font size=�2� face=�Arial, Helvetica, sans-serif�>Dip8 = ^Dipswitch�0</font></td></tr><tr>

<td>&nbsp;</td></tr><tr>

<td><hr noshade></td></tr><tr> <td> <div align=�center�> <font color=�#999999� size=�1� face=�Arial, Helvetica, sans-serif�>&copy;

2003 Futura Elettronica Company. All rights reserved.</font><br></div></td>

</tr></table></body></html>

Demo 1: Listato HTML

Page 24: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

88 dicembre 2003 / gennaio 2004 - Elettronica In

Demo 1: Listato Basic;File DEMO1.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include �modedefs.bas�

�LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

�DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

�Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5

�Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

�Definizione I/O

ADCON1=%0000010 �RA0,RA1 e RA3 analogiciADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

�Dip

INPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

�Portb coi pull up interni

OPTION_REG.7 = 0 INPUT Porta.0INPUT Porta.1INPUT INTSPPause 100Gosub TESTPause 300

START:�Inizializza

Gosub SEND20Pause 200

START1: �Leggi portb

DATOOUT = PortbINDIRIZZO = 5Gosub WRITEDATOPause 1000Goto START1

�******************************************�Routine di invio di 20 byte 0 per inizializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

�Routine di scrittura di un byte�Invia : Comando di write (128), �INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

�Routine di verifica dei ledTEST:

Gosub SPEGNILEDLed1 = 1Pause 200Led1 = 0Led2 = 1Pause 200Led2 = 0Led3 = 1Pause 200Led3 = 0Led4 = 1Pause 200Led4 = 0Led5 = 1Pause 200Led5 = 0Led6 = 1Pause 200Led6 = 0Led7 = 1Pause 200Led7 = 0Led8 = 1Pause 200Gosub SPEGNILEDReturn

�Routine di spegnimento dei ledSPEGNILED:

LED1 = 0LED2 = 0LED3 = 0LED4 = 0LED5 = 0LED6 = 0LED7 = 0LED8 = 0Return

Page 25: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 89

A prima vista questo file può sembrare abbastanzacomplesso. Poiché non vogliamo fare un corsosull’HTML, vediamo solo a grandi linee di com-prendere il significato della struttura del file,vedendo in dettaglio le parti che riguardano invecei parametri inseriti dal SitePlayer. Ricordiamo chein HTML, si utilizzano dei tag per definire un par-ticolare oggetto. I tag sono scritti sempre fra i segni di maggiore eminore e sono chiusi dallo stesso preceduto da sim-bolo /. Ad esempio, tutto il codice html deve essere rac-chiuso fra il tag <html> (che è posizionato proprioall’inizio del file) e il tag </html>, posizionato allafine del file. Il tag <TITLE> definisce, come è intuitivo, il tito-lo della pagina web, il tag <P> racchiude un para-grafo, il tag <CENTRE> visualizza quanto conte-nuto al centro della pagina e così via. I tag <TR> e <TD> definiscono invece rispettiva-mente una riga e una colonna di una tabella. Guardando la pagina html come viene visualizzatada un browser e scorrendo il listato dovrebbe esse-re sufficientemente intuitivo capire come i vari tagdanno luogo alle varie parti della pagina stessa.La parte che ci interessa particolarmente è laseguente :

<p><font size=”2”face=”Arial, Helvetica, sans-serif”>Dip1 = ^Dipswitch’7</font></p>

Questa riga, racchiusa dai tag <P> e </P> , vienevisualizzata, come si può facilmente intuire, con lamisura dei caratteri identificata da font size e coltipo di carattere identificato da face. La parte che veramente ci interessa è quindi laseguente :

Dip1 = ^Dipswitch’7

Dip1 è solo del testo, che pertanto così verrà visua-lizzato, mentre ^Dipswitch è un oggetto delSitePlayer. Abbiamo già visto la scorsa puntata come glioggetti sono il mezzo che utilizza il SitePlayer percomunicare con il mondo esterno, e sono fonda-mentalmente delle celle di memoria il cui contenu-to può da un lato essere modificato dal micro col-

legato alla seriale, e dall’altro rappresentano deivalori che vengono inseriti nelle pagine web quan-do queste vengono inviate ad un browser. Se si visualizza questa pagina web aprendo il filesul computer con un browser, si ottiene semplice-mente la scritta :

Dip1 = ^Dipswitch’7

Quando però il browser interroga il SitePlayer,questi sostituisce a ^Dipswitch il valore del corri-spondente oggetto, in pratica il valore della cella dimemoria RAM che avremo definito come oggettoDipswitch.Poiché Dipswitch, come vedremo tra breve, è unbyte che ricalca esattamente lo stato dei dipswitchsulla demoboard, per visualizzare lo stato di ognisingolo dipswitch è necessario isolare i singoli bitdi questo byte. Per fare questo abbiamo utilizzato un modificatore.Infatti il modificatore:

^oggetto’n

restituisce il valore dell’ennesimo bit di oggetto. Nel nostro caso, quindi, il SitePlayer sostituirà^Dipswitch’7 con il valore del settimo bit dell’og-getto Dipswitch. Questo bit corrisponde esattamente allo stato logi-co del corrispondente dipswitch sulla demoboard.

Come abbiamo visto nelle puntate precedenti, ènecessario creare un file con estensione .SPD che,una volta compilato dal SiteLinker, andrà scaricatonel modulo SitePlayer. Questo file, riportato nel box Demo1: definizioni,contiene una serie di definizioni e gli oggetti. Per quanto riguarda le definizioni abbiamo:$Devicename “Futura elettronica” che assegna unnome al dispositivo; $DHCP off che disabilita la modalità di assegna-zione dell’IP da parte del server, (ovvero ilSitePlayer ha un indirizzo IP statico);$DownloadPassword “” e $SitePassword “” chein pratica non assegnano alcuna password;;$InitialIP “192.168.0.250” che assegna l’indiriz-zo IP al modulo SitePlayer; $PostIRQ on che permette di attivare sul pin 11 delSitePlayer la segnalazione di arrivo dei dati;$Sitefile “C:\Programmi\SitePlayer\demoboard\

File demo1.spd

Page 26: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

90 dicembre 2003 / gennaio 2004 - Elettronica In

>

Esempio di lettura di un ingresso analogico:viene letto il valore del trimmer R4 e visualizzato in formato numerico.

DEMO 2

demo1\demo1.spb” che definisce esattamente lalocalizzazione ed il nome del file spb che verràcreato (il file spb è quello che verrà scaricato nelmodulo SitePlayer);$Sitepath “C:\Programmi\SitePlayer\demoboard\demo1\root” che definisce il percorso dove si tro-vano le pagine web e le immagini relative.Nel personalizzare questa parte di definizionioccorre prestare attenzione alle due definizioni$Sitefile e $Sitepath, nelle quali occorre chiara-mente indicare i propri percorsi dove si trovano ifile. Altro parametro particolarmente importante è$InizialIP in quanto assegna l’indirizzo IP deldispositivo stesso.Per quanto riguarda gli oggetti, in questa prima

demo è presente solo un oggetto che abbiamo deci-so di identificare con la locazione di indirizzo 5(questo è lo scopo della direttiva org 05h), che saràun byte con valore di default pari a 0 (db 0).

Dopo aver analizzato in dettaglio il file della pagi-na web e del Siteplayer, non rimane che analizzaree comprendere il programma per il microcontrollo-re, scritto in basic, ed il cui listato si trova nel boxDemo1: Listato Basic.La prima parte del file, fino all’etichetta START, èpraticamente uguale per tutti i programmi cheabbiamo realizzato. Si tratta della definizione dellevariabili utilizzate dal programma, dalla definizio-ne delle varie linee di I/O e delle linee di comuni-cazione con il SitePlayer. Viene inizializzato anche il convertitore A/D, chein questa applicazione non viene utilizzato. Viene richiamata, prima dell’avvio del programmavero e proprio, una routine di test (TEST) per veri-ficare la funzionalità dei led.Il programma vero e proprio inizia dall’etichettaSTART.Viene richiamata la routine SEND20 che invia almodulo SitePlayer 20 byte tutti a 0. Questa procedura è necessaria per essere sicuri cheil modulo SitePlayer interpreti correttamente i suc-cessivi comandi ricevuti dalla seriale, ed in effettiimplementeremo questa routine in tutti i program-mi che abbiamo scritto. A proposito della comuni-

;DEMO2.SPD

;DEFINITIONS$Devicename �Futura elettronica Demo2�$DHCP off$DownloadPassword ��$SitePassword ��$InitialIP �192.168.0.250�$PostIRQ on$Sitefile C:\Programmi\SitePlayer\demoboard\demo2\demo2.spb�$Sitepath�C:\Programmi\SitePlayer\demoboard\demo2\root�

;OBJECTSorg 05hTrimmer db 0

DEMO 2: Definizioni

File demo1.bas

Page 27: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 91

>

<html><head><title>Futurel Demo2</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�><meta http-equiv=�refresh� content=�10�></head><body bgcolor=�#FFFFFF� background=�sfondo1.gif�><table width=�300� border=�0� align=�center� bordercolor=�#FFFFFF� bgcolor=�#FFFFFF�>

<tr> <td><div align=�center�><img src=�futurel1.jpg� width=�100� height=�37�></div></td>

</tr><tr> <td><div align=�center�><font color=�#999999� size=�2� face=�Arial, Helvetica, sans-serif�>WEB SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr> <td><hr noshade></td>

</tr><tr> <td><div align=�left�><font size=�2� face=�Arial, Helvetica, sans-serif�>File:

<strong>demo2.spd</strong></font></div></td></tr><tr> <td>&nbsp;</td>

</tr><tr> <td> <p><font size=�2� face=�Arial, Helvetica, sans-serif�>Trimmer = ^Trimmer</font></p></td></tr><tr> <td><hr noshade></td>

</tr><tr> <td> <div align=�center�> <font color=�#999999� size=�1� face=�Arial, Helvetica, sans-serif�>&copy; 2003 Futura Elettronica Company. All rights reserved.</font><br></div></td></tr>

</table></body></html>

Demo 2: Listato HTML

cazione seriale, ricordiamo che il moduloSitePlayer utilizza una comune comunicazioneseriale a 9600 baud.L’istruzione SEROUT del PicBasic ci semplifica dimolto la scrittura del programma. E’ sufficienteinfatti specificare in questa istruzione il piedino sucui inviare i dati, la velocità di trasmissione ed ildato da trasmettere, ed automaticamente abbiamogià realizzato la comunicazione seriale. Nel nostro caso l’istruzione:

Serout TX232,T9600,[0]

dice di inviare il byte 0 sul piedino TX232 a 9600baud.Una volta inizializzato il modulo, all’etichettaSTART1 inizia il programma principale, che altronon è che un loop che ad intervalli di 1 secondo vaa leggere lo stato dei dipswitch e richiama la

subroutine WRITEDATO. Questa subroutine invia tre byte al SitePlayer chesono : il comando di scrittura (128), l’indirizzodella cella di memoria che si vuole scrivere (chenella subroutine è rappresentata dalla variabileINDIRIZZO), nonché il dato da scrivere. Alla variabile INDIRIZZO era stato assegnato ilvalore 5 in quanto 5 è la locazione di memoria del-l’oggetto Dipswitch definito nel file di definizionedel SitePlayer. Il byte del dato da scrivere è costituito dalla varia-bile DATOOUT; a questa variabile è stato assegna-to il valore del Portb, ovvero lo stato dei dipswitch. Occorre fare a questo punto una precisazione sulcomando di scrittura. Questo è infatti ricavato dalla formula seguente:comando = 128 + numero di byte da inviare - 1. In pratica, poiché nel nostro caso viene inviato soloun byte, si ha comando = 128 + 1 -1, cioè 128.

Page 28: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

92 dicembre 2003 / gennaio 2004 - Elettronica In

Demo 2: Listato Basic

;File DEMO2.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include �modedefs.bas�

�LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

�DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

�Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5

�Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

�Definizione I/OADCON1=%00000100 ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

�DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

�Portb coi pull up interni

OPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1INPUT INTSP

START:�Inizializza

Gosub SEND20Pause 500

START1: �Leggi ingressi analogici

Gosub CONVERTIDATOOUT = TRIMMERINDIRIZZO = 5Gosub WRITEDATOPause 1000Goto START1

�***********************************�Routine di invio di 20 byte 0 per inizializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

�Routine di scrittura di un byte�Invia : Comando di write (128), INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

�Routine di conversione�Mette il risultato in TRIMMER e TEMPERATURACONVERTI:

ADCON0.3 = 0ADCON0.4 = 0ADCON0.5 = 0Pause 1ADCON0.2 = 1 �Fai partire la conversionePause 5TRIMMER = ADRESHPause 1 ADCON0.3 = 1ADCON0.4 = 0ADCON0.5 = 0Pause 1ADCON0.2 = 1 �Fai partire la conversionePause 5TEMPERATURA = ADRESHPause 1Return

Page 29: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 93

>

Con questo comando si possono inviare fino a 16byte, che verranno memorizzati a partire dall’indi-rizzo specificato.

Con questo programma viene visualizzata sullapagina web l’impostazione del trimmer presentesulla demoboard. Guardando il codice html riportato, si nota subito lapresenza di un oggetto nella riga:Trimmer = ^Trimmer.Questo oggetto si ritrova ovviamente nel file didefinizione demo2.spd, del tutto simile al file didefinizione relativo a demo1, salvo che per il nomedell’oggetto. Nella descrizione ci soffermiamo maggiormentesul programma previsto per il microcontrollorePIC. La parte di inizializzazione è simile a quella previ-sta per la demo1, così come simile è il loop princi-pale del programma, con la differenza che mentreprima si andava a leggere il portb, su cui erano col-legati i dip switch, adesso viene letto il canale AN0del convertitore A/D, a cui è appunto collegato iltrimmer. A sovrintendere le operazioni di conversione ana-logico-digitale è la routine CONVERTI. Questa routine, già prevista anche per leggere ilvalore di temperatura dalla sonda LM35 presentesulla scheda, effettua le seguenti operazioni.

Dapprima viene selezionato il canale AN0, su cui ècollegato il trimmer. Viene fatta partire la conver-sione e dopo 5 millisecondi viene letto il registroADRESH, dove è contenuto il risultato della con-versione. Questo valore viene quindi messo nella variabileTRIMMER.Viene poi selezionato il canale AN1, a cui è colle-gata la sonda di temperatura, di nuovo viene fattapartire la conversione e dopo 5 millisecondi vieneletto il risultato della conversione e assegnato allavariabile TEMPERATURA. Nel caso della demo1, solo il valore della variabile

Esempio di lettura di un ingresso analogico e visualizzazione grafica:viene letta la temperatura ambiente tramite il sensore SENS e visualizzata in formato grafico.

DEMO 3

;DEMO3.SPD

;DEFINITIONS$Devicename �Futura elettronica Demo3�$DHCP off$DownloadPassword ��$SitePassword ��$InitialIP �192.168.0.250�$PostIRQ on$Sitefile�C:\Programmi\SitePlayer\demoboard\demo3\demo3.spb�$Sitepath �C:\Programmi\SitePlayer\demoboard\demo3\root�

;OBJECTSorg 05hCifra3 db 0 Cifra2 db 0Cifra1 db 0

DEMO 3: Definizioni

Programma Demo2

Page 30: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

94 dicembre 2003 / gennaio 2004 - Elettronica In

<html><head><title>Futurel Demo3</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�><meta http-equiv=�refresh� content=�10�></head><body bgcolor=�#FFFFFF� background=�sfondo1.gif�><table width=�300� border=�0� align=�center� cellpadding=�0� cellspacing=�0� bordercolor=�#FFFFFF� bgcolor=�#FFFFFF�>

<tr> <td colspan=�3�><div align=�center�><img src=�futurel1.jpg� width=�100�

height=�37�></div></td></tr><tr>

<td colspan=�3�><div align=�center�><font color=�#999999� size=�2� face=�Arial, Helvetica,sans-serif�>WEB

SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td colspan=�3�><hr noshade></td></tr><tr>

<td colspan=�3�><div align=�left�><font size=�2� face=�Arial, Helvetica, sans-serif�>File: <strong>demo3.spd</strong></font></div></td>

</tr><tr>

<td colspan=�3�>&nbsp;</td></tr><tr bgcolor=�#333333�>

<td colspan=�3�>&nbsp;</td></tr><tr>

<td width=�98� bgcolor=�#333333�><div align=�center�><font color=�#00FF00� size=�3� face=�Arial, Helvetica,sans-serif�><strong>Temp

=</strong></font></div></td><td width=�129� bgcolor=�#333333�> <div align=�center�><img src=�/^Cifra3:1_BLK.jpg�>

<img src=�/^Cifra2:1_BLK.jpg�> <img src=�DP_BLK.jpg�> <img src=�/^Cifra1:1_BLK.jpg�></div></td>

<td width=�73� bgcolor=�#333333�><div align=�center�><font color=�#00FF00� size=�3� face=�Arial, Helvetica,sans-serif�><strong>&deg;C</strong></font></div></td>

</tr><tr bgcolor=�#333333�>

<td colspan=�3�>&nbsp;</td></tr><tr>

<td colspan=�3�>&nbsp;</td></tr><tr>

<td colspan=�3�><hr noshade></td></tr><tr>

<td colspan=�3�> <div align=�center�> <font color=�#999999� size=�1� face=�Arial, Helvetica, sans-serif�>&copy; 2003 Futura Elettronica Company. All rights reserved.</font><br>

</div></td></tr>

</table></body></html>

Demo 3: Listato HTML

Page 31: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 95

>

TRIMMER viene utilizzato per essere inviato, attra-verso la routine WRITEDATO, al moduloSitePlayer.

Con questa demo vogliamo visualizzare sulla pagi-na web la temperatura rilevata dalla sonda di tem-peratura LM35 presente sulla demoboard. Poiché volevamo una visualizzazione che fossegraficamente interessante, abbiamo realizzato lecifre da 0 a 9, oltre al punto decimale, con un pro-gramma di grafica e ne abbiamo ricavato 10 imma-gini jpeg, che abbiamo siglato 0_blk.jpg, 1_blk.jpg,2_blk.jpg e così via. Con questa demoboard vogliamo illustrarvi come èpossibile far visualizzare una certa immagine infunzione di un oggetto. Nel nostro caso il valore di temperatura viene pas-sato dal micro al SitePlayer in tre oggetti, corri-spondenti alle tre cifre che compongono il valore ditemperatura. Ad esempio, se la temperatura è di21,4 gradi, i tre oggetti, che si chiamano Cifra1,Cifra2 e Cifra3, varranno corrispondentemente 4,1e 2. Premesso ciò, vediamo come utilizzare questitre oggetti per ottenere la visualizzazione della cor-retta temperatura nella pagina html. Per far questodobbiamo scorrere il listato del file index.htm.La parte che realizza la visualizzazione vera e pro-pria è la seguente :

<td width=”129” bgcolor=”#333333”> <div align=”center”><img src=”/^Cifra3:1_BLK.jpg”> <img src=”/^Cifra2:1_BLK.jpg”> <img src=”DP_BLK.jpg”> <img src=”/^Cifra1:1_BLK.jpg”> </div></td>

Per renderla più leggibile eliminiamo i comandivari di formattazione e di allineamento dei caratte-ri. Quello che ci rimane è :

<img src=”/^Cifra3:1_BLK.jpg”> <img src=”/^Cifra2:1_BLK.jpg”> <img src=”DP_BLK.jpg”> <img src=”/^Cifra1:1_BLK.jpg”>

Il tag img src indica l’inserimento nella paginahtml di una immagine. Tipicamente dovrebbe tro-varsi una sintassi del tipo:img src=”immagine.jpg”.Nel nostro caso però l’immagine da inserire dipen-de dagli oggetti Cifra3, Cifra2 e Cifra1. Infatti conCifra3 :1 si indica di considerare la prima cifra del-l’oggetto Cifra3. Nell’esempio precedente in cui latemperatura valeva 21.4 gradi, Cifra3 :1 vale 2. Ilnumero 2 viene quindi sostituito a Cifra3 :1, for-mando così 2_BLK.jpg. In questo modo, si ha ilcomando: img src =”/2_BLK.jpg”. Detto in altri termini, viene inserita l’immagine

^oggetto:n

^oggetto+n^oggetto-n^oggetto*n^oggetto/n^oggetto&n^oggetto|n^oggetto~n^oggetto#n

^oggetto$n^oggetto�n

Visualizza la n-esima cifra di oggetto, partendo da destra.Per esempio, se oggetto vale 35, ^oggetto:1 visualizza soltanto la cifra 5.Somma n a oggetto e visualizza il totale.Sottrae n a oggetto e visualizza il totale.Moltiplica oggetto per n e visualizza il totale.Divide oggetto per n e visualizza il totale.Esegue l�AND logico tra n e oggetto e visualizza il totale.Esegue l�OR logico tra n e oggetto e visualizza il totale.Esegue lo XOR logico tra n e oggetto e visualizza il totale.Esegue l�AND logico tra n e oggetto e visualizza �CHECKED� se il risultatoè diverso da zero oppure non visualizza nulla se il risultato è 0.Se oggetto= n visualizza �CHECKED� altrimenti non visualizza nulla.Restituisce l'n-esimo bit di oggetto contando da destra (0 è il primo bit).

Modificatori Modificatori applicabiliapplicabiliagliagli OggettiOggetti

Operazione Significato del modificatore

Programma Demo3

Page 32: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

96 dicembre 2003 / gennaio 2004 - Elettronica In

Demo 3: Listato Basic

;File DEMO3.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byteCIFRA1 var byteCIFRA2 var byteCIFRA3 var byteDATOLONG var word

Include �modedefs.bas�

�LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

�DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

�Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5

�Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

�Definizione I/OADCON1=%00000100 ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

�DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

�Portb coi pull up interniOPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1INPUT INTSP

START:�Inizializza

Gosub SEND20Pause 500

START1: �Leggi ingressi analogici

Gosub CONVERTIDATOLONG = TEMPERATURA*2CIFRA3 = DATOLONG DIG 2CIFRA2 = DATOLONG DIG 1CIFRA1 = DATOLONG DIG 0INDIRIZZO = 5Gosub WRITETEMPPause 1000Goto START1

�**************************************�Routine di invio di 20 byte 0 per inizializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

�Routine di scrittura di tre byte�Invia : Comando di write (128), INDIRIZZO,�CIFRA1,CIFRA2, CIFRA3WRITETEMP:

Pause 10Serout TX232,T9600,[130]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[CIFRA3]Pause 5Serout TX232,T9600,[CIFRA2]Pause 5Serout TX232,T9600,[CIFRA1]Pause 20Return

�Routine di conversione�Mette il risultato in TRIMMER e TEMPERATURACONVERTI:

ADCON0.3 = 0ADCON0.4 = 0ADCON0.5 = 0Pause 1ADCON0.2 = 1 �Fai partire la conversionePause 5TRIMMER = ADRESHPause 1ADCON0.3 = 1ADCON0.4 = 0ADCON0.5 = 0Pause 1ADCON0.2 = 1 �Fai partire la conversionePause 5TEMPERATURA = ADRESHPause 1Return

Page 33: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - dicembre 2003 / gennaio 2004 97

Per iil

Il modulo SitePlayer presentato all�interno del Corso è disponibile giàmontato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modu-lo implementa un Web Server, un controllore Ethernet 10baseT, unamemoria Flash in cui inserire le pagine Web e un dispositivo di interfac-ciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l�alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331/576139 ~ Fax: 0331/466686 ~ http://www.futuranet.it

2_BLK.jpg, che è l’immagine della cifra 2. Con la stessa procedura vengono visualizzati inumeri 1 e 4, ricavati da Cifra2 e Cifra1. Prima di Cifra1 viene inserito il punto decimale,che questa volta è un’immagine definita ed è il fileDP_BLK. Occorre ricordare che tutti i file immagine devononecessariamente trovarsi nella stessa directory delfile index.htm. Solo così infatti vengono corretta-mente processati dal SiteLinker nel momento dellacreazione del file da scaricare nella memoria flashdel modulo. Bisogna avere l’accortezza di realizza-re immagini non particolarmente grandi, in quantola memoria del SitePlayer è comunque limitata.Dopo aver visto il file della pagina web, andiamoad analizzare il file di definizione. Anche questofile è molto simile ai precedenti, con l’unica diffe-renza che questa volta sono presenti tre oggetti dinome Cifra1, Cifra2 e Cifra3.

Questo è il file da inserire nel PIC. Come si puòvedere, è abbastanza simile al precedente, solorichiede qualche spiegazione sul come vengonoricavate le tre cifre da passare al modulo SitePlayer. Dobbiamo a questo punto partire dal funzionamen-to della sonda LM35. Questa sonda fornisce 10 mV per ogni grado centi-grado. Se ad esempio vi sono 21.4 °C, la sonda for-nirà esattamente:

21.4 * 10 mV = 214 mV. Poiché U4a guadagna esattamente 10 volte, in usci-ta da questo operazionale avremo:214mV * 10 = 2140 V = 2.14 V. Poiché il fondoscala del convertitore A/D è di 5volt (detto in altre parole, applicando 0 V ottengo ilnumero 0, mentre applicando 5 volt ottengo 255),alla tensione di 2.14 volt corrisponderà il numero(2.14 / 5) * 255, cioè 109. Moltiplicando nuovamente per 2 attraverso ilsoftware del micro questo numero, ottengo 218,che non è esattamente 214 che mi serviva ma che siavvicina molto, considerando anche la tolleranzadelle resistenze che determinano il guadagno del-l’operazionale.Una volta ottenuto questo numero, non occorre farealtro che scomporlo nelle sue tre cifre BCD einviarlo al SitePlayer.L’operazione di scomposizione nelle cifre BCDviene effettuata dall’istruzione Basic DIG. In pratica le istruzioni:CIFRA3 = DATALONG DIG 2,CIFRA2 = DATALONG DIG 1 CIFRA1 = DATALONG DIG 0 pongono nelle tre variabili CIFRA1, CIFRA2 eCIFRA3 le tre cifre BCD del valore di temperatu-ra. Per spedire questi tre dati utilizziamo la subrou-tine WRITETEMP che invia il comando di WRITEal modulo SitePlayer (questo comando vale adesso130 perché abbiamo tre dati da inviare) e di segui-to le tre cifre.

File demo3.bas

Page 34: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

PAGINA BIANCA

Page 35: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

5

CO

RSO

SITE

PLAY

ER

>

Corso di programmazione e utilizzodel modulo SitePlayerTM SP1.

L’integrato realizza un Web Server,permette cioè di interfacciare e

comandare un circuito elettronicoattraverso una normale pagina Internet.

Grazie a questo Corso impareremoa programmare il modulo

realizzando applicazioni che utilizzandopagine Internet consentono di

controllare circuiti elettronici remoti.Quinta puntaQuinta puntatata

Elettronica In - febbraio 2004 49

a cura dell’Ing. Roberto Nogarotto

roseguiamo l’analisi dei programmi cheabbiamo realizzato per la demoboard.

Rammentiamo che tutti i programmi devono esserecopiati in una propria directory.

Con questo programma vogliamo illustrare come èpossibile inviare delle informazioni da una paginaweb al modulo SitePlayer, e trasferire queste infor-mazioni al micro PIC. Aprendo il file index.htm conun browser, si può vedere come la pagina web con-tiene due caselle di selezione, corrispondenti aLED1 ON e LED1 OFF ed un pulsante ENTER.Ogni volta che si agisce su questo pulsante, il ledLD1 della demoboard si accende o si spegne in cor-rispondenza della casella di selezione attivata.Inoltre, quando si attiva questo pulsante viene aper-ta una nuova finestra dalla quale è possibile tornarealla finestra principale cliccando sul relativo link.Vediamo anche in questo caso in dettaglio i file da

utilizzare per questo programma. Il primo file darealizzare è l’ index.htm, il cui listato è riportatonella pagina seguente. Come al solito, per non per-derci nei meandri dell’html, isoliamo la parte cherealizza la funzione che ci interessa, ovvero l’inviodi dati in risposta alla pigiata di un pulsante, ripor-tiamo di seguito questa parte:

<td><form action=”fi.spi” method=”get” name=”form” ><p><label> </label><label> <input type=”radio” name=”LED” value=”1” checked><font size=”2” face=”Arial, Helvetica, sans-serif”>LED 1</font></label><font size=”2” face=”Arial, Helvetica, sans-serif”> ON </font> <br><label> <input type=”radio” name=”LED” value=”2”><font size=”2” face=”Arial, Helvetica, sans-serif”>LED</font></label><font size=”2” face=”Arial, Helvetica, sans-serif”> 1 OFF</font><br><br><input type=”submit” name=”pippo2” value=”ENTER”></p></form></td>

Programma Demo4

Page 36: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITEPLAYER

50 febbraio 2004 - Elettronica In

Il meccanismo di invio dei dati si basa sull’utilizzodi una particolare struttura del linguaggio HTMLdefinita FORM. Come si vede, infatti, tutto il bloc-co che ci interessa è racchiuso fra un <form> e un</form>. La direttiva action specifica normalmen-te dove i dati devono essere inviati, mentre la diret-tiva method, che può valere o “get”, come nelnostro caso, o “post”, riguarda il modo di elabora-zione dei dati da inviare. Con method=get si indica di accodare i dati che sivuole inviare dopo l’indirizzo, che nel nostro casoè rappresentato dal nome del file fi.spi. I dati dainviare al modulo vengono invece specificati da

alcuni elementi del form. Nel nostro caso abbiamoutilizzato un elemento di selezione denominatoinput type”radio”. Come si vede sono presentidue elementi aventi lo stesso nome(name=”LED”). Se viene selezionato il primo,questo elemento varrà 1, viceversa se viene sele-zionato il secondo esso varrà 2. Vi è poi un ultimo elemento definito da inputtype=”subit” che rappresenta il pulsante di inviodei dati. In sostanza, ogni volta che viene pigiato ilpulsante ENTER, i dati relativi alle caselle di sele-zione verranno inviati con il nome del file fi.spi almodulo SitePlayer, il quale li assegna all’oggettodefinito con lo stesso nome. Nel nostro caso viene inviato il valore dell’oggettoLED, che difatti troviamo definito nel file di defi-nizione demo4.spd. Il file fi.spi contiene anche ilnome della pagina html che viene inviata al brow-ser, e che nel nostro caso abbiamo chiamato rispo-sta.htm. Questa è la pagina web che viene visualizzata ognivolta che i dati vengono inviati al moduloSitePlayer con la pigiata del pulsante ENTER, econtiene il link su cui cliccare per poter tornare allapagina principale.Visto come è possibile inviare dei dati attraversouna pagina web al modulo SitePlayer, passiamo adanalizzare il programma dal lato PIC, riportato nelbox Demo4 Listato Basic. Tralasciando la descri-zione delle inizializzazioni, passiamo subito al

Esempio di gestione di una uscita digitale: la demo consente di accendere e spegnere il led LD1.

DEMO 4

;DEMO4.SPD

;DEFINITIONS$Devicename �Futura elettronica Demo4�$DHCP off$DownloadPassword ��$SitePassword ��$InitialIP �192.168.0.250�$PostIRQ on$Sitefile�C:\Programmi\SitePlayer\demoboard\demo4\demo4.spb�$Sitepath �C:\Programmi\SitePlayer\demoboard\demo4\root�

;OBJECTSorg 05hLED db 0

DEMO 4: Definizioni

Page 37: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - febbraio 2004 51

<!DOCTYPE HTML PUBLIC �-//W3C//DTD HTML 4.01 Transitional//EN�><html><head><title>Futurel Demo4</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�></head>

<body background=�sfondo1.gif�><table width=�300� border=�0� align=�center� bordercolor=�#FFFFFF� bgcolor=�#FFFFFF�>

<tr> <td><div align=�center�><img src=�futurel1.jpg� width=�100� height=�37�></div></td>

</tr><tr> <td><div align=�center�><font color=�#999999� size=�2� face=�Arial, Helvetica, sans-serif�>WEB

SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td><div align=�left�><font size=�2� face=�Arial, Helvetica, sans-serif�>File:<strong>demo4.spd</strong></font></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td><form action=�fi.spi� method=�get� name=�form� ><p>

<label> </label><label> <input type=�radio� name=�LED� value=�1� checked><font size=�2� face=�Arial, Helvetica, sans-serif�>LED 1</font></label><font size=�2� face=�Arial, Helvetica, sans-serif�> ON</font> <br><label> <input type=�radio� name=�LED� value=�2�><font size=�2� face=�Arial, Helvetica, sans-serif�>LED</font></label><font size=�2� face=�Arial, Helvetica, sans-serif�> 1 OFF</font><br><br><input type=�submit� name=�pippo2� value=�ENTER�>

</p></form></td>

</tr><tr>

<td><hr noshade></td></tr><tr> <td> <div align=�center�> <font color=�#999999� size=�1� face=�Arial, Helvetica, sans-serif�>&copy;

2003 Futura Elettronica Company. All rights reserved.</font><br></div></td>

</tr></table></body></html>

<!DOCTYPE HTML PUBLIC �-//W3C//DTD HTML 4.01 Transitional//EN�><html><head><title>Risposta</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�></head>

<body><p>Dati ricevuti correttamente</p><p><a href=�index.htm�>Ritorna alla pagina iniziale</a></p></body></html>

Demo 4: Listato HTML

HTTP/1.0 302 Found<title>fi.spi</title>Location:/Risposta.htm<cr><lf>

Page 38: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

52 febbraio 2004 - Elettronica In

Demo 4: Listato Basic

;File DEMO4.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include �modedefs.bas�

�LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

�DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

�Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5�Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

�Definizione I/OADCON1=%00000100 ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

�DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

�Portb coi pull up interniOPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1INPUT INTSP

START:

Gosub SEND20TEMP = 0Pause 100

START0:ASM

START00 BTFSC Porta.4Goto START00ENDASM

INDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

If DATOIN = 1 thenLED1 = 1

EndifIf DATOIN = 2 then

LED1 = 0Endif

EndifPause 100Goto START0

�Routine di invio di 20 byte 0 per inzializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

�Routine di scrittura di un byte�Invia : Comando di write (128), INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

�Routine di richiesta di lettura di un byte�Invia: Comando di read (192), INDIRIZZOSENDREADREQUEST:

Pause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

�Routine di lettura di un byte (dopo aver inviato�SENDREADREQUEST�In uscita: DATOIN, FLAGOK = 1 se è andata a buon fine la�lettura, altrimenti 0 se è andato in timeout (300 msec)READDATO:

FLAGOK = 0Pauseus 100Serin

RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:FLAGOK = 0Return

Page 39: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITE

PLAY

ER

Elettronica In - febbraio 2004 53

cuore del programma, che si svolge a partire dal-l’etichetta START0. Si nota subito l’introduzione della direttiva ASMche ci permette di inserire delle istruzioni in assem-bler all’interno del programma scritto in basic. Laragione dell’utilizzare l’assembler è presto detta.L’impulso generato dal modulo SitePlayer sul pie-dino 11, collegato ad RA4 del PIC, dura soltanto 5microsecondi. Poiché ogni istruzione assembler delPIC dura r cicli di clock, ogni istruzione impiega 1microsecondo ad essere eseguita. Scrivendo le istruzioni in basic necessarie ad anda-re a testare la presenza di questo impulso, si sareb-be rischiato di non rilevare la presenza di qualche

impulso, e quindi di non aggiornare correttamentel’accensione e lo spegnimento del led LD1. Il pic-colo loop in assembler che testa lo stato di RA4occupa invece 3 microsecondi. In questo modo èimpossibile che il programma non si accorga di uneventuale impulso presente su RA4. Se questo impulso viene rilevato, il programmaattiva la procedura di lettura di un dato dalSitePlayer. Per poter effettuare la lettura di un datodal SitePlayer, occorre innanzitutto inviare uncomando di richiesta di lettura. Questo è realizzatodalla routine SENDREADREQUEST, che invia ilcomando di lettura (192) e l’indirizzo della cella dimemoria che si vuole leggere. A questo punto il modulo SitePlayer dovrebberispondere inviando il contenuto della cella dimemoria di cui è stata richiesta la lettura. A questoprovvede la routine READDATO, che resta in atte-sa 300 millisecondi dell’arrivo di un dato sullalinea seriale. Se questo dato arriva, viene postonella variabile DATOIN e viene posto a 1 la varia-bile FLAGOK, che servirà, una volta tornati al pro-gramma principale, a segnalare la presenza di undato valido. Viceversa, dopo 300 millisecondi, lasubroutine torna comunque al programma senzaaver settato FLAGOK. Il programma principale setrova FLAGOK a 1 accende o spegne il led LD1sulla base del valore di DATOIN. Questa variabilepuò valere 1 o 2, in quanto questi erano i due pos-sibili valori che avevamo previsto nella pagina webper gli elementi input type = “radio”.

Esempio di gestione di una uscita digitale: la demo consente di accendere e spegnere il led LD1.

DEMO 5

;DEMO5.SPD

;DEFINITIONS$Devicename �Futura elettronica Demo5�$DHCP off$DownloadPassword ��$SitePassword ��$InitialIP �192.168.0.250�$PostIRQ on$Sitefile�C:\Programmi\SitePlayer\demoboard\demo5\demo5.spb�$Sitepath �C:\Programmi\SitePlayer\demoboard\demo5\root�

;OBJECTSorg 05hLED db 0

DEMO 5: Definizioni

Page 40: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

54 febbraio 2004 - Elettronica In

<!DOCTYPE HTML PUBLIC �-//W3C//DTD HTML 4.01 Transitional//EN�><html><head><title>Futurel Demo5</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�></head>

<body background=�sfondo1.gif�><table width=�300� border=�0� align=�center� bordercolor=�#FFFFFF� bgcolor=�#FFFFFF�>

<tr> <td><div align=�center�><img src=�futurel1.jpg� width=�100� height=�37�></div></td>

</tr><tr>

<td><div align=�center�><font color=�#999999� size=�2� face=�Arial, Helvetica, sans-serif�>WEBSERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td><div align=�left�><font size=�2� face=�Arial, Helvetica, sans-serif�>File: <strong>demo5.spd</strong></font></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td> <form action=�fi.spi� method=�get� name=�form� ><p>

<label> <input type=�hidden� name=�LED� value=�0�><input type=�checkbox� name=�LED� value=�1�><font size=�2� face=�Arial, Helvetica, sans-serif�>LED</font></label><font size=�2� face=�Arial, Helvetica, sans-serif�> 1 ON</font><br><br><input type=�submit� name=�inviadati� value=�ENTER�>

</p></form></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td> <div align=�center�> <font color=�#999999� size=�1� face=�Arial, Helvetica, sans-serif�>&copy; 2003 Futura Elettronica Company. All rights reserved.</font><br>

</div></td></tr>

</table><p>&nbsp;</p><p>&nbsp;</p></body></html>

<!DOCTYPE HTML PUBLIC �-//W3C//DTD HTML 4.01 Transitional//EN�><html><head><title>Risposta</title><meta http-equiv=�Content-Type� content=�text/html; charset=iso-8859-1�></head><body><p>Dati ricevuti correttamente</p><p><a href=�index.htm�>Ritorna alla pagina iniziale</a></p></body></html>

Demo 5: Listato HTML

Page 41: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - febbraio 2004 55

;File DEMO5.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include �modedefs.bas�

�LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

�DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

�Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5�Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

�Definizione I/OADCON1=%00000100 ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

�DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

�Portb coi pull up interniOPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1INPUT INTSP

START:

Gosub SEND20TEMP = 0Pause 100

START0:ASM

START00 BTFSC Porta.4Goto START00ENDASM

INDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

If DATOIN = 0 thenLED1 = 0

EndifIf DATOIN = 1 then

LED1 = 1Endif

EndifPause 100Goto START0

�******************************************�Routine di invio di 20 byte 0 per inzializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

�Routine di scrittura di un byte�Invia : Comando di write (128), INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

�Routine di richiesta di lettura di un byte�Invia: Comando di read (192), INDIRIZZOSENDREADREQUEST:

Pause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

�Routine di lettura di un byte (dopo aver inviato�SENDREADREQUEST�In uscita: DATOIN, FLAGOK = 1 se è andata a buon fine la�lettura, altrimenti 0 se è andato in timeout (300 msec)READDATO:

FLAGOK = 0Pauseus 100Serin RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:FLAGOK = 0Return

Demo 5: Listato Basic

Page 42: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

56 febbraio 2004 - Elettronica In

Programma Demo5

Per iil

Il modulo SitePlayer presentato all�interno del Corso è disponibile già mon-tato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modulo imple-menta un Web Server, un controllore Ethernet 10baseT, una memoria Flashin cui inserire le pagine Web e un dispositivo di interfacciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l�alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331-576139 ~ Fax: 0331-466686 ~ http://www.futuranet.it

Con questo programma vogliamo vedere come tra-smettere ancora un’informazione da una paginaweb al modulo SitePlayer, utilizzando però una tec-nica diversa rispetto a quanto visto nel Demo4. Se visualizziamo il file index.htm della Demo5 conun browser, possiamo vedere come questa finestracontenga una sola casella di spunta. Se non si atti-va la spunta relativa a LED1 ON e si preme il pul-sante ENTER il led 1 sulla demoboard si spegne.Viceversa, spuntando la casella e premendo il pul-sante ENTER, si ottiene l’accensione dello stessoled. A prima vista, questa demo potrebbe sembrareabbastanza simile alla precedente. Tuttavia vi è unasostanziale differenza nell’oggetto html utilizzatoin questa demo rispetto alla precedente, differenzaquesta che ci costringe ad utilizzare un piccoloespediente. Infatti le check box (questo è il nomedelle caselle di spunta) realizzano l’invio di datisolo quando sono selezionate. In sostanza, scriven-do il codice html del file index.htm e inserendo nor-malmente la check box, otterremmo che, pigiandoil pulsante ENTER si avrebbe l’invio dei dati soloquando la casella è selezionata, ovvero per accen-dere il led. Ma in questo modo non sarebbe prati-camente mai possibile spegnere il led, in quantoquando la casella non è selezionata, anche premen-do il pulsante ENTER non si avrebbe l’invio dialcun dato. L’espediente che si utilizza in questocaso è quello di inserire un campo nascosto (hid-den). Questo campo nascosto viene inviato invece

ogni volta che viene pigiato il pulsante ENTER. Inquesto modo, quando la check box non è selezio-nata, viene inviato un solo dato, mentre quando lacheck box è selezionata vengono inviati due dati, ilcampo nascosto ed il valore della check box. Saràovviamente compito del software del microcontrol-lore interpretare i dati in arrivo e distinguere quin-di i due diversi casi.Il codice completo del file index è riportato in que-ste pagine, isoliamo la parte che ci interessa:

<p><label><input type=”hidden” name=”LED”value=”0”><input type=”checkbox”name=”LED” value=”1”><font size=”2”face=”Arial, Helvetica, sans-serif”>LED</font></label><font size=”2”face=”Arial, Helvetica, sans-serif”>1ON</font><br><br><input type=”submit”name=”inviadati” value=”ENTER”> </p>

Come si vede, abbiamo definito un elemento deltipo “hidden”, il cui valore è 0, ed una checkboxil cui valore, quando è selezionata, è 1. E’ da nota-re che entrambe hanno nome LED. Questo ci per-mette di utilizzare nella definizione degli oggetti delSitePlayer un solo oggetto. In pratica, se la check-box non è selezionata, poiché viene inviato solo ilcampo nascosto, viene inviato solo 0, e quindi LEDvarrà 0. Se viceversa la casella è selezionata, LEDverrà posto prima a 0 e poi a 1, rimanendo quindi a1. Il file di definizione e il file da inserire nel PICsono entrambi riportati in queste pagine.

Page 43: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

6Corso di programmazione e utilizzo

del modulo SitePlayerTM SP1.L’integrato realizza un Web Server,

permette cioè di interfacciare ecomandare un circuito elettronico

attraverso una normale pagina Internet.Grazie a questo corso impareremo

a programmare il modulorealizzando applicazioni che

si basano su pagine internet peraccedere a circuiti elettronici.

Sesta puntaSesta puntatata

CO

RSO

SITE

PLAY

ER

ontinuiamo ad analizzare i programmi cheabbiamo realizzato per la demoboard.

Ricordiamo che tutti i programmi devono esserecopiati in una propria directory.

Con questa demo vogliamo illustrare come sia pos-sibile accendere e spegnere i led sulla demoboard.Questa volta abbiamo però utilizzato un nuovometodo per inviare dati al SitePlayer. Mentre neiprecedenti listati dimostrativi abbiamo sempre uti-lizzato il metodo GET della Form per inviare datial SitePlayer, utilizzando gli oggetti RadioButtonse Checkbox, ora vedremo come inviare dati alSitePlayer utilizzando la tecnica dei link. In html èpossibile inserire dei link utilizzando il tag <ahref= .... > chiuso dal tag </a>. Dopo il segno diuguale è possibile inserire il percorso del link.Questo può essere nella stessa forma di un indirizzo

internet, “http://www....” oppure, se il file che sivuole linkare risiede nella stessa macchina dellapagina html, è sufficiente indicare il percorso delfile. Se proviamo ad aprire il file index.html di que-sta demo con un browser, vedremo che posizionan-doci con il mouse su uno dei pulsanti relativi ai led,comparirà il percorso del link che si attiva cliccan-do il pulsante stesso. Nel link si può notare che viene riportato come fileda linkare un file X.SPI, seguito dal simbolo dipunto di domanda e da una serie di dati. Questo per-ché, oltre al link relativo al file X.SPI, è possibileinviare anche il valore da assegnare ad un oggetto. Vediamo subito il file html di questa demo per com-prendere meglio come utilizzare questa tecnica.

Il file INDEX.HTM

Il file index.htm è riportato nella pagina seguente. Diquesto file analizzeremo in dettaglio due sezioni: la >

Elettronica In - marzo 2004 75

a cura di Ing. Roberto Nogarotto

Programma Demo6

Page 44: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITEPLAYER

76 marzo 2004 - Elettronica In

Esempio di gestione di uscite digitali utilizzando una grafica a pulsante e dei led virtuali di retroazione. La demo consente di accendere / spegnere i led LD1 ... LD8; un led virtuale indica lo stato dei led.

DEMO 6

;DEMO6.SPD

;DEFINITIONS$Devicename “Futura elettronica Demo6”$DHCP off$DownloadPassword “”$SitePassword “”$InitialIP “192.168.0.250”$PostIRQ on$Sitefile“C:\Programmi\SitePlayer\demoboard\demo6\demo6.spb”$Sitepath “C:\Programmi\SitePlayer\demoboard\demo6\root”

;OBJECTSorg 05hled1 db 0

DEMO 6: Definizioni

prima ci permette di accendere e spegnere l’indica-tore sulla pagina web in funzione dello stato delcorrispondente led, mentre la seconda ci illustracome inserire un link che ci consenta di inviare alSitePlayer i dati necessari per accendere e spegne-re i vari led. Nel file Demo6 Index.html, queste sezioni sonoriportate per ciascuno degli 8 led. Vediamo innanzitutto la parte che ci permette di“accendere e spegnere” l’indicatore sulla paginaweb in funzione dello stato del corrispondente led,e facciamo per questo riferimento alla seguenteriga html:

<td><div align=”center”><img src=”oval_led^led1’0.gif”width=”21” height=”10”></div></td>

Con il tag img src è possibile, come abbiamo giàvisto, inserire un’ immagine. Il file dell’immagineda inserire non è un unico file definito, ma dipendedal valore dell’oggetto led1, che è un oggetto delSitePlayer che corrisponde al byte che viene visua-lizzato sugli 8 led della demoboard. Abbiamo infatti creato due file immagine, cheabbiamo denominato oval_led0.gif e oval_led1.gif,il primo rappresentante un led spento e il secondoun led verde acceso. Il nome del file dell’immagine da visualizzareviene, per così dire, costruito utilizzando il valoredella variabile led1. Poniamo ad esempio che ilprimo led sia acceso. Poiché la variabile led1 corri-sponde allo stato dei led della demoboard, il bit diposizione 0 della variabile led1 varrà 0.Ricordando il significato degli operatori aritmetici,è facile identificare come led1’0 significhi insostanza prendere il valore del bit di peso 0 dellavariabile led1. Se questo vale zero, ^led1’0 vale 0 e quindi l’og-getto di img src sarà oval_led0, viceversa saràoval_led1. In questo modo si ottiene la visualizzazione sullapagina dell’immagine dei led accesi o spenti aseconda del valore dell’oggetto led1.

Page 45: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - marzo 2004 77

<html><head><title>Futurel Demo6</title><meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”></head><body bgcolor=”#FFFFFF” background=”sfondo1.gif”><table width=”300” border=”0” align=”center” cellpadding=”0” cellspacing=”0” bordercolor=”#FFFFFF” bgcolor=”#FFFFFF”><tr> <td colspan=”8”><div align=”center”><img src=”futurel1.jpg” width=”100” height=”37”></div></td>

</tr><tr> <td colspan=”8”><div align=”center”><font color=”#999999” size=”2” face=”Arial, Helvetica, sans-serif”>WEB

SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr> <td colspan=”8”><hr noshade></td>

</tr><tr> <td colspan=”8”><div align=”left”><font size=”2” face=”Arial, Helvetica, sans-serif”>File:

<strong>demo6.spd</strong></font></div></td></tr><tr> <td colspan=”8”>&nbsp;</td>

</tr><tr bgcolor=”#333333”> <td colspan=”8”>&nbsp;</td>

</tr><tr bgcolor=”#333333”> <td width=”39”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD1</font></div></td><td width=”39”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD2</font></div></td><td width=”37”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD3</font></div></td><td width=”39”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD4</font></div></td><td width=”35”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD5</font></div></td><td width=”37”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD6</font></div></td><td width=”36”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD7</font></div></td><td width=”38”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD8</font></div></td>

</tr><tr bgcolor=”#333333”> <td><div align=”center”><img src=”oval_led̂ led1’0.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’1.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’2.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’3.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’4.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’5.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’6.gif” width=”21” height=”10”></div></td><td><div align=”center”><img src=”oval_led̂ led1’7.gif” width=”21” height=”10”></div></td>

</tr><tr bgcolor=”#333333”> <td><div align=”center”><a href=”x.spi?led1=̂ led1~1”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD1”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~2”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD2”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~4”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD3”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~8”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD4”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~16”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD5”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~32”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD6”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~64”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD7”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~128”><img src=”radbutton0.gif” width=20 height=20 name=”On” border=”0” alt=”LD8”></a></div></td></tr><tr bgcolor=”#333333”> <td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>

</tr><tr> <td colspan=”8”>&nbsp;</td>

</tr><tr> <td colspan=”8”><hr noshade></td>

</tr><tr> <td colspan=”8”> <div align=”center”> <font color=”#999999” size=”1” face=”Arial, Helvetica, sans-serif”>&copy;

2003 Futura Elettronica Company. All rights reserved.</font><br></div></td>

</tr></table></body></html>

HTTP/1.0 302 Found<title>x.spi</title>Location: /index.htm

Demo 6: Listato HTML

Page 46: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

78 marzo 2004 - Elettronica In

;File DEMO 6.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include “modedefs.bas”

‘LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

‘DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

‘Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5‘Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

‘Definizione I/OADCON1=%00000100ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

‘DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

‘Portb coi pull up interniOPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1

INPUT INTSP

START:Gosub SEND20TEMP = 0Pause 100

START0:ASM

START00 BTFSC Porta.4Goto START00ENDASMINDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

Portc = DATOINEndifPause 100Goto START0

‘Routine di invio di 20 byte 0 per inzializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

‘Routine di scrittura di un byte‘Invia : Comando di write (128), INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

‘Routine di richiesta di lettura di un byte‘Invia: Comando di read (192), INDIRIZZOSENDREADREQUEST:

Pause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

‘Routine di lettura di un byte (dopo aver inviato‘SENDREADREQUEST‘In uscita: DATOIN, FLAGOK = 1 se è andata a buon fine la‘lettura, altrimenti 0 se è andato in timeout (300 msec)READDATO:

FLAGOK = 0Serin RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:FLAGOK = 0Return

Demo 6: Listato Basic

Page 47: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - marzo 2004 79

>

Esempio di gestione di uscite digitali utilizzando una grafica a pulsante. La demo consente di accendere / spegnere i led LD1 ... LD8; lo stesso pulsante indica lo stato dell'uscita:pulsante premuto = led acceso.

DEMO 7

;DEMO7.SPD

;DEFINITIONS$Devicename “Futura elettronica Demo7”$DHCP off$DownloadPassword “”$SitePassword “”$InitialIP “192.168.0.250”$PostIRQ on$Sitefile“C:\Programmi\SitePlayer\demoboard\demo7\demo7.spb”$Sitepath “C:\Programmi\SitePlayer\demoboard\demo7\root”

;OBJECTSorg 05hled1 db 0

DEMO 7: Definizioni

Andiamo adesso ad analizzare la parte che realizzal’invio di dati utilizzando un link. La parte di codi-ce html che ci interessa è la seguente:

<td><div align=”center”><ahref=”x.spi?led1=^led1~1”><img src=”radbutton0.gif” width=20 height=20name=”On” border=”0” alt=”LD1”></a></div></td>

In particolare, la parte che realizza il link vero eproprio è la seguente:

<a href=”x.spi?led1=^led1~1”>

Come abbiamo già visto, con <a href= si indica unlink. Questo link rimanda al file x.spi. In pratica quando clicchiamo sull’oggetto a cui èassociato il link, il browser invia al server, cioè nelnostro caso il SitePlayer, l’indirizzo del file a cuiaccedere, nel nostro caso appunto il file x.spi. Ovviamente questo file dovrà essere presente nellastessa directory del file index.htm. Insieme a questa richiesta viene inviata anche lavariabile led1, il cui valore viene ricavato dall’og-getto led1 (^led1) cui viene applicato l’operatore ~che esegue l’or esclusivo fra l’oggetto led1 ed ilnumero 1. Eseguire questa operazione vuol dire in praticacambiare lo stato logico del primo bit dell’oggettoled1. Poiché l’oggetto led1 rispecchia esattamentelo stato logico dei led, l’effetto è quello di accen-dere il primo led se questo era spento, e viceversaspegnerlo se era acceso. Ovviamente, per poteraccendere e spegnere i vari led, occorrerà eseguirel’operazione di or con i pesi binari corrispondentiai vari led.

File DEMO6.BAS

Il file DEMO6.bas per il micro PIC, riportato inqueste pagine, richiede pochissime spiegazioni. La prima sezione del listato riporta la definizionedelle risorse utilizzate dalla demoboard e le defini-zioni delle variabili.

Page 48: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

80 marzo 2004 - Elettronica In

>

Di seguito, il programma resta semplicemente inattesa dell’arrivo di una segnalazione da parte delmodulo SitePlayer che sono cambiati dei dati. Unavolta rilevata tale richiesta, il microcontrollore va a

leggere l’oggetto, che in questa demo è localizzatoall’indirizzo 5. Poiché questo oggetto deve rispec-chiare lo stato dei led, il micro non fa nient’altroche porre il valore letto di quest’oggetto sulla

<html><head><title>Futurel Demo7</title><meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”></head><body bgcolor=”#FFFFFF” background=”sfondo1.gif”><table width=”300” border=”0” align=”center” cellpadding=”0” cellspacing=”0” bordercolor=”#FFFFFF” bgcolor=”#FFFFFF”>

<tr> <td colspan=”8”><div align=”center”><img src=”futurel1.jpg” width=”100” height=”37”></div></td>

</tr><tr>

<td colspan=”8”><div align=”center”><font color=”#999999” size=”2” face=”Arial, Helvetica, sans-serif”>WEB SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td colspan=”8”><hr noshade></td></tr><tr>

<td colspan=”8”><div align=”left”> <p><font size=”2” face=”Arial, Helvetica, sans-serif”>File: <strong>demo7</strong></font><font size=”2” face=”Arial, Helvetica,

sans-serif”><strong>.spd</strong></font></p></div></td>

</tr><tr>

<td colspan=”8”>&nbsp;</td></tr><tr bgcolor=”#333333”>

<td colspan=”8”>&nbsp;</td></tr><tr bgcolor=”#333333”> <td width=”40”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD1</font></div></td><td width=”36”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD2</font></div></td><td width=”38”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD3</font></div></td><td width=”37”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD4</font></div></td><td width=”36”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD5</font></div></td><td width=”39”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD6</font></div></td><td width=”36”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD7</font></div></td><td width=”38”><div align=”center”><font color=”#00FF00” size=”2” face=”Arial, Helvetica, sans-serif”>LD8</font></div></td>

</tr><tr bgcolor=”#333333”>

<td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td><td><div align=”center”></div></td>

</tr><tr bgcolor=”#333333”> <td><div align=”center”><a href=”x.spi?led1=̂ led1~1”><img src=”button̂ led1’0.gif” width=20 height=20 name=”On” border=”0” alt=”LD1”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~2”><img src=”button̂ led1’1.gif” width=20 height=20 name=”On” border=”0” alt=”LD2”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~4”><img src=”button̂ led1’2.gif” width=20 height=20 name=”On” border=”0” alt=”LD3”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~8”><img src=”button̂ led1’3.gif” width=20 height=20 name=”On” border=”0” alt=”LD4”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~16”><img src=”button̂ led1’4.gif” width=20 height=20 name=”On” border=”0” alt=”LD5”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~32”><img src=”button̂ led1’5.gif” width=20 height=20 name=”On” border=”0” alt=”LD6”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~64”><img src=”button̂ led1’6.gif” width=20 height=20 name=”On” border=”0” alt=”LD7”></a></div></td><td><div align=”center”><a href=”x.spi?led1=̂ led1~128”><img src=”button̂ led1’7.gif” width=20 height=20 name=”On” border=”0” alt=”LD8”></a></div></td></tr><tr bgcolor=”#333333”>

<td colspan=”8”>&nbsp;</td></tr><tr>

<td colspan=”8”>&nbsp;</td></tr><tr>

<td colspan=”8”><hr noshade></td></tr><tr>

<td colspan=”8”> <div align=”center”> <font color=”#999999” size=”1” face=”Arial, Helvetica, sans-serif”>&copy; 2003 Futura Elettronica Company. All rights reserved.</font><br>

</div></td></tr>

</table></body></html>

HTTP/1.0 302 Found<title>x.spi</title>Location: /index.htm

Demo 7: Listato HTML

Page 49: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - marzo 2004 81

;File DEMO7.BAS

TEMP var byte DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include “modedefs.bas”

‘LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

‘DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

‘Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5‘Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

‘Definizione I/OADCON1=%00000100ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

‘DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

‘Portb coi pull up interniOPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1

INPUT INTSP

START:Gosub SEND20TEMP = 0Pause 100

START0:ASM

START00 BTFSC Porta.4Goto START00ENDASMINDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

Portc = DATOINEndifPause 100Goto START0

‘Routine di invio di 20 byte 0 per inzializzazioneSEND20:

For TEMP = 1 to 20Serout TX232,T9600,[0]Pause 5

Next TEMP Return

‘Routine di scrittura di un byte‘Invia : Comando di write (128), INDIRIZZO, DATOOUTWRITEDATO:

Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

‘Routine di richiesta di lettura di un byte‘Invia: Comando di read (192), INDIRIZZOSENDREADREQUEST:

Pause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

‘Routine di lettura di un byte (dopo aver inviato‘SENDREADREQUEST‘In uscita: DATOIN, FLAGOK = 1 se è andata a buon fine la‘lettura, altrimenti 0 se è andato in timeout (300 msec)READDATO:

FLAGOK = 0Serin RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:FLAGOK = 0Return

Demo 7: Listato Basic

Page 50: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

82 marzo 2004 - Elettronica In

Per iil

Il modulo SitePlayer presentato all’interno del Corso è disponibile giàmontato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modu-lo implementa un Web Server, un controllore Ethernet 10baseT, unamemoria Flash in cui inserire le pagine Web e un dispositivo di interfac-ciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l’alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331-576139 ~ Fax: 0331-466686 ~ http://www.futuranet.it

porta a cui risultano collegati gli 8 led disponibilisulla demoboard.

Questa demo è una variante della precedente;anche in questo caso riportiamo il file di definizio-ni per il SitePlayer, il listato delle pagine html cherealizzano il Web Server e il listato del programmada inserire nel microcontrollore che risulta scrittoin PIC Basic. Come per la demo6 abbiamo otto pulsanti, cliccan-do i quali possiamo andare ad accendere o spegne-re i led sulla demoboard. Questa volta però ognivolta che si clicca su un pulsante, è il pulsante stes-so a cambiare, riportando quindi lo stato del led. In pratica, si simula con la pagina web l’azione diun pulsante illuminato. Diamo subito un’occhiata al codice html per capirele differenze presenti rispetto alla demo preceden-te. La parte che interessa, relativa ad un solo pul-sante, è la seguente:

<a href=”x.spi?led1=^led1~1”> <img src=”button^led1’0.gif” width=20 hei-ght=20 name=”On” border=”0” alt=”LD1”></a>

Come si vede, fra il tag <a href_”... ed il tag </a>sono racchiuse le definizioni che richiamano ilcaricamento dell’immagine del led. In pratica, il

link viene associato all’immagine identificata daltag img srg. La tecnica per inviare con il link il valore da modi-ficare dell’oggetto led1 (href=”x.spi?led1=^led1~1”), così come il metodo utilizzato perricavare dall’oggetto le immagini che questa voltasi chiamano button0.gif e button1.gif (imgsrc=”button^led1’0.gif” ), sono del tutto simili aquanto già analizzato nella demo precedente.Anche il file Demo7.bas per il PIC è assolutamen-te uguale al precedente, dovendo in sostanza ese-guire le stesse operazioni.Ricordiamo che non è possibile collegare diretta-mente la demoboard alla scheda di rete installatanel PC, a meno di utilizzare un cavo incrociato. Poiché tuttavia il costo di un HUB ethernet è oggi-giorno veramente irrisorio (si parla di qualche deci-na di euro), questa rappresenta sicuramente la solu-zione più comoda e che consigliamo, anche perchéè possibile utilizzare lo stesso HUB per collegareeventualmente altri computer presenti e realizzarecosì una completa rete LAN. Una volta collegato fisicamente alla rete, il modulopuò essere già visto dalla stessa, purché ovviamen-te l’indirizzo IP impostato nel SitePlayer sia valido.A tale proposito, rammentiamo che tutti i moduliSitePlayer vengono forniti con un indirizzo didefault pari a 192.168.1.250 e che per vedere inrete il modulo e quindi per poter effettuare unaprima programmazione del modulo dovrete confi-gurare anche il vostro PC con un IP pari a192.168.1.XXX.

Programma Demo7

Page 51: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

7Corso ddi pprogrammazione ee uutilizzo

del mmodulo SSitePlayerTM SP1.L’integrato rrealizza uun WWeb SServer,

permette ccioè ddi iinterfacciare eecomandare uun ccircuito eelettronico

attraverso uuna nnormale ppagina IInternet.Grazie aa qquesto ccorso iimpareremo

a pprogrammare iil mmodulorealizzando aapplicazioni cche

si bbasano ssu ppagine iinternet pperaccedere aa ccircuiti eelettronici.Settima eed uultima ppuntataSettima eed uultima ppuntata

CO

RSO

SITE

PLAY

ER

ccoci giunti all’ultima puntata del corso di pro-grammazione del modulo Site Player. In que-

sta puntata analizzeremo come è possibile variare unatensione, utilizzando una lista di valori disponibili inun menu a tendina o utilizzando un potenziometro vir-tuale, direttamente dalla pagina web presente nel SP1.Questo valore sarà reso disponibile ai morsetti PWMe ANALOG della nostra demoboard FT497. Per lagenerazione di un segnale analogico viene utilizzata latecnica PWM (Pulse Width Modulation), che consistesostanzialmente nel variare il duty cycle di un’ondaquadra generata da una porta del microcontrollore.Utilizzando un oscilloscopio è possibile verificarequesta variazione direttamente sul morsetto contrasse-gnato dalla sigla PWM. Questa forma d’onda vienepoi livellata grazie ad un buffer ed ad un filtro presen-te nel circuito e portata al morsetto ANALOG.Essendo la tensione di alimentazione del micro chegenera il PWM di 5 volt, anche l’onda quadra genera-ta potrà assumere come valore minimo 0 volt e come

valore massimo 5 volt. Di conseguenza anche le ten-sioni disponibili sui morsetti di uscita potranno varia-re tra questi due valori.

Con questa demo è possibile inviare al siteplayer unvalore scelto fra quelli presenti in una casella di sele-zione, come si vede nel box relativo al DEMO8. Inpratica selezionando una delle percentuali riportatenel menu a tendina e cliccando sul pulsante SUBMIT,si invia al modulo SitePlayer un dato che, letto dalmicro, viene da questo utilizzato per fornire in uscitauna tensione analogica. La percentuale è relativa allatensione massima ottenibile che è di 5 volt (100%).Abbiamo già detto come il PIC sia in grado di fornirequesta tensione, ma vedremo in dettaglio, parlandodel programma in basic del microcontrollore, comeabbiamo sfruttato una particolare risorsa hardware delmicro per generare questa tensione. >

Elettronica In - aprile 2004 47

a cura di Ing. Roberto Nogarotto

Programma Demo8

Page 52: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

>

CO

RSO

SITEPLAYER

48 aprile 2004 - Elettronica In

Esempio di gestione di una uscita analogica:tramite un menù di scelta si seleziona la tensione desiderata.

DEMO 8

;DEMO8.SPD

;DEFINITIONS$Devicename “Futura elettronica Demo8”$DHCP off$DownloadPassword “”$SitePassword “”$InitialIP “192.168.0.250”$PostIRQ on$Sitefile“C:\Programmi\SitePlayer\demoboard\demo8\demo8.spb”$Sitepath “C:\Programmi\SitePlayer\demoboard\demo8\root”

;OBJECTSorg 05hled1 db 0led2 db 0

DEMO 8: Definizioni

Come abbiamo già anticipato, l'elemento interessan-te di questa demo è l'oggetto casella di selezione.Questo viene definito nella parte centrale del file cheriportiamo di seguito:

<select name="led1" size="1"><option value="^led2">^led2 %</option> <option value=0>0 %</option><option value=10>10 %</option><option value=20>20 %</option><option value=30>30 %</option>

<option value=40>40 %</option><option value=50>50 %</option><option value=60>60 %</option><option value=70>70 %</option><option value=80>80 %</option><option value=90>90 %</option><option value=100>100 %</option></select>

In pratica l'oggetto viene definito fra i tag <select> e</select>. I vari tag <option> vengono utilizzati perdefinire i valori che compaiono quando si va ad atti-vare la casella di selezione, e fra i quali possiamoandare a scegliere quello che ci interessa. Questooggetto che abbiamo così definito ha nome led1.Quando si preme il pulsante SUBMIT viene inviatoal modulo Site Player il valore di led1 corrisponden-te alla selezione effettuata nella casella. Occorre pre-stare attenzione a non confondere le scritte che com-paiono nella casella, cioè le percentuali, con i valoridefiniti dai campi value. Nel nostro caso per como-dità questi valori coincidono con le percentuali, maavrebbero anche potuto avere valori diversi. Occorresubito notare la particolarità della prima scelta dellacasella, costituita non da una stringa indicante unapercentuale, ma da un oggetto denominato led2. Inquesto oggetto viene caricato il valore percentualeprecedentemente selezionato. In questo modo apren-do la pagina è possibile sapere immediatamente ilvalore di tensione che il microcontrollore sta gene-rando.

File INDEX.HTM

Page 53: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - aprile 2004 49

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”><html><head><title>Futurel Demo8</title><meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”></head>

<body background=”sfondo1.gif”><table width=”300” border=”0” align=”center” bordercolor=”#FFFFFF” bgcolor=”#FFFFFF”>

<tr> <td><div align=”center”><img src=”futurel1.jpg” width=”100” height=”37”></div></td>

</tr><tr>

<td><div align=”center”><font color=”#999999” size=”2” face=”Arial, Helvetica, sans-serif”>WEB SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td><div align=”left”><font size=”2” face=”Arial, Helvetica, sans-serif”>File: <strong>demo8.spd</strong></font></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td> <form method=”get” action=”fi.spi” name=”forminput”><p align=”center”>Out:

<select name=”led1” size=”1”><option value=”^led2”>^led2 %</option>

<option value=0>0 %</option><option value=10>10 %</option><option value=20>20 %</option><option value=30>30 %</option><option value=40>40 %</option><option value=50>50 %</option><option value=60>60 %</option><option value=70>70 %</option><option value=80>80 %</option>

<option value=90>90 %</option><option value=100>100 %</option>

</select><br><br><br><input type=”submit” name=”Submit2” value=”Submit”>

</p></form></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td> <div align=”center”> <font color=”#999999” size=”1” face=”Arial, Helvetica, sans-serif”>&copy; 2003 Futura Elettronica Company. All rights reserved.</font><br>

</div></td></tr>

</table></body></html>

<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”><html><head><title>Risposta</title><meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”></head><body><p>Dati ricevuti correttamente</p><p><a href=”index.htm”>Ritorna alla pagina iniziale</a></p></body></html>

Demo 8: Listato HTML

Page 54: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

50 aprile 2004 - Elettronica In

Demo 8: Listato Basic

;File DEMO8.BAS

TEMP var wordTEMPLOW var TEMP.byte0DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include “modedefs.bas”

‘LED

SYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

‘DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

‘Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5

‘Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

‘Pilotaggio PWMsymbol CCP1 = Portc.2

‘Definizione I/O

ADCON1=%00000100ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

‘DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5

INPUT DIP6INPUT DIP7INPUT DIP8

‘Portb coi pull up interni

OPTION_REG.7 = 0 INPUT Porta.0INPUT Porta.1INPUT INTSPOutput CCP1

START:Gosub SEND20TEMP = 0Pause 50

‘Settaggio timer TMR2 per PWMGosub TIMER2CONFIGGosub CCPCONFIGGosub PR2CONFIGPause 50

‘Settaggi PWMCCPR1L = 0Pause 50CCP1CON = %00001100CCP1 = 0Pause 100

START0:ASM

START00 BTFSC Porta.4Goto START00ENDASMINDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

TEMP= DATOIN*255TEMP = TEMP/100CCPR1L = TEMPLOWGosub SCRIVI

EndifPause 100Goto START0

‘Routine di invio di 20 byte 0 ‘per inzializzazione

SEND20:For TEMP = 1 to 20

Serout TX232,T9600,[0]Pause 5

Next TEMP Return

‘Routine di scrittura di un byte‘Invia : Comando di write (128), ‘INDIRIZZO, DATOOUT

WRITEDATO:Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]

Page 55: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

Elettronica In - aprile 2004 51

>

Il file di definizione .spd presenta ovviamente la defi-nizione dei due oggetti led1 che contiene il valorepercentuale selezionato e led2 relativo invece all’im-postazione attiva. Il primo è allocato nella posizione5, mentre il secondo nella locazione 6.Inoltre questo file prevede anche la definizione del-l’indirizzo IP di default che ricordiamo essere192.168.0.250.

Il firmware implementato nel microcontrollore pre-vede come prima cosa la definizione di tutte le varia-bili e la configurazione delle porte utilizzate, succes-sivamente rimane in attesa di una segnalazione daparte del SitePlayer sulla porta RA4. Quando ilmodulo SP1 segnala al microcontrollore che è incorso una richiesta da parte dell’utente, il PIC leggela locazione di indirizzo 5, corrispondente alla varia-bile led1 per sapere quale è il valore di tensione dagenerare. La tecnica che abbiamo utilizzato per gene-rare la tensione analogica consiste nella generazionedi un'onda quadra in cui il rapporto fra periodo alto eperiodo basso varia. L'onda quadra così generataviene riportata direttamente sul morsetto PWM esuccessivamente viene fatta passare attraverso un fil-

tro passa basso costituito da una semplice rete RCche, opportunamente dimensionata, permette di rica-vare in uscita una tensione sufficientemente costante,la cui ampiezza dipende proprio dal rapporto fraperiodo alto e periodo basso. E’ stato previsto ancheun buffer che permette di ottenere un valore di ten-sione ancora più stabile e una corrente maggiorerispetto a quella che la porta del microcontrollore è ingrado di fornire. Come già accennato nell’introdu-zione questa tecnica prende il nome di PWM, e il tipoparticolare di PIC che utilizziamo nella demoboardha una serie di periferiche integrate che permettonofacilmente di gestire la generazione di un segnalePWM. I registri che controllano questa funzione sonoCCP1CON, T2CON e PR2, oltre che CCPR1. Senzavoler entrare nel dettaglio dell'hardware, possiamodire che il PIC, dopo aver configurato i registri chedeterminano la frequenza del segnale PWM, va amodificare il valore del registro CCPR1L in funzionedel valore della variabile led1 del modulo SitePlayer.Modificando questo registro, si ottiene quindi in usci-ta una tensione variabile con il valore di led1. Oltre aquesta operazione, il micro scrive il dato appena lettoda led1 nella locazione 6, ovvero nella variabile led2.Questa operazione permette di sapere quale è il valo-re attivo di tensione, direttamente dalla pagina web,infatti se torniamo al codice html, notiamo che ilprimo tag <option> dalla casella di selezione ha pro-

continuazione Demo 8: Listato Basic

Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

‘Routine di richiesta di lettura di un byte‘Invia: Comando di read (192), ‘INDIRIZZO

SENDREADREQUEST:Pause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

‘Routine di lettura di un byte ‘(dopo aver inviato SENDREADREQUEST)‘In uscita: DATOIN, FLAGOK = 1 se è ‘andata a buon fine la‘lettura, altrimenti 0 se è andato in ‘timeout (300 msec)

READDATO:FLAGOK = 0Serin RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:FLAGOK = 0Return

‘Routine di configurazione modulo PWM

CCPCONFIG:CCP1CON = %00001100Return

TIMER2CONFIG:T2CON = %00000101 ‘Timer2 ON

‘Prescaler /4Return

PR2CONFIG:PR2 = 254Return

‘Routine che scrive la ‘percentuale nel SitePlayer

SCRIVI:

DATOOUT = DATOININDIRIZZO = 6Gosub WRITEDATOReturn

File Demo8.bas

File Demo8.spd

Page 56: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

52 aprile 2004 - Elettronica In

>

tuale. Cliccando lungo la circonferenza di questopotenziometro è possibile selezionare un valore ditensione proporzionale alla posizione scelta.Inoltre la manopola sembra ruotare regolandosi sulnostro clic grazie ad un effetto visivo che consente divedere l’indice della manopola spostarsi. La regolazione avviene tra 8 differenti livelli, pertan-to anche l’uscita della demoboard assumerà un valo-re di 0 volt con il potenziometro ruotato completa-mente in senso antiorario, aumentando con passi dicirca 600 mVolt spostandolo in senso orario, fino adarrivare ai 5 volt massimi con la manopola comple-tamente girata verso destra.Per realizzare questo effetto di rotazione, l’area gra-fica del potenziomentro è stata suddivisa in 8 spicchie quando si va a cliccare su uno di questi, vienerichiamata l'immagine della manopola in cui il puntoindicatore si trova nella posizione dello spicchio.Sono presenti pertanto 8 manopole in memoria delSP1, ciascuna con il punto indicatore in una posizio-ne differente.

Avendo seguito le demo precedenti, non dovrebbeessere difficile riuscire a comprendere questo listatonel quale viene utilizzata ancora la tecnica dei linkper comunicare il valore degli oggetti al SitePlayer. In realtà l'oggetto utilizzato è uno solo, che abbiamochiamato level.

Esempio di gestione di una uscita analogica: viene generata una tensione di uscita il cui valore viene impostato utilizzando una manopola.

DEMO 9

;DEMO9.SPD

;DEFINITIONS$Devicename “Futura elettronica Demo9”$DHCP off$DownloadPassword “”$SitePassword “”$InitialIP “192.168.0.250”$PostIRQ on$Sitefile“C:\Programmi\SitePlayer\demoboard\demo9\demo9.spb”$Sitepath “C:\Programmi\SitePlayer\demoboard\demo9\root”

;OBJECTSorg 05hlevel db 0

DEMO 9: Definizioni

prio come oggetto la variabile led2. In pratica, conquesto accorgimento, la prima scelta della casella diselezione riporta sempre il valore attuale che sta uti-lizzando il PIC per generare il PWM e quindi la cor-rispondente tensione analogica.

Con questa demo otteniamo lo stesso risultato dellademo precedente, ovvero variare la tensione analogi-ca in uscita dalla demoboard, però con un’interfacciagrafica sicuramente più accattivante ed interessante.Questa volta infatti la scelta del valore di tensioneviene effettuata attraverso l'uso di una manopola vir-

File INDEX.HTM

Programma Demo9

Page 57: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITE

PLAY

ER

>

Elettronica In - aprile 2004 53

<html><head><title>Futurel Demo9</title><meta http-equiv=”Content-Type” content=”text/html; charset=iso-8859-1”></head><body bgcolor=”#FFFFFF” background=”sfondo1.gif”><table width=”300” border=”0” align=”center” bordercolor=”#FFFFFF” bgcolor=”#FFFFFF”>

<tr> <td><div align=”center”><img src=”futurel1.jpg” width=”100” height=”37”></div></td>

</tr><tr>

<td><div align=”center”><font color=”#999999” size=”2” face=”Arial, Helvetica, sans-serif”>WEB SERVER COPROCESSOR <br>DEVELOPER BOARD FT497</font></div></td>

</tr><tr>

<td><hr noshade></td></tr><tr>

<td><div align=”left”><font size=”2” face=”Arial, Helvetica, sans-serif”>File: <strong>demo9.spd</strong></font></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td bgcolor=”#999999”> <div align=”center”><img src=”jog_button̂ level.gif” width=36 height=36 border=0 usemap=”#ImageMap9313Map2” alt=”Level”>

<MAP NAME=”ImageMap9313Map2”><AREA SHAPE=”polygon” ALT=”0” COORDS=”22,1, 17,17, 13,1, 15,0” HREF=”x.spi?level=0”><AREA SHAPE=”polygon” ALT=”1”

COORDS=”26,4,27,5,28,5,29,6,30,7,31,8,32,9,33,10,33,11,32,11,31,12,30,13,29,13,28,14,27,14,26,15,25,15,24,16,23,17,22,17,21,18,20,18,19,19,18,19,18,18,19,17,19,16,20,15,20,14,21,13,22,12,22,11,23,10,23,9,24,8,24,7,25,6,25,5” HREF=”x.spi?level=1”>

<AREA SHAPE=”polygon” ALT=”2” COORDS=”35,13, 35,22, 29,21, 27,20, 18,18, 18,17, 24,16, 26,15” HREF=”x.spi?level=2”><AREA SHAPE=”polygon” ALT=”3” COORDS=”24,21, 32,27, 26,33, 20,19” HREF=”x.spi?level=3”><AREA SHAPE=”polygon” ALT=”4” COORDS=”18,18, 22,34, 20,35, 13,34, 16,22” HREF=”x.spi?level=4”><AREA SHAPE=”polygon” ALT=”5” COORDS=”17,18, 14,24, 8,32, 3,28, 3,26, 7,23, 13,20” HREF=”x.spi?level=5”><AREA SHAPE=”polygon” ALT=”6” COORDS=”12,16,16,18,-1,21,0,13” HREF=”x.spi?level=6”><AREA SHAPE=”polygon” ALT=”7” COORDS=”15,16, 9,13, 2,9, 7,3, 10,3, 15,13” HREF=”x.spi?level=7”>

</MAP></div></td>

</tr><tr>

<td>&nbsp;</td></tr><tr>

<td><hr noshade></td></tr><tr> <td> <div align=”center”> <font color=”#999999” size=”1” face=”Arial, Helvetica, sans-serif”>&copy;

2003 Futura Elettronica Company. All rights reserved.</font><br></div></td>

</tr></table></body></html>

Demo 9: Listato HTML

Questo oggetto viene modificato quando si clicca suun link in quanto il tag " HREF="x.spi?level=" asse-gna a level un valore variabile ad ogni spicchio dellamanopola.Le varie immagini della manopola hanno nomejog_button0.gif, jog_button1.gif e così via.Utilizzando poi l’istruzione img srcjog_button^level.gif è possibile caricare l’immaginedella manopola ricavata dal valore dell'oggetto level.

In questa demo il file di definizione .spd contienele configurazioni iniziali, come ad esempio il titolodella pagina (nel nostro caso Futura elettronicaDemo9), l’indirizzo IP di default (192.168.0.250) esoprattutto la definizione dell’oggetto level utiliz-zato per l’impostazione della manopola e per ilvalore di tensione da passare al microcontrollore.

File Demo9.spd

Page 58: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

CO

RSO

SITEPLAYER

54 aprile 2004 - Elettronica In

Demo 9: Listato Basic

;File DEMO9.BAS

TEMP var wordTEMPLOW var TEMP.byte0DATOIN var byteDATOOUT var byteINDIRIZZO var byteFLAGOK var bitTEMPERATURA var byteTRIMMER var byte

Include “modedefs.bas”

‘LEDSYMBOL LED1 = PORTC.0SYMBOL LED2 = PORTC.1SYMBOL LED3 = PORTC.2SYMBOL LED4 = PORTC.3SYMBOL LED5 = PORTC.4SYMBOL LED6 = PORTC.5SYMBOL LED7 = PORTC.6SYMBOL LED8 = PORTC.7

‘DIPSYMBOL DIP1 = PORTB.0SYMBOL DIP2 = PORTB.1SYMBOL DIP3 = PORTB.2SYMBOL DIP4 = PORTB.3SYMBOL DIP5 = PORTB.4SYMBOL DIP6 = PORTB.5SYMBOL DIP7 = PORTB.6SYMBOL DIP8 = PORTB.7

‘Comunicazione con il Site PlayerSYMBOL TX232 = PORTA.2SYMBOL RX232 = PORTA.5‘Interrupt dal Site PlayerSYMBOL INTSP = PORTA.4

‘Pilotaggio PWMsymbol CCP1 = Portc.2

‘Definizione I/OADCON1=%00000100 ADCON0=%10000001OUTPUT LED1OUTPUT LED2OUTPUT LED3OUTPUT LED4OUTPUT LED5OUTPUT LED6OUTPUT LED7OUTPUT LED8OUTPUT TX232INPUT RX232

‘DipINPUT DIP1INPUT DIP2INPUT DIP3INPUT DIP4INPUT DIP5INPUT DIP6INPUT DIP7INPUT DIP8

‘Portb coi pull up interni

OPTION_REG.7 = 0INPUT Porta.0INPUT Porta.1INPUT INTSPOutput CCP1

START:Gosub SEND20TEMP = 0Pause 50

‘Settaggio timer TMR2 per PWMGosub TIMER2CONFIGGosub CCPCONFIGGosub PR2CONFIGPause 50

‘Settaggi PWMCCPR1L = 0Pause 50CCP1CON = %00001100CCP1 = 0

Pause 100START0:

ASM START00

BTFSC Porta.4Goto START00ENDASMINDIRIZZO = 5Gosub SENDREADREQUESTPauseus 50Gosub READDATOIf FLAGOK = 1 then

TEMP= DATOIN*36CCPR1L = TEMPLOW

EndifPause 100Goto START0

‘Routine di invio di 20 byte 0 per inzializ-zazione

SEND20:For TEMP = 1 to 20

Serout TX232,T9600,[0]Pause 5

Next TEMP Return

‘Routine di scrittura di un byte‘Invia : Comando di write (128), ‘INDIRIZZO, DATOOUT

WRITEDATO:Pause 10Serout TX232,T9600,[128]Pause 5Serout TX232,T9600,[INDIRIZZO]Pause 5Serout TX232,T9600,[DATOOUT]Pause 20Return

‘Routine di richiesta di lettura di un byte‘Invia: Comando di read (192), INDIRIZZO

SENDREADREQUEST:

Page 59: CORSO SITE PLAYERquale è univocamente identificata all'interno di una rete. Le schede Ethernet possono scambiare dati a differenti velocità; negli ultimi anni si è passati dalle

Anche in questa demo viene utilizzata la risorsahardware presente nel micro che consente digenerare l’onda PWM per variare la propria ten-sione in uscita.Per conoscere il valore assunto dalla variabilelevel il microcontrollore rimane in attesa di unavariazione di livello sulla porta RA4 tramite laquale il Site Player comunica al PIC l’avvenutointervento da parte dell’utente sulla pagina web. A seguito di ciò, il microcontrollore legge la loca-zione di indirizzo 5 (dove risiede la variabile level)utilizzando una propria linea seriale facente capo

alle porte RA2 (trasmettitore) e RA5 (ricevitore).Come potete notare, queste porte non fanno capoall’UART interna del PIC, ma sono semplici portedi uso generico. L’utilizzo di questi piedini per la trasmissioneseriale è possibile poiché il Basic prevede delleistruzioni che permettono di configurare pin gene-rici come porte per la trasmissione e ricezione didati seriali. Le istruzioni sono SEROUT per la tra-smissione e SERIN per la ricezione. Tramite que-sti comandi il PIC invia la richiesta al modulo SP1circa il valore della variabile level e utilizza la tec-nica PWM già descritta nell’altra demo per gene-rare la tensione analogica richiesta.

CO

RSO

SITE

PLAY

ER

Elettronica In - aprile 2004 55

Per iil

Il modulo SitePlayer presentato all’interno del Corso è disponibile già mon-tato e collaudato (cod. 8200-SP1) al prezzo di Euro 42,00: il modulo imple-menta un Web Server, un controllore Ethernet 10baseT, una memoria Flashin cui inserire le pagine Web e un dispositivo di interfacciamento seriale.

MATERIALE

Per imparare a lavorare con il SitePlayer è disponibile in scatola di mon-taggio una demoboard/programmatore (cod. FT497K) al prezzo di Euro48,00. La scheda implementa un PIC16F876 e presenta le seguenti risor-se: 8 led, dip-switch 8 poli, trimmer, sensore di temperatura, uscita PWM,uscita analogica, connettore Ethernet, connettore per programmazionein-circuit del PIC. Il kit comprende tutti i componenti e i listati dimostra-tivi a livello sorgente (sorgenti Basic per PIC; pagine HTML; file di defi-nizione SPD); il kit non comprende il modulo SitePlayer, l’alimentatore darete esterno e il programmatore di PIC (cod. FT386K). Tutti i prezzi indi-cati sono da intendersi IVA inclusa.

Il materiale va richiesto a: Futura Elettronica, V.le Kennedy 96, 20027 Rescaldina (MI)Tel: 0331-576139 ~ Fax: 0331-466686 ~ http://www.futuranet.it

continuazione Demo 9: Listato BasicPause 10Serout TX232,T9600,[192]Pause 5Serout TX232,T9600,[INDIRIZZO]Return

‘Routine di lettura di un byte ‘(dopo aver inviato SENDREADREQUEST)‘In uscita: DATOIN, FLAGOK = 1 se ‘è andata a buon fine la‘lettura, altrimenti 0 se è andato in‘timeout (300 msec)READDATO:

FLAGOK = 0Serin RX232,T9600,300,READDATO1,DATOINFLAGOK = 1Return

READDATO1:

FLAGOK = 0Return

‘Routine di configurazione modulo PWM

CCPCONFIG:

CCP1CON = %00001100Return

TIMER2CONFIG:

T2CON = %00000101 ‘Timer2 ON‘Prescaler /4

Return

PR2CONFIG:

PR2 = 254Return

File Demo9.bas