Progettazione e sviluppo di una wireless sensor network per la localizzazione di una sorgente acustica
Available from
Luca Invernizzi's profile on Mendeley.
Page 1
Progettazione e sviluppo di una wireless sensor network per la localizzazione di una sorgente acustica
Universita degli Studi di Pisa
Facolta di Ingegneria
Corso di Laurea Triennale in
Ingegneria Informatica
Progettazione e sviluppo di una
wireless sensor network per la
localizzazione di una sorgente
acustica
Candidato:
Luca Invernizzi
Relatori:
Prof. Gigliola Vaglini
Prof. Alessio Bechini
Prof. Giorgio Buttazzo
Anno Accademico 2006/07
Facolta di Ingegneria
Corso di Laurea Triennale in
Ingegneria Informatica
Progettazione e sviluppo di una
wireless sensor network per la
localizzazione di una sorgente
acustica
Candidato:
Luca Invernizzi
Relatori:
Prof. Gigliola Vaglini
Prof. Alessio Bechini
Prof. Giorgio Buttazzo
Anno Accademico 2006/07
Page 3
Prefazione
Nel campo delle telecomunicazioni, per localizzare un generico target sono
possibili principalmente tre metodologie:
triangolazione, che sfrutta l'angolo di arrivo del segnale sul ricevitore
trilaterazione, che si basa sulla distanza tra stazioni ed obiettivo 1
multilaterazione, anche denominata hyperbolic positioning, che si fonda
sulla conoscenza della dierenza di tempo di arrivo (time dierence of
arrival, TDOA) di un'onda emessa dall'obiettivo e ricevuta da quattro
o piu stazioni 2
L'ultima di queste e storicamente la piu utilizzata.
Durante la seconda guerra mondiale, agli albori dei sistemi di localizzazione,
sono stati sviluppati l'inglese DECCA ? e lo statunitense GEE (poi evolu-
tosi nel piu famoso LORAN?), entrambi basati sul principio della multila-
terazione inversa3. Questi capostipiti stanno oramai diventando obsoleti4,
soppiantati dai piu moderni sistemi GPS (statunitense), GLONASS (russo)
e GALILEO (europeo) per il positioning via satellite. Alla base del principio
di funzionamento di questi ultimi, tuttavia, nonstante l'enorme balzo tecno-
logico delle tecniche d'analisi dei segnali, vi e ancora la multilaterazione.
1Solitamente misurata grazie alla relazione quadratica tra la diminuzione dell'intensita
del segnale e la distanza
2Il termine viene utilizzato anche nel caso in cui si localizzi un ricevitore misurando il
TDOA di un segnale trasmesso da tre o piu trasmettitori sincronizzati (multilaterazione
inversa).
3Si veda la nota ??
4L'utimo radiofaro DECCA e stato spento nel 2000, mentre il LORAN e tuttora in
funzione, ma in rapido declino.
iii
Nel campo delle telecomunicazioni, per localizzare un generico target sono
possibili principalmente tre metodologie:
triangolazione, che sfrutta l'angolo di arrivo del segnale sul ricevitore
trilaterazione, che si basa sulla distanza tra stazioni ed obiettivo 1
multilaterazione, anche denominata hyperbolic positioning, che si fonda
sulla conoscenza della dierenza di tempo di arrivo (time dierence of
arrival, TDOA) di un'onda emessa dall'obiettivo e ricevuta da quattro
o piu stazioni 2
L'ultima di queste e storicamente la piu utilizzata.
Durante la seconda guerra mondiale, agli albori dei sistemi di localizzazione,
sono stati sviluppati l'inglese DECCA ? e lo statunitense GEE (poi evolu-
tosi nel piu famoso LORAN?), entrambi basati sul principio della multila-
terazione inversa3. Questi capostipiti stanno oramai diventando obsoleti4,
soppiantati dai piu moderni sistemi GPS (statunitense), GLONASS (russo)
e GALILEO (europeo) per il positioning via satellite. Alla base del principio
di funzionamento di questi ultimi, tuttavia, nonstante l'enorme balzo tecno-
logico delle tecniche d'analisi dei segnali, vi e ancora la multilaterazione.
1Solitamente misurata grazie alla relazione quadratica tra la diminuzione dell'intensita
del segnale e la distanza
2Il termine viene utilizzato anche nel caso in cui si localizzi un ricevitore misurando il
TDOA di un segnale trasmesso da tre o piu trasmettitori sincronizzati (multilaterazione
inversa).
3Si veda la nota ??
4L'utimo radiofaro DECCA e stato spento nel 2000, mentre il LORAN e tuttora in
funzione, ma in rapido declino.
iii
Page 4
iv PREFAZIONE
La sua applicazione non e pero limitata solo a sistemi di posizionamento di
veicoli (quindi di target collaborativi5), ma anche di oggetti/eventi non col-
laborativi (e.g. la determinazione dell'epicentro dei terremoti con la misura
del TDOA).
Si puo' quindi aermare che la multilaterazione e una delle migliori tecniche
di localizzazione. La questione semmai si pone su come valutare il TDOA in
modo ottimale.
Nello corso di questo lavoro di tesi si e progettato e sviluppato un'ap-
plicazione embedded di multilaterazione diretta di una sorgente sonora non
collaborativa, eettuata grazie a quattro stazioni riceventi connesse via ra-
dio. Si e scelto di misurare il TDOA mediante la correlazione tra le forme
d'onda ricevute.
La progettazione si e svolta con l'obbiettivo che tale prodotto possa essere
utilizzato sia come sistema a se stante sia come modulo di un progetto piu
complesso (e.g. mutua triangolazione di sonde robotiche o come indicatore
posizionale omnidirezionale di massima per sistemi di localizzazione piu pre-
cisi ma piu onerosi in termini di potenza di calcolo ed, in genere, direzionali).
Nella stesura di questo documento si e presunto che il lettore sia gia a
conoscenza del lavoro di tesi di Dario Cazzaro?, che descrive in dettaglio
l'hardware del sistema.
5Si intenda con l'aggettivo \collaborativo" la presenza di un target che partecipa
attivamente al processo di localizzazione.
La sua applicazione non e pero limitata solo a sistemi di posizionamento di
veicoli (quindi di target collaborativi5), ma anche di oggetti/eventi non col-
laborativi (e.g. la determinazione dell'epicentro dei terremoti con la misura
del TDOA).
Si puo' quindi aermare che la multilaterazione e una delle migliori tecniche
di localizzazione. La questione semmai si pone su come valutare il TDOA in
modo ottimale.
Nello corso di questo lavoro di tesi si e progettato e sviluppato un'ap-
plicazione embedded di multilaterazione diretta di una sorgente sonora non
collaborativa, eettuata grazie a quattro stazioni riceventi connesse via ra-
dio. Si e scelto di misurare il TDOA mediante la correlazione tra le forme
d'onda ricevute.
La progettazione si e svolta con l'obbiettivo che tale prodotto possa essere
utilizzato sia come sistema a se stante sia come modulo di un progetto piu
complesso (e.g. mutua triangolazione di sonde robotiche o come indicatore
posizionale omnidirezionale di massima per sistemi di localizzazione piu pre-
cisi ma piu onerosi in termini di potenza di calcolo ed, in genere, direzionali).
Nella stesura di questo documento si e presunto che il lettore sia gia a
conoscenza del lavoro di tesi di Dario Cazzaro?, che descrive in dettaglio
l'hardware del sistema.
5Si intenda con l'aggettivo \collaborativo" la presenza di un target che partecipa
attivamente al processo di localizzazione.
Page 5
Sommario
Dopo una breve introduzione all'argomento (capitolo ??), si passa ad analiz-
zare il funzionamento del processo di multilaterazione, i diversi metodi per
applicarlo, i suoi limiti ed il suo dimensionamento ( capitolo ??). Nel capi-
tolo successivo (capitolo ??) si introduce l'implementazione adottata, sia sul
piano hardware su quello software.
I successivi capitoli approfondiscono gli aspetti piu signicativi del soft-
ware scritto. Nel ?? si descrive la connessione seriale con il computer, nel ??
il collegamento wireless tra i nodi della rete e nel ?? la registrazione del suono.
Nell'ultimo capitolo prima delle conclusioni, (capitolo ??) si spiega, inne, il
funzionamento dei task che implementano l'algoritmo di multilaterazione.
v
Dopo una breve introduzione all'argomento (capitolo ??), si passa ad analiz-
zare il funzionamento del processo di multilaterazione, i diversi metodi per
applicarlo, i suoi limiti ed il suo dimensionamento ( capitolo ??). Nel capi-
tolo successivo (capitolo ??) si introduce l'implementazione adottata, sia sul
piano hardware su quello software.
I successivi capitoli approfondiscono gli aspetti piu signicativi del soft-
ware scritto. Nel ?? si descrive la connessione seriale con il computer, nel ??
il collegamento wireless tra i nodi della rete e nel ?? la registrazione del suono.
Nell'ultimo capitolo prima delle conclusioni, (capitolo ??) si spiega, inne, il
funzionamento dei task che implementano l'algoritmo di multilaterazione.
v
Page 6
vi SOMMARIO
Page 7
Indice
vii
vii
Page 8
viii INDICE
Page 9
Elenco delle gure
ix
ix
Page 10
x ELENCO DELLE FIGURE
Page 11
Capitolo 1
Introduzione
Scopo del presente lavoro e la progettazione di una rete wireless di localizza-
zione di un oggetto rumoroso. Tale target e passivo e non collaborativo 1 : la
sua posizione e stimata attraverso l'analisi delle onde sonore da esso emesse.
La rete e composta da quattro nodi che misurano le dierenze sul tempo
d'arrivo del segnale (TDOA,Time Dierence Of Arrival ) a ciascuno di essi.
Questa informazione permette di stimare la posizione della sorgente sonora
mediante un algoritmo di multilaterazione, descritto in seguito.
Questo sistema e in grado di eettuare una stima di posizionamento glo-
bale, grazie alla conoscenza delle coordinate assolute dei nodi della rete. Una
rappresentazione graca del funzionamento di questo sistema e riportata in
gura ??.
1Con \passivo\ si intenda un target che non risponde a sollecitazioni del sistema di
localizzazione (ad esempio, in un sistema radar il target e attivo in quanto ri
ette le
microonde inviategli dall'antenna ed e non collaborativo in quanto non collabora in modo
consapevole all'algoritmo, ma solo per le sue proprieta siche)
1
Introduzione
Scopo del presente lavoro e la progettazione di una rete wireless di localizza-
zione di un oggetto rumoroso. Tale target e passivo e non collaborativo 1 : la
sua posizione e stimata attraverso l'analisi delle onde sonore da esso emesse.
La rete e composta da quattro nodi che misurano le dierenze sul tempo
d'arrivo del segnale (TDOA,Time Dierence Of Arrival ) a ciascuno di essi.
Questa informazione permette di stimare la posizione della sorgente sonora
mediante un algoritmo di multilaterazione, descritto in seguito.
Questo sistema e in grado di eettuare una stima di posizionamento glo-
bale, grazie alla conoscenza delle coordinate assolute dei nodi della rete. Una
rappresentazione graca del funzionamento di questo sistema e riportata in
gura ??.
1Con \passivo\ si intenda un target che non risponde a sollecitazioni del sistema di
localizzazione (ad esempio, in un sistema radar il target e attivo in quanto ri
ette le
microonde inviategli dall'antenna ed e non collaborativo in quanto non collabora in modo
consapevole all'algoritmo, ma solo per le sue proprieta siche)
1
Page 13
Capitolo 2
Multilaterazione
La multilaterazione, anche denominata hyperbolic positioning, si fonda sul-
la conoscenza della dierenza di tempo di arrivo (time dierence of arrival,
TDOA) di un'onda emessa dall'obiettivo e ricevuta da quattro o piu stazioni.
2.1 Luogo geometrico
Un impulso emesso dalla sorgente arriva al ricevitore dopo un tempo di volo
proporzionale alla distanza percorsa1. Utilizzando due stazioni riceventi, si
puo facilmente misurare il TDOA dell'impulso, poiche l'impulso arrivera ad
esse in momenti dierenti 2. Il TDOA e direttamente proporzionale al modu-
lo della dierenza tra la distanza della sorgente dai ognuno dei due emettitori.
Il luogo dei punti che soddisfano questo vincolo e l'iperboloide3. Piu
precisamente, dato che si conosce anche quale delle due distanze e maggiore
dall'ordine di arrivo dei due impulsi ricevuti, i punti ammessi sono solo quelli
della falda dell'iperboloide piu vicina al ricevitore che per primo percepisce
1Si assume qui che il suono viaggi in linea retta (assenza di ri
essioni), ed a velocita
costante in tutte le direzioni (mezzo isotropo e uniforme).
2Il caso in cui l'emettitore sia equidistante dai ricevitori sara analizzato a parte.
3Da cui il nome di hyperbolic positioning
3
Multilaterazione
La multilaterazione, anche denominata hyperbolic positioning, si fonda sul-
la conoscenza della dierenza di tempo di arrivo (time dierence of arrival,
TDOA) di un'onda emessa dall'obiettivo e ricevuta da quattro o piu stazioni.
2.1 Luogo geometrico
Un impulso emesso dalla sorgente arriva al ricevitore dopo un tempo di volo
proporzionale alla distanza percorsa1. Utilizzando due stazioni riceventi, si
puo facilmente misurare il TDOA dell'impulso, poiche l'impulso arrivera ad
esse in momenti dierenti 2. Il TDOA e direttamente proporzionale al modu-
lo della dierenza tra la distanza della sorgente dai ognuno dei due emettitori.
Il luogo dei punti che soddisfano questo vincolo e l'iperboloide3. Piu
precisamente, dato che si conosce anche quale delle due distanze e maggiore
dall'ordine di arrivo dei due impulsi ricevuti, i punti ammessi sono solo quelli
della falda dell'iperboloide piu vicina al ricevitore che per primo percepisce
1Si assume qui che il suono viaggi in linea retta (assenza di ri
essioni), ed a velocita
costante in tutte le direzioni (mezzo isotropo e uniforme).
2Il caso in cui l'emettitore sia equidistante dai ricevitori sara analizzato a parte.
3Da cui il nome di hyperbolic positioning
3
Page 14
4 CAPITOLO 2. MULTILATERAZIONE
Figura 2.1: Iperboloide a due falde
il segnale nel caso a due falde (gura ??) o, comunque, di solo meta 4 dell'
iperboloide in quello a una falda (gura ??).
Si consideri ora di aggiungere un terzo ricevitore, cos da ottenere una
seconda misura di TDOA. Questo, descrivendo un nuovo iperboloide, limite-
rebbe i punti ammissibili a quelli che si trovano sulla curva di intersezione tra
le due superci. Si puo obbiettare che l'aggiunta di un terzo ricevitore intro-
duce non uno ma due TDOA (uno per ogni stazione gia presente). Tuttavia,
dato che queste tre misure non sono indipendenti (la somma dei due valori
minori da come risultato il terzo), il paraboloide che ne deriva intersechera
gli altri due sulla curva che essi gia identicano.
Se viene ora aggiunto un quarto ricevitore, il nuovo paraboloide identi-
chera un solo punto su quella curva5. La sorgente e quindi localizzabile
4Ovvero dei punti ottenuti dividendo l'iperboloide con la supercie ad esso
perpendicolare e passante per l'asse del segmento denito dalle due stazioni
5Vi sono alcuni casi particolari, qui brevemente descritti. Se due ricevitori si trovano
alla stessa distanza dalla sorgente, ovvero sulla stessa sfera centrata su quest'ultima, allora
identicano una supercie piana che passa per all'asse del segmento che unisce i due punti
ed e ortogonale ad esso, ovvero del luogo dei punti equidistanti da essi.
Se tutti i ricevitori si trovano sulla stessa sfera il punto e comunque determinato, poiche
Figura 2.1: Iperboloide a due falde
il segnale nel caso a due falde (gura ??) o, comunque, di solo meta 4 dell'
iperboloide in quello a una falda (gura ??).
Si consideri ora di aggiungere un terzo ricevitore, cos da ottenere una
seconda misura di TDOA. Questo, descrivendo un nuovo iperboloide, limite-
rebbe i punti ammissibili a quelli che si trovano sulla curva di intersezione tra
le due superci. Si puo obbiettare che l'aggiunta di un terzo ricevitore intro-
duce non uno ma due TDOA (uno per ogni stazione gia presente). Tuttavia,
dato che queste tre misure non sono indipendenti (la somma dei due valori
minori da come risultato il terzo), il paraboloide che ne deriva intersechera
gli altri due sulla curva che essi gia identicano.
Se viene ora aggiunto un quarto ricevitore, il nuovo paraboloide identi-
chera un solo punto su quella curva5. La sorgente e quindi localizzabile
4Ovvero dei punti ottenuti dividendo l'iperboloide con la supercie ad esso
perpendicolare e passante per l'asse del segmento denito dalle due stazioni
5Vi sono alcuni casi particolari, qui brevemente descritti. Se due ricevitori si trovano
alla stessa distanza dalla sorgente, ovvero sulla stessa sfera centrata su quest'ultima, allora
identicano una supercie piana che passa per all'asse del segmento che unisce i due punti
ed e ortogonale ad esso, ovvero del luogo dei punti equidistanti da essi.
Se tutti i ricevitori si trovano sulla stessa sfera il punto e comunque determinato, poiche
Page 15
2.2. MISURA DEL TDOA 5
Figura 2.2: Iperboloide ad una falda
univocamente nelle tre dimensioni spaziali con quattro ricevitori.
Gli errori di misurazione del TDOA implicano che maggiore accuratezza
puo essere ottenuta utilizzando piu ricevitori. In teoria, date N stazioni,
gli N 1 iperboloidi dovrebbero intersecarsi in un punto. Tuttavia, questo
raramente accade: la soluzione del problema puo essere trovata utilizzando
una tra le tecniche di ottimizzazione comuni (ad esempio il metodo dei minimi
quadrati).
2.2 Misura del TDOA
La valutazione del TDOA si puo eettuare principalmente in due modalita:
soglia il primo host che riceve il segnale oltre una certa soglia segnala agli
altri di cominciare a misurare il ritardo di arrivo del segnale che ha
superato la soglia ai loro sensori.
quattro punti (avendo l'accortezza di non prenderli coplanari) identicano univocamente
una sfera. La sorgente sara nel centro di quest'ultima.
Figura 2.2: Iperboloide ad una falda
univocamente nelle tre dimensioni spaziali con quattro ricevitori.
Gli errori di misurazione del TDOA implicano che maggiore accuratezza
puo essere ottenuta utilizzando piu ricevitori. In teoria, date N stazioni,
gli N 1 iperboloidi dovrebbero intersecarsi in un punto. Tuttavia, questo
raramente accade: la soluzione del problema puo essere trovata utilizzando
una tra le tecniche di ottimizzazione comuni (ad esempio il metodo dei minimi
quadrati).
2.2 Misura del TDOA
La valutazione del TDOA si puo eettuare principalmente in due modalita:
soglia il primo host che riceve il segnale oltre una certa soglia segnala agli
altri di cominciare a misurare il ritardo di arrivo del segnale che ha
superato la soglia ai loro sensori.
quattro punti (avendo l'accortezza di non prenderli coplanari) identicano univocamente
una sfera. La sorgente sara nel centro di quest'ultima.
Page 16
6 CAPITOLO 2. MULTILATERAZIONE
analisi del segnale il TDOA e pari al valore di oset tra i segnali per il qua-
le la correlazione tra di essi e massima (ovvero la loro\sovrapposizione"
e migliore).
Il metodo a soglia, di piu semplice applicazione, e tuttavia legato in-
dissolubilmente a diversi problemi, come rilevato in ???. I piu importanti
sono:
1. Ritardo tra la ricezione della soglia dal master e l'inizio del conteggio
da parte degli slave
2. Diminuzione dell'intensita del segnale all'aumentare della distanza: gli
slave lontani potrebbero non riconoscere il segnale di soglia poiche non
sucientemente intenso
3. Forte dipendenza dal rumore e dal riverbero6
Il metodo a correlazione supera molti di questi problemi, poiche la determi-
nazione del TDOA non dipende da un singolo valore del segnale ma dal suo
sviluppo nel tempo. Non e sensibile al problema ?? poiche esso non dipende
dalla ricezione di un fronte ma dalla ricerca della migliore \sovrapposizio-
ne" possibile delle forme d'onda da confrontare. Per il medesimo motivo,
lo smorzamento, purche l'onda non sia distorta, non ne incia le prestazioni
(problema ??). Il rumore (problema ??) deteriora in parte i risultati ma non
causa, come nel caso a soglia, la completa assenza di percezione del TDOA
(cosa che accade invece quando la sovrapposizione segnale{rumore fa scatta-
re la soglia, che non sarebbe stata raggiunta dal solo segnale).
La correlazione rimane tuttavia molto sensibile al riverbero, poiche esso
altro non e che la sovrapposizione al segnale di una sua copia attenuata e
translata nel tempo. L'oset e diverso per ogni stazione e dipende dalla
sua posizione geometrica rispetto alle fonti degli echi: questa dierenza di
condizioni dei ricevitori puo essere fonte di errori7.
6Una soluzione al problema del riverbero per sistemi a soglia e riportata in ?: si tratta
sostanzialmente di variare dinamicamente la soglia per scartare gli echi.
7La soluzione al problema del riverbero esposta in ? non puo essere applicata, in quanto
e vincolante che il sistema sia a soglia.
analisi del segnale il TDOA e pari al valore di oset tra i segnali per il qua-
le la correlazione tra di essi e massima (ovvero la loro\sovrapposizione"
e migliore).
Il metodo a soglia, di piu semplice applicazione, e tuttavia legato in-
dissolubilmente a diversi problemi, come rilevato in ???. I piu importanti
sono:
1. Ritardo tra la ricezione della soglia dal master e l'inizio del conteggio
da parte degli slave
2. Diminuzione dell'intensita del segnale all'aumentare della distanza: gli
slave lontani potrebbero non riconoscere il segnale di soglia poiche non
sucientemente intenso
3. Forte dipendenza dal rumore e dal riverbero6
Il metodo a correlazione supera molti di questi problemi, poiche la determi-
nazione del TDOA non dipende da un singolo valore del segnale ma dal suo
sviluppo nel tempo. Non e sensibile al problema ?? poiche esso non dipende
dalla ricezione di un fronte ma dalla ricerca della migliore \sovrapposizio-
ne" possibile delle forme d'onda da confrontare. Per il medesimo motivo,
lo smorzamento, purche l'onda non sia distorta, non ne incia le prestazioni
(problema ??). Il rumore (problema ??) deteriora in parte i risultati ma non
causa, come nel caso a soglia, la completa assenza di percezione del TDOA
(cosa che accade invece quando la sovrapposizione segnale{rumore fa scatta-
re la soglia, che non sarebbe stata raggiunta dal solo segnale).
La correlazione rimane tuttavia molto sensibile al riverbero, poiche esso
altro non e che la sovrapposizione al segnale di una sua copia attenuata e
translata nel tempo. L'oset e diverso per ogni stazione e dipende dalla
sua posizione geometrica rispetto alle fonti degli echi: questa dierenza di
condizioni dei ricevitori puo essere fonte di errori7.
6Una soluzione al problema del riverbero per sistemi a soglia e riportata in ?: si tratta
sostanzialmente di variare dinamicamente la soglia per scartare gli echi.
7La soluzione al problema del riverbero esposta in ? non puo essere applicata, in quanto
e vincolante che il sistema sia a soglia.
Page 17
2.3. TIPOLOGIE DI SEGNALI 7
Se il rumore di fondo risultasse troppo elevato, una soluzione puo essere il
sottrarre al segnale il suo valore medio e considerarne solo le parti in cui
il risultato risulta positivo, azzerando le altre. La via piu semplice rimane
mantenere un elevato SNR (rapporto segnale rumore), anche il rumore
risulti trascurabile.
In questo lavoro si e scelto di utilizzare la correlazione tra i segnali per la
misura del TDOA.
2.3 Tipologie di segnali
Il TDOA e dunque pari all'ascissa alla quale la correlazione ha il suo massimo.
Questa valutazione e tanto migliore quanto piu e maggiore il rapporto tra il
primo e il secondo massimo della correlazione. Per questo il segnale ottimo
per questo tipo della valutazione del TDOA e il chirp, un segnale sinusoidale
la cui frequenza varia monotonicamente nel tempo (in genere si utilizzano
chirp lineari o esponenziali). I segnali peggiori sono quelli periodici, per
i quali c'e un massimo per ogni periodo del segnale (e sono tutti uguali).
Sono quindi ammissibili tutti i TDOA pari all'ascissa dei massimi, distanti
un numero intero di spazi percorsi in un periodo del segnale. Ritornando
alla modellizzazione geometrica della multilaterazione come intersezione di
paraboloidi, si vede che ora una coppia di stazioni non descrive piu un solo
paraboloide ma una serie di questi, distanti lo spazio percorso dall'onda in
un periodo (si veda la gura ??, in due dimensioni).
In natura, tuttavia, vi sono pochi segnali di tal sorta: i segnali periodici
hanno, in genere, durata limitata (il che consente una buona correlazione,
poiche la sovrapposizione delle onde e univoca), oppure non sono perfetta-
mente periodici. Alcune simulazioni eettuate sul sistema operativo real-time
S.Ha.R.K. ? hanno dimostrato che basta introdurre una piccola quantita di
rumore sul segnale emesso dalla sorgente per avere comunque un valutazione
del TDOA accettabile (in quanto il segnale non e piu periodico), anche se in
genere l'errore di valutazione nel caso di segnale periodico e maggiore.
Se il rumore di fondo risultasse troppo elevato, una soluzione puo essere il
sottrarre al segnale il suo valore medio e considerarne solo le parti in cui
il risultato risulta positivo, azzerando le altre. La via piu semplice rimane
mantenere un elevato SNR (rapporto segnale rumore), anche il rumore
risulti trascurabile.
In questo lavoro si e scelto di utilizzare la correlazione tra i segnali per la
misura del TDOA.
2.3 Tipologie di segnali
Il TDOA e dunque pari all'ascissa alla quale la correlazione ha il suo massimo.
Questa valutazione e tanto migliore quanto piu e maggiore il rapporto tra il
primo e il secondo massimo della correlazione. Per questo il segnale ottimo
per questo tipo della valutazione del TDOA e il chirp, un segnale sinusoidale
la cui frequenza varia monotonicamente nel tempo (in genere si utilizzano
chirp lineari o esponenziali). I segnali peggiori sono quelli periodici, per
i quali c'e un massimo per ogni periodo del segnale (e sono tutti uguali).
Sono quindi ammissibili tutti i TDOA pari all'ascissa dei massimi, distanti
un numero intero di spazi percorsi in un periodo del segnale. Ritornando
alla modellizzazione geometrica della multilaterazione come intersezione di
paraboloidi, si vede che ora una coppia di stazioni non descrive piu un solo
paraboloide ma una serie di questi, distanti lo spazio percorso dall'onda in
un periodo (si veda la gura ??, in due dimensioni).
In natura, tuttavia, vi sono pochi segnali di tal sorta: i segnali periodici
hanno, in genere, durata limitata (il che consente una buona correlazione,
poiche la sovrapposizione delle onde e univoca), oppure non sono perfetta-
mente periodici. Alcune simulazioni eettuate sul sistema operativo real-time
S.Ha.R.K. ? hanno dimostrato che basta introdurre una piccola quantita di
rumore sul segnale emesso dalla sorgente per avere comunque un valutazione
del TDOA accettabile (in quanto il segnale non e piu periodico), anche se in
genere l'errore di valutazione nel caso di segnale periodico e maggiore.
Page 18
8 CAPITOLO 2. MULTILATERAZIONE
Figura 2.3: Parabole ammissibili in presenza di segnali periodici
2.4 Algoritmo di localizzazione
L'algoritmo numerico di multilaterazione a partire da tre TDOA utilizzato
in questo lavoro e gia stato descritto in ? (pagine 15-188). L'estensione di
questo alle N stazioni si trova in ?.
Si descrive qui il metodo per ottenere i TDOA, la cui implementazione
verra esposta in dettaglio nel capitolo ??.
Si supponga di avere quattro stazioni riceventi collegate ad un generico bus
dati. Una di queste stazioni e master della rete, le altre slave.
1. In inizializzazione della rete, il master invia periodicamente messaggi
di sincronizzazione, in modo da imporre un clock comune ai nodi. Il
master interroga poi i nodi per valutare il loro stato: quando l'errore di
sincronizzazione scende sotto una certa soglia il master passa alla fase
successiva, continuando a spedire messaggi per il mantenimento della
sincronia. Si vengono quindi a generare degli slot temporali.
2. Il master segnala ai nodi di iniziare a registare, sovrascrivendo il buer
di ricezione ad ogni inizio di slot. Quando il master percepisce che il
segnale registrato supera un valore di soglia, segnala ai nodi di smettere
8Essendo importante per la comprensione dell'algoritmo di localizzazione, e stato
riportato nel paragrafo ??
Figura 2.3: Parabole ammissibili in presenza di segnali periodici
2.4 Algoritmo di localizzazione
L'algoritmo numerico di multilaterazione a partire da tre TDOA utilizzato
in questo lavoro e gia stato descritto in ? (pagine 15-188). L'estensione di
questo alle N stazioni si trova in ?.
Si descrive qui il metodo per ottenere i TDOA, la cui implementazione
verra esposta in dettaglio nel capitolo ??.
Si supponga di avere quattro stazioni riceventi collegate ad un generico bus
dati. Una di queste stazioni e master della rete, le altre slave.
1. In inizializzazione della rete, il master invia periodicamente messaggi
di sincronizzazione, in modo da imporre un clock comune ai nodi. Il
master interroga poi i nodi per valutare il loro stato: quando l'errore di
sincronizzazione scende sotto una certa soglia il master passa alla fase
successiva, continuando a spedire messaggi per il mantenimento della
sincronia. Si vengono quindi a generare degli slot temporali.
2. Il master segnala ai nodi di iniziare a registare, sovrascrivendo il buer
di ricezione ad ogni inizio di slot. Quando il master percepisce che il
segnale registrato supera un valore di soglia, segnala ai nodi di smettere
8Essendo importante per la comprensione dell'algoritmo di localizzazione, e stato
riportato nel paragrafo ??
Page 19
2.5. DIMENSIONAMENTO 9
di registrare al giungere del prossimo slot e di attendere l'invio del suo
buer via radio.
3. Il master invia loro il suo buer di registrazione e attende che i nodi
correlino il segnale da lui registrato con il loro, interrogandoli in polling.
4. I nodi segnalano al master l'oset tra i due segnali (ovvero il TDOA
nodo{master).
5. Il master calcola la stima della posizione della sorgente applicando
l'algoritmo numerico(si veda il paragrafo ??).
Si e pensata e simulata una variante di questo algoritmo, ma non e stata
implementata in quanto di piu complessa realizzazione. In tale variante non
si prevede una divisione iniziale master-slave: diviene master il primo nodo
a percepire il superamento della soglia 9. L'algoritmo poi procede normal-
mente. In questo modo il master riceve il segnale meno deteriorato che,
campionato, inoltra agli altri nodi. La correlazione avviene quindi sempre
col miglior segnale possibile, migliorando i risultati (almeno in simulazione).
2.5 Dimensionamento
Si calcola ora il dimensionamento del sistema. La banda di frequenze di inte-
resse e quella sonora, ovvero [20; 2 105]Hz. La massima precisione possibile,
dovuta alle caratteristiche delle onde utilizzate, e dell'ordine di grandezza
dello spazio percorso in mezzo periodo da un'onda, ergo variera dagli 8:75 m
agli 8:75 mm. Dimensioneremo quindi il sistema in modo da avere una pre-
stazione poco superiore, cosicche non sia impiegata inutilmente potenza di
calcolo .
Considerando che l'area coperta dai microfoni sara minore di 3768 m2 (cir-
confernza di raggio 10 metri e centro nella sorgente) e dato che la velocita
delle onde sonore e di 343 ms , si ha che la precisione sara, utilizzando una
9In caso di percezione contemporanea ha la precedenza il nodo che possiede il token
radio (si veda il paragrafo ?? a pagina ??)
di registrare al giungere del prossimo slot e di attendere l'invio del suo
buer via radio.
3. Il master invia loro il suo buer di registrazione e attende che i nodi
correlino il segnale da lui registrato con il loro, interrogandoli in polling.
4. I nodi segnalano al master l'oset tra i due segnali (ovvero il TDOA
nodo{master).
5. Il master calcola la stima della posizione della sorgente applicando
l'algoritmo numerico(si veda il paragrafo ??).
Si e pensata e simulata una variante di questo algoritmo, ma non e stata
implementata in quanto di piu complessa realizzazione. In tale variante non
si prevede una divisione iniziale master-slave: diviene master il primo nodo
a percepire il superamento della soglia 9. L'algoritmo poi procede normal-
mente. In questo modo il master riceve il segnale meno deteriorato che,
campionato, inoltra agli altri nodi. La correlazione avviene quindi sempre
col miglior segnale possibile, migliorando i risultati (almeno in simulazione).
2.5 Dimensionamento
Si calcola ora il dimensionamento del sistema. La banda di frequenze di inte-
resse e quella sonora, ovvero [20; 2 105]Hz. La massima precisione possibile,
dovuta alle caratteristiche delle onde utilizzate, e dell'ordine di grandezza
dello spazio percorso in mezzo periodo da un'onda, ergo variera dagli 8:75 m
agli 8:75 mm. Dimensioneremo quindi il sistema in modo da avere una pre-
stazione poco superiore, cosicche non sia impiegata inutilmente potenza di
calcolo .
Considerando che l'area coperta dai microfoni sara minore di 3768 m2 (cir-
confernza di raggio 10 metri e centro nella sorgente) e dato che la velocita
delle onde sonore e di 343 ms , si ha che la precisione sara, utilizzando una
9In caso di percezione contemporanea ha la precedenza il nodo che possiede il token
radio (si veda il paragrafo ?? a pagina ??)
Page 20
10 CAPITOLO 2. MULTILATERAZIONE
frequenza di campionamento di 50K Hz:
343ms
50K samples
= 6:86
mm
sample
Il numero di campioni da prendere dovra essere superiore a:
10 m
6:86 mmsample
= 1500 samples
Che e il numero di campioni preso in un intervallo di tempo che consente
all'onda, partendo dalla sorgente, di uscire dall'area di interesse.
E opportuno che si registri per un tempo superiore rispetto a tale valore
minimo, cosicche la parte di segnale rilevata da tutti i nodi della rete sia
molto superiore alla parte registrata solo da alcuni di essi10.
2.6 Algoritmo numerico
Si mettano ora a sistema le quattro equazioni che descrivono le distanze dalla
sorgente in termini di coordinate cartesiane:
8
>>>><
>>>>:
(xs xa)2 + (ys ya)2 = r2a
(xs xb)2 + (ys yb)2 = r2b
(xs xc)2 + (ys yc)2 = r2c
(xs xd)2 + (ys yd)2 = r2d
Scrivendo tutte le distanze in funzione della distanza del nodo master:
8
>>>><
>>>>:
(xs xa)2 + (ys ya)2 = r2a
(xs xb)2 + (ys yb)2 = (ra + rab)2
(xs xc)2 + (ys yc)2 = (ra + rac)2
(xs xd)2 + (ys yd)2 = (ra + rad)2
10Anche se il segnale pre-threshold e a bassa intensita, tuttavia esso, essendo maggior-
mente presente nei nodi piu lontani (che ricevono la soglia piu tardi), causa un'errore di
valutazione del TDOA.
frequenza di campionamento di 50K Hz:
343ms
50K samples
= 6:86
mm
sample
Il numero di campioni da prendere dovra essere superiore a:
10 m
6:86 mmsample
= 1500 samples
Che e il numero di campioni preso in un intervallo di tempo che consente
all'onda, partendo dalla sorgente, di uscire dall'area di interesse.
E opportuno che si registri per un tempo superiore rispetto a tale valore
minimo, cosicche la parte di segnale rilevata da tutti i nodi della rete sia
molto superiore alla parte registrata solo da alcuni di essi10.
2.6 Algoritmo numerico
Si mettano ora a sistema le quattro equazioni che descrivono le distanze dalla
sorgente in termini di coordinate cartesiane:
8
>>>><
>>>>:
(xs xa)2 + (ys ya)2 = r2a
(xs xb)2 + (ys yb)2 = r2b
(xs xc)2 + (ys yc)2 = r2c
(xs xd)2 + (ys yd)2 = r2d
Scrivendo tutte le distanze in funzione della distanza del nodo master:
8
>>>><
>>>>:
(xs xa)2 + (ys ya)2 = r2a
(xs xb)2 + (ys yb)2 = (ra + rab)2
(xs xc)2 + (ys yc)2 = (ra + rac)2
(xs xd)2 + (ys yd)2 = (ra + rad)2
10Anche se il segnale pre-threshold e a bassa intensita, tuttavia esso, essendo maggior-
mente presente nei nodi piu lontani (che ricevono la soglia piu tardi), causa un'errore di
valutazione del TDOA.
Page 21
2.6. ALGORITMO NUMERICO 11
In questo modo le uniche variabili incognite sono xs, ys e ra. Sviluppando i
quadrati si ha:
8
>>>><
>>>>:
x2s 2xaxs + x
2
a + y
2
s 2ysya + y
2
a r
2
a = 0
x2s 2xbxs + x
2
b + y
2
s 2ysyb + y
2
b r
2
a 2rabra r
2
ab = 0
x2s 2xcxs + x
2
c + y
2
s 2ysyc + y
2
c r
2
a 2racra r
2
ac = 0
x2s 2xdxs + x
2
d + y
2
s 2ysyd + y
2
d r
2
a 2radra r
2
ad = 0
Facendo la dierenza tra la prima equazione e ognuna delle altre, si ottiene
un sistema lineare di 3 equazioni in 3 incognite:
8
><
>:
x2a + 2(xb xa)xs x
2
b + y
2
a + 2(yb ya)ys y
2
b + 2rabra + r
2
ab = 0
x2a + 2(xc xa)xs x
2
c + y
2
a + 2(yc ya)ys y
2
c + 2racra + r
2
ac = 0
x2a + 2(xd xa)xs x
2
d + y
2
a + 2(yd ya)ys y
2
d + 2radra + r
2
ad = 0
che scritto in maniera piu compatta diventa:
M ~x = ~k ~r
dove:
M =
2
6
4
2(xb xa) 2(yb ya) 2rab
2(xc xa) 2(yc ya) 2rac
2(xd xa) 2(yd ya) 2rab
3
7
5
~x =
2
6
4
xs
ys
ra
3
7
5
~k =
2
6
4
x2b + y
2
b x
2
a y
2
a
x2c + y
2
c x
2
a y
2
a
x2d + y
2
d x
2
a y
2
a
3
7
5
~r =
2
6
4
r2ab
r2ac
r2ad
3
7
5
In questo modo le uniche variabili incognite sono xs, ys e ra. Sviluppando i
quadrati si ha:
8
>>>><
>>>>:
x2s 2xaxs + x
2
a + y
2
s 2ysya + y
2
a r
2
a = 0
x2s 2xbxs + x
2
b + y
2
s 2ysyb + y
2
b r
2
a 2rabra r
2
ab = 0
x2s 2xcxs + x
2
c + y
2
s 2ysyc + y
2
c r
2
a 2racra r
2
ac = 0
x2s 2xdxs + x
2
d + y
2
s 2ysyd + y
2
d r
2
a 2radra r
2
ad = 0
Facendo la dierenza tra la prima equazione e ognuna delle altre, si ottiene
un sistema lineare di 3 equazioni in 3 incognite:
8
><
>:
x2a + 2(xb xa)xs x
2
b + y
2
a + 2(yb ya)ys y
2
b + 2rabra + r
2
ab = 0
x2a + 2(xc xa)xs x
2
c + y
2
a + 2(yc ya)ys y
2
c + 2racra + r
2
ac = 0
x2a + 2(xd xa)xs x
2
d + y
2
a + 2(yd ya)ys y
2
d + 2radra + r
2
ad = 0
che scritto in maniera piu compatta diventa:
M ~x = ~k ~r
dove:
M =
2
6
4
2(xb xa) 2(yb ya) 2rab
2(xc xa) 2(yc ya) 2rac
2(xd xa) 2(yd ya) 2rab
3
7
5
~x =
2
6
4
xs
ys
ra
3
7
5
~k =
2
6
4
x2b + y
2
b x
2
a y
2
a
x2c + y
2
c x
2
a y
2
a
x2d + y
2
d x
2
a y
2
a
3
7
5
~r =
2
6
4
r2ab
r2ac
r2ad
3
7
5
Page 22
12 CAPITOLO 2. MULTILATERAZIONE
Quindi si puo ottenere direttamente il vettore di incognite ~x:
~x = M 1 (~k + ~r) = M 1 ~k +M 1 ~r
Quindi si puo ottenere direttamente il vettore di incognite ~x:
~x = M 1 (~k + ~r) = M 1 ~k +M 1 ~r
Page 23
Capitolo 3
Descrizione generale del
sistema di multilaterazione
Il sistema implementato e composto da quattro nodi che collaborano nell'ef-
fettuare l'algoritmo di multilaterazione descritto nel paragrafo ??. Verra qui
brevemente introdotta la struttura del sistema, anche si abbia una visio-
ne d'insieme durante la lettura dei capitoli successivi, che approfondiscono
ciasuno un determinato aspetto del sistema.
3.1 Descrizione hardware
Ciascun nodo e composto da una scheda FLEX1, ideata per aiutare la prototi-
pizzazione veloce. Tale scheda contiene un microcontrollore DSPIC33FJ256MC710
prodotto da Microchip ?, capace di compiere in hardware istruzioni di digital
signal processing. Su di essa e stata montata una daughter board, prodotta
appositamente per questa applicazione. Essa contiene:
socket per transciever wireless MIPOT ?
microfono electret, suo circuito di amplicazione e ltro
porta di comunicazione seriale
1Prodotta da Evidence in collaborazione con Embedded Solution, e descritta in ?,
mentre il suo schematico si trova in ?
13
Descrizione generale del
sistema di multilaterazione
Il sistema implementato e composto da quattro nodi che collaborano nell'ef-
fettuare l'algoritmo di multilaterazione descritto nel paragrafo ??. Verra qui
brevemente introdotta la struttura del sistema, anche si abbia una visio-
ne d'insieme durante la lettura dei capitoli successivi, che approfondiscono
ciasuno un determinato aspetto del sistema.
3.1 Descrizione hardware
Ciascun nodo e composto da una scheda FLEX1, ideata per aiutare la prototi-
pizzazione veloce. Tale scheda contiene un microcontrollore DSPIC33FJ256MC710
prodotto da Microchip ?, capace di compiere in hardware istruzioni di digital
signal processing. Su di essa e stata montata una daughter board, prodotta
appositamente per questa applicazione. Essa contiene:
socket per transciever wireless MIPOT ?
microfono electret, suo circuito di amplicazione e ltro
porta di comunicazione seriale
1Prodotta da Evidence in collaborazione con Embedded Solution, e descritta in ?,
mentre il suo schematico si trova in ?
13
Page 24
14 CAPITOLO 3. DESCRIZIONE GENERALE
alcuni led di debug
Tale hardware e descritto approfonditamente in ?. L'appendice ?? riporta
alcuni schematici ed una foto delle schede.
3.2 Descrizione software
Sul microcontrollore gira ERIKA2, un sistema operativo real-time per sistemi
embedded sviluppato da EVIDENCE in collaborazione con il laboratorio
CEIIC della Scuola Superiore Sant'Anna, distributo con licenza GPL nella
sua versione BASIC3.
3.2.1 Sistema operativo
Il sistema operativo ERIKA ENTERPRISE BASIC GPL segue lo stan-
dard automotive OSEK/VXD(?). Alcune delle sue caratteristiche principali,
signicative per questo progetto, sono:
Predicibilita ( in termini di tempo di esecuzione delle routine di sistema)
Footprint in memoria minimale, specialmente in RAM (per un esempio,
si veda la tabella ??)
Schedulazione Fixed-Priority
Processi periodici
Semafori (bloccanti e non bloccanti)
routine di risposta agli interrupt di tipo ISR2 secondo lo standard
OSEK
congurazione mono/multi stack e gestione della sua dimensione
Tale sistema operativo e composto da due layer:
2Acronimo di Embedded Real tIme Kernel Architecture.
3Per una breve introduzione si veda ?, per il manuale ?.
alcuni led di debug
Tale hardware e descritto approfonditamente in ?. L'appendice ?? riporta
alcuni schematici ed una foto delle schede.
3.2 Descrizione software
Sul microcontrollore gira ERIKA2, un sistema operativo real-time per sistemi
embedded sviluppato da EVIDENCE in collaborazione con il laboratorio
CEIIC della Scuola Superiore Sant'Anna, distributo con licenza GPL nella
sua versione BASIC3.
3.2.1 Sistema operativo
Il sistema operativo ERIKA ENTERPRISE BASIC GPL segue lo stan-
dard automotive OSEK/VXD(?). Alcune delle sue caratteristiche principali,
signicative per questo progetto, sono:
Predicibilita ( in termini di tempo di esecuzione delle routine di sistema)
Footprint in memoria minimale, specialmente in RAM (per un esempio,
si veda la tabella ??)
Schedulazione Fixed-Priority
Processi periodici
Semafori (bloccanti e non bloccanti)
routine di risposta agli interrupt di tipo ISR2 secondo lo standard
OSEK
congurazione mono/multi stack e gestione della sua dimensione
Tale sistema operativo e composto da due layer:
2Acronimo di Embedded Real tIme Kernel Architecture.
3Per una breve introduzione si veda ?, per il manuale ?.
Page 26
16 CAPITOLO 3. DESCRIZIONE GENERALE
sono utilizzati semafori in tutti i task.
Il sistema e composto da un task di gestione della connessione wireless a
massima priorita, da un task di gestione dell'algoritmo di multilaterazione a
media priorita e da un task periodico che funge da server per l'output sulla
connessione seriale a bassa priorita.
sono utilizzati semafori in tutti i task.
Il sistema e composto da un task di gestione della connessione wireless a
massima priorita, da un task di gestione dell'algoritmo di multilaterazione a
media priorita e da un task periodico che funge da server per l'output sulla
connessione seriale a bassa priorita.
Page 27
Capitolo 4
Comunicazione con il computer
Si e deciso di connettersi con il computer per la visualizzazione dei risultati
della multilaterazione e per il debug. Il bus di connessione scelto e quello
seriale, poiche il microcontrollore in utilizzo e predisposto per la connes-
sione seriale(possiede infatti un'interfaccia UART, Universal Asynchronous
Receiver/Transmitter ?). In particolare, il protocollo scelto e l'RS232.
4.1 Implementazione hardware
L'uscita della porta UART2 del microcontrollore (porta utilizzata per questa
connessione) e stata elevata in voltaggio da 3; 6V a 15V con l'ausilio di un
chip MAX233CPP (?) ad essa collegato, ed inne ad un soket seriale fem-
mina a 9 pin.
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
4.2 Implementazione software
Si e scelto di utilizzare un task per la gestione dell'output seriale dotato di
una coda di messaggi1.
1Il motivo di tale scelta sara illustrato in seguito nel paragrafo
17
Comunicazione con il computer
Si e deciso di connettersi con il computer per la visualizzazione dei risultati
della multilaterazione e per il debug. Il bus di connessione scelto e quello
seriale, poiche il microcontrollore in utilizzo e predisposto per la connes-
sione seriale(possiede infatti un'interfaccia UART, Universal Asynchronous
Receiver/Transmitter ?). In particolare, il protocollo scelto e l'RS232.
4.1 Implementazione hardware
L'uscita della porta UART2 del microcontrollore (porta utilizzata per questa
connessione) e stata elevata in voltaggio da 3; 6V a 15V con l'ausilio di un
chip MAX233CPP (?) ad essa collegato, ed inne ad un soket seriale fem-
mina a 9 pin.
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
4.2 Implementazione software
Si e scelto di utilizzare un task per la gestione dell'output seriale dotato di
una coda di messaggi1.
1Il motivo di tale scelta sara illustrato in seguito nel paragrafo
17
Page 28
18 CAPITOLO 4. COMUNICAZIONE CON IL COMPUTER
Il microcontrollore e stato programmato per utilizzare la porta UART2 a
38400 bps2, solo in trasmissione, con un bit di stop e senza CRC. La porta
ha un buer di quattro caratteri che, in seguito ad opportuna congurazione,
solleva un interrupt quando si svuota.
void RS232init(){
U2MODEbits.UEN=0b00; /*Only rx e tx are significant
* (no cts-rts)
*/
U2MODEbits.STSEL = 0; // 1-stop bit
U2MODEbits.PDSEL = 0; // No Parity, 8-data bits
U2MODEbits.ABAUD = 0; // Autobaud Disabled
U2MODEbits.BRGH = 0; // Low Speed mode
U2BRG = 5; // BAUD Rate Setting
U2STAbits.UTXISEL0 = 1; /* Interrupt after one Tx
* character is transmitted
*/
U2STAbits.UTXISEL1 = 0; //
IEC1bits.U2TXIE=1; // Interrupt capability set
IFS1bits.U2RXIF=0; // Interrupt flag cleared
IPC7bits.U2TXIP=3; // Interrupt priority
U2MODEbits.UARTEN = 1; // Enable UART
U2STAbits.UTXEN = 1; /* Enable UART Tx mode
* (usually is always on RX)
*/
}
Tale interrupt lancia una routine di risposta di tipo IRS23 (secondo lo
standard OSEK ?). La routine sblocca, tramite un semaforo, un task perio-
dico a bassa priorita che controlla se ci sono messaggi accodati sul buer di
2Si e quindi posto il registro BRG = 5 poiche in ? la Microchip, casa produttrice del
microcontrollore, sconsiglia di porre in tale registro un valore pari
3Una routine di risposta alle interruzioni di tipo IRS2 e in grado di chiamare le routine
di sistema che in
uenzano lo scheduling. Il suo termine e un punto di reschedulazione?
Il microcontrollore e stato programmato per utilizzare la porta UART2 a
38400 bps2, solo in trasmissione, con un bit di stop e senza CRC. La porta
ha un buer di quattro caratteri che, in seguito ad opportuna congurazione,
solleva un interrupt quando si svuota.
void RS232init(){
U2MODEbits.UEN=0b00; /*Only rx e tx are significant
* (no cts-rts)
*/
U2MODEbits.STSEL = 0; // 1-stop bit
U2MODEbits.PDSEL = 0; // No Parity, 8-data bits
U2MODEbits.ABAUD = 0; // Autobaud Disabled
U2MODEbits.BRGH = 0; // Low Speed mode
U2BRG = 5; // BAUD Rate Setting
U2STAbits.UTXISEL0 = 1; /* Interrupt after one Tx
* character is transmitted
*/
U2STAbits.UTXISEL1 = 0; //
IEC1bits.U2TXIE=1; // Interrupt capability set
IFS1bits.U2RXIF=0; // Interrupt flag cleared
IPC7bits.U2TXIP=3; // Interrupt priority
U2MODEbits.UARTEN = 1; // Enable UART
U2STAbits.UTXEN = 1; /* Enable UART Tx mode
* (usually is always on RX)
*/
}
Tale interrupt lancia una routine di risposta di tipo IRS23 (secondo lo
standard OSEK ?). La routine sblocca, tramite un semaforo, un task perio-
dico a bassa priorita che controlla se ci sono messaggi accodati sul buer di
2Si e quindi posto il registro BRG = 5 poiche in ? la Microchip, casa produttrice del
microcontrollore, sconsiglia di porre in tale registro un valore pari
3Una routine di risposta alle interruzioni di tipo IRS2 e in grado di chiamare le routine
di sistema che in
uenzano lo scheduling. Il suo termine e un punto di reschedulazione?
Page 29
4.2. IMPLEMENTAZIONE SOFTWARE 19
uscita verso la porta seriale e li pone in output.
Tale task funge quindi da server per la comunicazione di messaggi verso
il computer. Poiche il tempo di trasmissione di un dato non e trascurabile
rispetto agli altri tempi caratteristici del sistema , non e consigliabile, in un
generico task, scrivere direttamente sulla porta seriale . Scegliendo quella
via nel caso del task di gestione della radio, ad esempio, per ogni carattere
spedito in seriale se ne perderebbe potenzialmente uno nella connessione tra
i nodi , poiche le due velocita di trasmissione sono uguali. La denizione di
questo task e stata quindi una scelta obbligata4.
La descrizione di tale processo e riportata nell'appendice ?? a pagina ??
(task RS232Task).
4.2.1 Scelta dell'oscillatore
L'oscillatore principale (HXT, cristallo veloce) del microcontrollore, a 40
MHz, non e cos preciso da garantire l'emissione dei bits del protocollo RS232
con jitter sucientemente basso anche i dati vengano ricevuti correttamen-
te, cioe campionati in centro al bit sul bus seriale, da un normale computer5.
Pertanto, e stato necessario selezionare un dierente oscillatore del mi-
crocontrollore. Dopo acune prove, si e scelto l'oscillatore RC, a 7 MIPS, con
il PLL (phase locked loop, il controllo in retroazione sull'errore di frequenza)
disabilitato, che e tra l'altro dotato di un registro di regolazione ne6.
4Si noti che la possibilita di utilizzare una connessione ad alta velocita con il computer
e preclusa dal fatto che il microcontrollore, seppure predisposto per tale connessione, ha
un errore nel silicio che non permette il settaggio di un registro necessario a questo scopo
? .
5Questo e un problema noto alla Microchip, segnalato in ?. I caratteri vengono letti
con i bit shiftati a sinistra di una posizione.
6Secondo il ? anche questo oscillatore spesso non rispetta le speciche, tuttavia questo
non ha causato problemi.
uscita verso la porta seriale e li pone in output.
Tale task funge quindi da server per la comunicazione di messaggi verso
il computer. Poiche il tempo di trasmissione di un dato non e trascurabile
rispetto agli altri tempi caratteristici del sistema , non e consigliabile, in un
generico task, scrivere direttamente sulla porta seriale . Scegliendo quella
via nel caso del task di gestione della radio, ad esempio, per ogni carattere
spedito in seriale se ne perderebbe potenzialmente uno nella connessione tra
i nodi , poiche le due velocita di trasmissione sono uguali. La denizione di
questo task e stata quindi una scelta obbligata4.
La descrizione di tale processo e riportata nell'appendice ?? a pagina ??
(task RS232Task).
4.2.1 Scelta dell'oscillatore
L'oscillatore principale (HXT, cristallo veloce) del microcontrollore, a 40
MHz, non e cos preciso da garantire l'emissione dei bits del protocollo RS232
con jitter sucientemente basso anche i dati vengano ricevuti correttamen-
te, cioe campionati in centro al bit sul bus seriale, da un normale computer5.
Pertanto, e stato necessario selezionare un dierente oscillatore del mi-
crocontrollore. Dopo acune prove, si e scelto l'oscillatore RC, a 7 MIPS, con
il PLL (phase locked loop, il controllo in retroazione sull'errore di frequenza)
disabilitato, che e tra l'altro dotato di un registro di regolazione ne6.
4Si noti che la possibilita di utilizzare una connessione ad alta velocita con il computer
e preclusa dal fatto che il microcontrollore, seppure predisposto per tale connessione, ha
un errore nel silicio che non permette il settaggio di un registro necessario a questo scopo
? .
5Questo e un problema noto alla Microchip, segnalato in ?. I caratteri vengono letti
con i bit shiftati a sinistra di una posizione.
6Secondo il ? anche questo oscillatore spesso non rispetta le speciche, tuttavia questo
non ha causato problemi.
Page 30
20 CAPITOLO 4. COMUNICAZIONE CON IL COMPUTER
4.2.2 Accorgimenti
Il task RS232Task che funge da server per la comunicazione seriale ha priorita
inferiore ai task che ne sfruttano i servigi. Per questo motivo, non e possi-
bile che vi sia una condizione di preemption per la quale il task RS232Task
possa leggere un messaggio da trasmettere mentre qualche altro task lo sta
scrivendo: non e quindi necessario l'utilizzo di un semaforo di mutex.
4.2.2 Accorgimenti
Il task RS232Task che funge da server per la comunicazione seriale ha priorita
inferiore ai task che ne sfruttano i servigi. Per questo motivo, non e possi-
bile che vi sia una condizione di preemption per la quale il task RS232Task
possa leggere un messaggio da trasmettere mentre qualche altro task lo sta
scrivendo: non e quindi necessario l'utilizzo di un semaforo di mutex.
Page 31
Capitolo 5
Rete di connessione
La connessione tra le varie stazioni e stata eettuata sia via wireless sia
tramite un bus condiviso. L'interfaccia del microcontrollore per la seria-
lizzazione dei pacchetti scelta e la porta UART1 (Universal Asynchronous
Receiver/Transmitter, ?).
5.1 Implementazione hardware
Per la comunicazione wireless l'UART1 e stata connessa ad un transciever
MIPOT modello 3-2000467 ?, i cui pin sono stati opportunatamente control-
lati con i piedini di uscita digitale del microcontrollore. Poiche questi ultimi
presentano allo stato < 1 > tensione pari a 3; 6 V , due di essi sono stati
collegati ad un chip 74HC08N (quattro porte AND) per elevarne la tensione
a 5 V , come da speciche MIPOT(?).
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
Questo transciever wireless perde nel suo normale utilizzo una percentua-
le di pacchetti superiore al 40%, rendendo necessarie molte ritrasmissioni.
Questo comporta un rallentamento del sistema , nel suo complesso, evidente.
In fase di progetto si e quindi optato per l'utilizzazione di un bus dati costi-
tuito da due li, uno dei quali collegato al piedino di trasmissione del socket
21
Rete di connessione
La connessione tra le varie stazioni e stata eettuata sia via wireless sia
tramite un bus condiviso. L'interfaccia del microcontrollore per la seria-
lizzazione dei pacchetti scelta e la porta UART1 (Universal Asynchronous
Receiver/Transmitter, ?).
5.1 Implementazione hardware
Per la comunicazione wireless l'UART1 e stata connessa ad un transciever
MIPOT modello 3-2000467 ?, i cui pin sono stati opportunatamente control-
lati con i piedini di uscita digitale del microcontrollore. Poiche questi ultimi
presentano allo stato < 1 > tensione pari a 3; 6 V , due di essi sono stati
collegati ad un chip 74HC08N (quattro porte AND) per elevarne la tensione
a 5 V , come da speciche MIPOT(?).
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
Questo transciever wireless perde nel suo normale utilizzo una percentua-
le di pacchetti superiore al 40%, rendendo necessarie molte ritrasmissioni.
Questo comporta un rallentamento del sistema , nel suo complesso, evidente.
In fase di progetto si e quindi optato per l'utilizzazione di un bus dati costi-
tuito da due li, uno dei quali collegato al piedino di trasmissione del socket
21
Page 32
22 CAPITOLO 5. RETE DI CONNESSIONE
che nel caso di connessione wireless contiene il transciever del master ed a
quello di ricezione degli slave, l'altro connesso al pin di ricezione del master
e trasmissione degli slave.
5.2 Implementazione software
Data l'assenza di un driver funzionante per questo tipo di scheda su internet,
si e deciso di scrivere un programma indipendente che gestisse la connessione
wireless, in modo che fosse riutilizzabile per altri progetti.
5.3 Interfaccia di serializzazione
La trasmissione e ricezione di ogni carattere e adata alla porta UART1,
cos congurata:
\* wireless cabling:
* port function socket
* A2 TX 14
* A3 BOOST 5
* A5 I/0 7
*/
void radio_set_tx(void){
TRISAbits.TRISA2=0; //setting to output
TRISAbits.TRISA3=0;
TRISAbits.TRISA5=0;
LATAbits.LATA3=1; //activates boost mode
LATAbits.LATA5=0; //sets tx mode
LATAbits.LATA2=1; //tx pin (necessary to tx)
U1STAbits.UTXEN=1; //enables UART port
}
void radio_set_rx(void){
TRISAbits.TRISA2=0; //setting to output
che nel caso di connessione wireless contiene il transciever del master ed a
quello di ricezione degli slave, l'altro connesso al pin di ricezione del master
e trasmissione degli slave.
5.2 Implementazione software
Data l'assenza di un driver funzionante per questo tipo di scheda su internet,
si e deciso di scrivere un programma indipendente che gestisse la connessione
wireless, in modo che fosse riutilizzabile per altri progetti.
5.3 Interfaccia di serializzazione
La trasmissione e ricezione di ogni carattere e adata alla porta UART1,
cos congurata:
\* wireless cabling:
* port function socket
* A2 TX 14
* A3 BOOST 5
* A5 I/0 7
*/
void radio_set_tx(void){
TRISAbits.TRISA2=0; //setting to output
TRISAbits.TRISA3=0;
TRISAbits.TRISA5=0;
LATAbits.LATA3=1; //activates boost mode
LATAbits.LATA5=0; //sets tx mode
LATAbits.LATA2=1; //tx pin (necessary to tx)
U1STAbits.UTXEN=1; //enables UART port
}
void radio_set_rx(void){
TRISAbits.TRISA2=0; //setting to output
Page 33
5.3. INTERFACCIA DI SERIALIZZAZIONE 23
TRISAbits.TRISA3=0;
TRISAbits.TRISA5=0;
LATAbits.LATA3=0; //deactivates boost
LATAbits.LATA5=1; //sets rx mode
LATAbits.LATA2=0; /*tx to zero
* (necessary to rx)
*/
}
void radio_init(int radio_id_given){
radio_id=radio_id_given;
U1BRG=5; //sets baud rate
U1MODEbits.PDSEL = 0;
U1MODEbits.STSEL = 0;
U1STAbits.URXISEL1=0; /*sets to interrupt
* after 1 char
*/
U1STAbits.URXISEL0=0;
IPC2bits.U1RXIP=5; //interrupt priority rx
IFS0bits.U1RXIF=0; //clear interrupt status
IEC0bits.U1RXIE=1; //enable interrupt rxuart
U1MODEbits.UARTEN=1; //enables uart
}
Tale porta serializza dati a 8 bit in codica Manchester con l'ausilio un re-
gistro a scorrimento. Ha un buer di quattro caratteri ed e in grado di
sollevare, grazie ad opportuna congurazione, interrupt sia in ricezione sia in
trasmissione.
A livello superiore, la rete e organizzata come una token-ring con ma-
ster. Il master genera il token e lo passa ad un nodo alla volta. Tale nodo,
dopo aver spedito eventuali pacchetti, segnala al master di aver concluso la
trasmissione. Se lo slave non risponde, il master rigenera il token dopo un
TRISAbits.TRISA3=0;
TRISAbits.TRISA5=0;
LATAbits.LATA3=0; //deactivates boost
LATAbits.LATA5=1; //sets rx mode
LATAbits.LATA2=0; /*tx to zero
* (necessary to rx)
*/
}
void radio_init(int radio_id_given){
radio_id=radio_id_given;
U1BRG=5; //sets baud rate
U1MODEbits.PDSEL = 0;
U1MODEbits.STSEL = 0;
U1STAbits.URXISEL1=0; /*sets to interrupt
* after 1 char
*/
U1STAbits.URXISEL0=0;
IPC2bits.U1RXIP=5; //interrupt priority rx
IFS0bits.U1RXIF=0; //clear interrupt status
IEC0bits.U1RXIE=1; //enable interrupt rxuart
U1MODEbits.UARTEN=1; //enables uart
}
Tale porta serializza dati a 8 bit in codica Manchester con l'ausilio un re-
gistro a scorrimento. Ha un buer di quattro caratteri ed e in grado di
sollevare, grazie ad opportuna congurazione, interrupt sia in ricezione sia in
trasmissione.
A livello superiore, la rete e organizzata come una token-ring con ma-
ster. Il master genera il token e lo passa ad un nodo alla volta. Tale nodo,
dopo aver spedito eventuali pacchetti, segnala al master di aver concluso la
trasmissione. Se lo slave non risponde, il master rigenera il token dopo un
Page 34
24 CAPITOLO 5. RETE DI CONNESSIONE
Figura 5.1: Struttura pacchetto dati
tempo di timeout1.
5.3.1 Struttura dei pacchetti
Si e deciso di spedire esclusivamente caratteri \stampabili\ in modo da fa-
cilitare la lettura da computer2. Sono state introdotte diverse tipologie di
pacchetti:
pacchetti token: emessi solo dal master e composti da un numero
qualsiasi di \T"3 seguiti dal numero del nodo che riceve il token
pacchetti di ne turno: composti da un numero qualunque di \N", sono
emessi per restituire il token al master
pacchetti di sincronizzazione: utilizzati nel protocollo descritto nel
paragrafo ??
pacchetti dati (gura ??): composti da un numero qualsiasi di \D",
seguito dalla destinazione del pacchetto (1 per il master ed i numeri
successivi per gli slave, 0 per il broadcast) e dal numero di caratteri del
payload, il quale chiude il pacchetto.
1Tale timeout e generato da un timer che viene azzerato all'arrivo di ogni pacchetto
2Il programma di lettura dalla porta seriale utilizzato e Hyper Terminal, sul siste-
ma operativo Windows, che non permette di visualizzare altro che caratteri stampabili,
scartando gli altri simboli letti.
3Il numero di tali caratteri puo essere variato a seconda dell'ecienza dei transciever.
In ? si dimostra che piu del 40% dei pacchetti vanno perduti, tuttavia si e notato che
questo accade solo per il pacchetto iniziale della trasmissione: questo e il motivo per cui si e
deciso di non introdurre un controllo di errore sui pacchetti. Il CRC gia incluso nell'UART
e inutile, poiche i pacchetti che non vengono persi sono integri.
Figura 5.1: Struttura pacchetto dati
tempo di timeout1.
5.3.1 Struttura dei pacchetti
Si e deciso di spedire esclusivamente caratteri \stampabili\ in modo da fa-
cilitare la lettura da computer2. Sono state introdotte diverse tipologie di
pacchetti:
pacchetti token: emessi solo dal master e composti da un numero
qualsiasi di \T"3 seguiti dal numero del nodo che riceve il token
pacchetti di ne turno: composti da un numero qualunque di \N", sono
emessi per restituire il token al master
pacchetti di sincronizzazione: utilizzati nel protocollo descritto nel
paragrafo ??
pacchetti dati (gura ??): composti da un numero qualsiasi di \D",
seguito dalla destinazione del pacchetto (1 per il master ed i numeri
successivi per gli slave, 0 per il broadcast) e dal numero di caratteri del
payload, il quale chiude il pacchetto.
1Tale timeout e generato da un timer che viene azzerato all'arrivo di ogni pacchetto
2Il programma di lettura dalla porta seriale utilizzato e Hyper Terminal, sul siste-
ma operativo Windows, che non permette di visualizzare altro che caratteri stampabili,
scartando gli altri simboli letti.
3Il numero di tali caratteri puo essere variato a seconda dell'ecienza dei transciever.
In ? si dimostra che piu del 40% dei pacchetti vanno perduti, tuttavia si e notato che
questo accade solo per il pacchetto iniziale della trasmissione: questo e il motivo per cui si e
deciso di non introdurre un controllo di errore sui pacchetti. Il CRC gia incluso nell'UART
e inutile, poiche i pacchetti che non vengono persi sono integri.
Page 35
5.3. INTERFACCIA DI SERIALIZZAZIONE 25
5.3.2 Sincronizzazione
Per lo svolgimento dell'algoritmo (descritto nel paragrafo ?? a pagina ??) e
necessaria avere un tempo comune a tutti i nodi della rete, per la divisione
temporale in slot. E' stato quindi implementato un protocollo di sincroniz-
zazione. Dopo diverse prove (sincronizzazione a token bloccato in inizializ-
zazione della rete, sincronizzazione con spedizione del tempo rimanente al
prossimo riavvio di un timer), si e' optato per una soluzione in cui il timer
di sincronizzazione ogni N eventi schedula una trasmissione di un pacchetto
di sincronizzazione e si disabilita. All'avvenuta trasmissione del pacchetto
il master riattiva il timer. Alla ricezione del pacchetto di sincronizzazione,
lo slave fa lo stesso. In questo modo si ottengono slot temporali ben sin-
cronizzati, anche se la loro lunghezza temporale varia leggermente4. Questo
tuttavia non e un problema per l'implementazione dell'algoritmo.
5.3.3 Processo di gestione
Il collegamento di rete in ricezione viene gestito su ogni nodo da un processo
indipendente la cui denizione secondo lo standard OSEK (?) e riportata
nel capitolo ?? a pagina ?? (task RadioTask).
Tale processo ha una struttura ciclica innita. Esso si blocca su un sema-
foro no a quando non viene risvegliato dalla routine di risposta all'interrupt
sollevato dall'UART1. Ogni volta che viene sbloccato, analizza il carattere
ricevuto, secondo il protocollo di rete. I pacchetti in ingresso sono accodati
in un buer di ricezione, a disposizione degli altri task del sistema.
Quando un task chiama la funzione di trasmissione di un dato, viene
creato il pacchetto associato e accodato in un buer di uscita, per essere poi
spedito non appena il token rientra in possesso di quel nodo della rete.
4La variazione e piccola poiche il periodo del timer di sincronizzazione e molto maggiore
del round trip time del token della rete.
5.3.2 Sincronizzazione
Per lo svolgimento dell'algoritmo (descritto nel paragrafo ?? a pagina ??) e
necessaria avere un tempo comune a tutti i nodi della rete, per la divisione
temporale in slot. E' stato quindi implementato un protocollo di sincroniz-
zazione. Dopo diverse prove (sincronizzazione a token bloccato in inizializ-
zazione della rete, sincronizzazione con spedizione del tempo rimanente al
prossimo riavvio di un timer), si e' optato per una soluzione in cui il timer
di sincronizzazione ogni N eventi schedula una trasmissione di un pacchetto
di sincronizzazione e si disabilita. All'avvenuta trasmissione del pacchetto
il master riattiva il timer. Alla ricezione del pacchetto di sincronizzazione,
lo slave fa lo stesso. In questo modo si ottengono slot temporali ben sin-
cronizzati, anche se la loro lunghezza temporale varia leggermente4. Questo
tuttavia non e un problema per l'implementazione dell'algoritmo.
5.3.3 Processo di gestione
Il collegamento di rete in ricezione viene gestito su ogni nodo da un processo
indipendente la cui denizione secondo lo standard OSEK (?) e riportata
nel capitolo ?? a pagina ?? (task RadioTask).
Tale processo ha una struttura ciclica innita. Esso si blocca su un sema-
foro no a quando non viene risvegliato dalla routine di risposta all'interrupt
sollevato dall'UART1. Ogni volta che viene sbloccato, analizza il carattere
ricevuto, secondo il protocollo di rete. I pacchetti in ingresso sono accodati
in un buer di ricezione, a disposizione degli altri task del sistema.
Quando un task chiama la funzione di trasmissione di un dato, viene
creato il pacchetto associato e accodato in un buer di uscita, per essere poi
spedito non appena il token rientra in possesso di quel nodo della rete.
4La variazione e piccola poiche il periodo del timer di sincronizzazione e molto maggiore
del round trip time del token della rete.
Page 36
26 CAPITOLO 5. RETE DI CONNESSIONE
La gestione dei token, come e gia stato aermato, e eettuata dal master.
Questo non comporta l'aggiunta di un processo ad essa dedicato, poiche la
funzione di rotazione del token viene chiamata quando viene ricevuta un
pacchetto di ne turno (pacchetto N), quindi durante l'esecuzione del task
deputato alla gestione della radio, oppure quando il timer di timeout della
radio lancia un interrupt.
5.3.4 Accorgimenti
Come visto nel precendete paragrafo, il task di gestione attende , bloccan-
dosi su un semaforo, che arrivi un carattere dalla rete. Inizialmente si era
pensato, per aumentare la banda di processore disponibile, di far attende-
re il task ad ogni carattere, ipotizzando che la velocita di 38400 bps fosse
sucientemente bassa perche questa scelta fosse conveniente. Tuttavia , si
e riscontrato che il tempo complessivo di risposta all'interruzione, di post
sul semaforo e di schedulazione non e trascurabile rispetto al tempo di bit
della rete. Con questa scelta, si ha una perdita costante di un carattere ogni
dieci nella ricezione. Probabilmente si accumula nel tempo e quindi si su-
pera la deadline per la ricezione di qualche carattere, che viene sovrascritto.
Considerando il fatto che i pacchetti sono trasmessi in modo atomico, e stato
scelto di bloccare il task solo tra un pacchetto e l'altro e non ogni carattere.
Questo non ha comportato una signicativa perdita di banda ed ha eliminato
completamente il problema.
Poiche il task di gestione della connessione wireless e quello a massima
priorita nel sistema, esso non subira preemption dagli altri. Ergo, non esi-
ste il problema che altri task leggano il buer radio di ricezione durante la
registrazione di un pacchetto: non e percio necessario un semaforo di mutua
esclusione. Tale problema potrebbe semmai sorgere per il buer di trasmis-
sione, tuttavia la scrittura su tale buer viene validata solo al suo termine,
con la registrazione in un apposito array della lunghezza del pacchetto (ope-
razione in se atomica). Poiche solo un task accede a questa funzione, questa
La gestione dei token, come e gia stato aermato, e eettuata dal master.
Questo non comporta l'aggiunta di un processo ad essa dedicato, poiche la
funzione di rotazione del token viene chiamata quando viene ricevuta un
pacchetto di ne turno (pacchetto N), quindi durante l'esecuzione del task
deputato alla gestione della radio, oppure quando il timer di timeout della
radio lancia un interrupt.
5.3.4 Accorgimenti
Come visto nel precendete paragrafo, il task di gestione attende , bloccan-
dosi su un semaforo, che arrivi un carattere dalla rete. Inizialmente si era
pensato, per aumentare la banda di processore disponibile, di far attende-
re il task ad ogni carattere, ipotizzando che la velocita di 38400 bps fosse
sucientemente bassa perche questa scelta fosse conveniente. Tuttavia , si
e riscontrato che il tempo complessivo di risposta all'interruzione, di post
sul semaforo e di schedulazione non e trascurabile rispetto al tempo di bit
della rete. Con questa scelta, si ha una perdita costante di un carattere ogni
dieci nella ricezione. Probabilmente si accumula nel tempo e quindi si su-
pera la deadline per la ricezione di qualche carattere, che viene sovrascritto.
Considerando il fatto che i pacchetti sono trasmessi in modo atomico, e stato
scelto di bloccare il task solo tra un pacchetto e l'altro e non ogni carattere.
Questo non ha comportato una signicativa perdita di banda ed ha eliminato
completamente il problema.
Poiche il task di gestione della connessione wireless e quello a massima
priorita nel sistema, esso non subira preemption dagli altri. Ergo, non esi-
ste il problema che altri task leggano il buer radio di ricezione durante la
registrazione di un pacchetto: non e percio necessario un semaforo di mutua
esclusione. Tale problema potrebbe semmai sorgere per il buer di trasmis-
sione, tuttavia la scrittura su tale buer viene validata solo al suo termine,
con la registrazione in un apposito array della lunghezza del pacchetto (ope-
razione in se atomica). Poiche solo un task accede a questa funzione, questa
Page 37
5.3. INTERFACCIA DI SERIALIZZAZIONE 27
soluzione e accettabile ed evita l'utilizzo di un semaforo5.
5.3.5 Note
Si e notato che la comunicazione wireless dipende fortemente dal tipo di
antenna e dalla connessione tra antenna e transciever. Si sono sperimentati
tutti i tipi di antenna descritti nel datasheet (?), tuttavia si e vericato che
solo l'antenna lineare di 17; 5 cm di lunghezza e ha delle prestazioni sucienti
allo scopo.
5In caso di task concorrenti che utilizzano la funzione di accodamento dei messaggi tale
soluzione non e applicabile ed e necessario l'utilizzo di un semaforo.
soluzione e accettabile ed evita l'utilizzo di un semaforo5.
5.3.5 Note
Si e notato che la comunicazione wireless dipende fortemente dal tipo di
antenna e dalla connessione tra antenna e transciever. Si sono sperimentati
tutti i tipi di antenna descritti nel datasheet (?), tuttavia si e vericato che
solo l'antenna lineare di 17; 5 cm di lunghezza e ha delle prestazioni sucienti
allo scopo.
5In caso di task concorrenti che utilizzano la funzione di accodamento dei messaggi tale
soluzione non e applicabile ed e necessario l'utilizzo di un semaforo.
Page 38
28 CAPITOLO 5. RETE DI CONNESSIONE
Page 39
Capitolo 6
Rilevazione del suono
Verra ora descritta l'implementazione della rilevazione del suono, progettata
seguendo le speciche del paragrafo ??, a pagina ??.
6.1 Implementazione hardware
Il microfono e stato connesso ad un ltro amplicatore, che taglia le frequen-
ze inferiori a 20 Hz e superiori a 2 105 Hz, portando il segnale alla tensione
ammessa dal circuito di aquisizione analogico/digitale del microcontrollore.
Tale circuito utilizza un chip di quattro amplicatori operazionali LM324N.
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
6.2 Implementazione software
L'ADC del microcontrollore, che legge l'output del ltro dalla porta B,
secondo pin, e stato cos congurato:
void ADCinit(){
TRISB = 0x01; //Port RB1 is input
AD1PCFGL=0xFFFD; //Port RB1 is analog
AD1CON1 = 0x04E4; //12-bit, unsigned integer,
29
Rilevazione del suono
Verra ora descritta l'implementazione della rilevazione del suono, progettata
seguendo le speciche del paragrafo ??, a pagina ??.
6.1 Implementazione hardware
Il microfono e stato connesso ad un ltro amplicatore, che taglia le frequen-
ze inferiori a 20 Hz e superiori a 2 105 Hz, portando il segnale alla tensione
ammessa dal circuito di aquisizione analogico/digitale del microcontrollore.
Tale circuito utilizza un chip di quattro amplicatori operazionali LM324N.
Per lo schematico del circuito si veda in appendice la gura ??, a pagina
??. I dettagli di questo circuito sono descritti in ?.
6.2 Implementazione software
L'ADC del microcontrollore, che legge l'output del ltro dalla porta B,
secondo pin, e stato cos congurato:
void ADCinit(){
TRISB = 0x01; //Port RB1 is input
AD1PCFGL=0xFFFD; //Port RB1 is analog
AD1CON1 = 0x04E4; //12-bit, unsigned integer,
29
Page 40
30 CAPITOLO 6. RILEVAZIONE DEL SUONO
//autoconvert, autosampling
AD1CON2 = 0; /*Vref = Vcc/Vdd
* voltage reads spawns
* from 0 to 3.6V
*/
AD1CON3=0x1F01; //Sample time=31 Tcy
// 1 Tcy=1/7.37 MHz
AD1CON3 = 0x8000; //ADC internal RC clock
AD1CSSL = 0; //Skip ANx for input scan
//only one channel active.
AD1CHS0 = 0x0001; //Channel 0 neg=Vref-, pos=RB1/AN1
AD1CON1bits.ADON=1; //conversion is active
}
L'ADC campiona a 200K Hz a 12 bit valori di tensione nell'intervallo [0; 3:6] V .
Dato che il campionamento ad una frequenza costante e essenziale al funzio-
namento del sistema di localizzazione, si e scelto di utilizzare tutta la banda
del processore durante il campionamento. Si sono quindi disabilitate le in-
terruzioni durante tale operazione e imposto un'alta priorita al task1 che
se ne occupa. Si e ritenuto, inoltre, per migliorare la precisione della tem-
porizzazione del campionamento, di far operare l'ADC con un sample time
inferiore a quello della frequenza richiesta (di 50K Hz): ad ogni termine di
conversione il microcontrollore attende attivamente il prossimo periodo di
campionamento, controllando in polling i registri di conteggio di un timer.
Il task che compie il polling sara descritto piu approfonditamente nel
capitolo ??.
1Per maggiori dettagli, si veda il capitolo ??.
//autoconvert, autosampling
AD1CON2 = 0; /*Vref = Vcc/Vdd
* voltage reads spawns
* from 0 to 3.6V
*/
AD1CON3=0x1F01; //Sample time=31 Tcy
// 1 Tcy=1/7.37 MHz
AD1CON3 = 0x8000; //ADC internal RC clock
AD1CSSL = 0; //Skip ANx for input scan
//only one channel active.
AD1CHS0 = 0x0001; //Channel 0 neg=Vref-, pos=RB1/AN1
AD1CON1bits.ADON=1; //conversion is active
}
L'ADC campiona a 200K Hz a 12 bit valori di tensione nell'intervallo [0; 3:6] V .
Dato che il campionamento ad una frequenza costante e essenziale al funzio-
namento del sistema di localizzazione, si e scelto di utilizzare tutta la banda
del processore durante il campionamento. Si sono quindi disabilitate le in-
terruzioni durante tale operazione e imposto un'alta priorita al task1 che
se ne occupa. Si e ritenuto, inoltre, per migliorare la precisione della tem-
porizzazione del campionamento, di far operare l'ADC con un sample time
inferiore a quello della frequenza richiesta (di 50K Hz): ad ogni termine di
conversione il microcontrollore attende attivamente il prossimo periodo di
campionamento, controllando in polling i registri di conteggio di un timer.
Il task che compie il polling sara descritto piu approfonditamente nel
capitolo ??.
1Per maggiori dettagli, si veda il capitolo ??.
Page 41
Capitolo 7
Implementazione dell'algoritmo
L'algoritmo di localizzazione implementato segue le speciche descritte nel
paragrafo ?? (a pagina ??). Esso viene gestito sul nodo master della rete dal
task Master Task, mentre nei nodi slave da SlaveTask. Le denizioni OIL di
tali processi, secondo lo standard OSEK, sono riportate nell'appendice ?? (a
pagina ??).
7.1 Task di gestione dell'algoritmo sul nodo
master
Il nodo master, in accensione, sincronizza gli slot temporali sui nodi slave1.
Tali slot sono delimitati tramite un timer che lancia un'interruzione quando
il conteggio termina. La routine, di tipo IRS2, che gestisce tale interruzione
reinizializza il timer e sblocca i task in attesa sul semaforo SyncroSem.
Quando la rete e sincronizzata, il master ordina a tutti i nodi di registra-
re durante il prossimo slot. Nel caso in cui il master abbia campionato un
valore al di sopra della soglia, esso ordina agli altri nodi di attendere i dati
per la correlazione, altrimenti i nodi resettano il buer di ricezione audio e
continuano a registrare.
1Per questo motivo, deve essere acceso dopo la completa inizializzazione degli altri nodi
della rete.
31
Implementazione dell'algoritmo
L'algoritmo di localizzazione implementato segue le speciche descritte nel
paragrafo ?? (a pagina ??). Esso viene gestito sul nodo master della rete dal
task Master Task, mentre nei nodi slave da SlaveTask. Le denizioni OIL di
tali processi, secondo lo standard OSEK, sono riportate nell'appendice ?? (a
pagina ??).
7.1 Task di gestione dell'algoritmo sul nodo
master
Il nodo master, in accensione, sincronizza gli slot temporali sui nodi slave1.
Tali slot sono delimitati tramite un timer che lancia un'interruzione quando
il conteggio termina. La routine, di tipo IRS2, che gestisce tale interruzione
reinizializza il timer e sblocca i task in attesa sul semaforo SyncroSem.
Quando la rete e sincronizzata, il master ordina a tutti i nodi di registra-
re durante il prossimo slot. Nel caso in cui il master abbia campionato un
valore al di sopra della soglia, esso ordina agli altri nodi di attendere i dati
per la correlazione, altrimenti i nodi resettano il buer di ricezione audio e
continuano a registrare.
1Per questo motivo, deve essere acceso dopo la completa inizializzazione degli altri nodi
della rete.
31
Page 42
32 CAPITOLO 7. IMPLEMENTAZIONE DELL'ALGORITMO
Il master quindi attende che i nodi gli inviino i risultati della correlazione. Ap-
pena sono stati tutti spediti, applica l'algoritmo matematico di correlazione2
, descritto in ? (le posizioni dei nodi sono inserite prima della compilazione).
Quindi pone il risultato in output sulla seriale e ritorna a registrare.
/*Space covered by sound during the
*time of 1/(frequency_of_sampling)
*/
#define LENGTH_OF_ARRAY_CELL 0.00686
TASK(MasterTask){
int i,threshold_got,result[2];
int correlation[radio_id_max];
led_set(LED_YELLOW);
for (i=0;i<10;i++){
radio_tx_data_packet("SYNC",4,0);
WaitSem(&SyncroSem);
} //Sperimentally sufficient to syncronize
radio_tx_data_packet("START",5,0);
for(;;){
radio_tx_data_packet("REC",3,0);
WaitSem(&SyncroSem);
/*Start recording in next slot
* This way every node starts in
* the same instant
*/
interrupt_disable();
for(i=0;i<SAMPLES;i++){
wait50khz();
while(!AD1CON1bits.DONE);
data[i]=ADC1BUF0;
}
interrupt_enable();
2Per risolvere il sistema di equazioni lineari ci si appoggia, per semplicita ad una libreria
esterna (?), anch'essa distribuita sotto licenza gpl.
Il master quindi attende che i nodi gli inviino i risultati della correlazione. Ap-
pena sono stati tutti spediti, applica l'algoritmo matematico di correlazione2
, descritto in ? (le posizioni dei nodi sono inserite prima della compilazione).
Quindi pone il risultato in output sulla seriale e ritorna a registrare.
/*Space covered by sound during the
*time of 1/(frequency_of_sampling)
*/
#define LENGTH_OF_ARRAY_CELL 0.00686
TASK(MasterTask){
int i,threshold_got,result[2];
int correlation[radio_id_max];
led_set(LED_YELLOW);
for (i=0;i<10;i++){
radio_tx_data_packet("SYNC",4,0);
WaitSem(&SyncroSem);
} //Sperimentally sufficient to syncronize
radio_tx_data_packet("START",5,0);
for(;;){
radio_tx_data_packet("REC",3,0);
WaitSem(&SyncroSem);
/*Start recording in next slot
* This way every node starts in
* the same instant
*/
interrupt_disable();
for(i=0;i<SAMPLES;i++){
wait50khz();
while(!AD1CON1bits.DONE);
data[i]=ADC1BUF0;
}
interrupt_enable();
2Per risolvere il sistema di equazioni lineari ci si appoggia, per semplicita ad una libreria
esterna (?), anch'essa distribuita sotto licenza gpl.
Page 43
7.2. TASK DI GESTIONE DELL'ALGORITMO SUI NODI SLAVE 33
led_reset(LED_ORANGE);
WaitSem(&SyncroSem);
threshold_got=0;
//Check if threshold is hit
for(i=0;i<SAMPLES;i++){
if (data[i]>THRESHOLD){threshold_got=1;}
}
WaitSem(&SyncroSem);
//Reissue recording command if not hit
if (threshold_got==0){continue;}
radio_tx_data_packet("XCOR",4,0);
//Fetches the results of correlation from the nodes
Fetch(correlation);
//Prepares the data structures necessary and calls
//LinearEquationsSolving (external library)
Locate(correlation,result);
RS232send("SOURCE X POSITION",17);
RS232sendint(result[0]*LENGTH_OF_ARRAY_CELL);
RS232send("SOURCE Y POSITION",17)
RS232sendint(result[1]*LENGTH_OF_ARRAY_CELL);
}
}
7.2 Task di gestione dell'algoritmo sui nodi
slave
Il task slave, non conoscendo l'andamento temporale dell'algoritmo, segue i
comandi inviati dal master. Esso attende n quando non riceve il pacchetto
\START" dal master, ovvero no a quando sul master non e attivo e inizia-
lizzato il MasterTask. Quindi alla ricezione del comando \REC" registra ed
a \XCOR" attende la ricezione dei dati campionati dal master, li correla col
proprio buer di ricezione audio e ne spedisce indietro il risultato.
led_reset(LED_ORANGE);
WaitSem(&SyncroSem);
threshold_got=0;
//Check if threshold is hit
for(i=0;i<SAMPLES;i++){
if (data[i]>THRESHOLD){threshold_got=1;}
}
WaitSem(&SyncroSem);
//Reissue recording command if not hit
if (threshold_got==0){continue;}
radio_tx_data_packet("XCOR",4,0);
//Fetches the results of correlation from the nodes
Fetch(correlation);
//Prepares the data structures necessary and calls
//LinearEquationsSolving (external library)
Locate(correlation,result);
RS232send("SOURCE X POSITION",17);
RS232sendint(result[0]*LENGTH_OF_ARRAY_CELL);
RS232send("SOURCE Y POSITION",17)
RS232sendint(result[1]*LENGTH_OF_ARRAY_CELL);
}
}
7.2 Task di gestione dell'algoritmo sui nodi
slave
Il task slave, non conoscendo l'andamento temporale dell'algoritmo, segue i
comandi inviati dal master. Esso attende n quando non riceve il pacchetto
\START" dal master, ovvero no a quando sul master non e attivo e inizia-
lizzato il MasterTask. Quindi alla ricezione del comando \REC" registra ed
a \XCOR" attende la ricezione dei dati campionati dal master, li correla col
proprio buer di ricezione audio e ne spedisce indietro il risultato.
Page 44
34 CAPITOLO 7. IMPLEMENTAZIONE DELL'ALGORITMO
TASK(SlaveTask){
int i;
double result;
char str[10], command[10];
double temparray[2*SAMPLES];
int strlength=0,cmdlength=0;
logRadio("___________ ",11);
logRadio("SLAVE READY",11);
do{
pop_radio_msg(str,&strlength);
logRadio(str,strlength);
}while(str[0]!='S'||str[1]!='T'||str[2]!='A');
//Master initialized
for(;;){
pop_radio_msg(command,&cmdlength);
switch (command[0]){
//master issued "REC"
case 'R':
logRadio("RECORDING",9);
//record on next slot
WaitSem(&SyncroSem);
for(i=0;i<SAMPLES;i++){
wait50khz();
while(!AD1CON1bits.DONE);
data[i]=ADC1BUF0;
}
led_reset(LED_ORANGE);
break;
//master issued "XCOR"
case 'X':
logRadio("CORRELATION",11);
TASK(SlaveTask){
int i;
double result;
char str[10], command[10];
double temparray[2*SAMPLES];
int strlength=0,cmdlength=0;
logRadio("___________ ",11);
logRadio("SLAVE READY",11);
do{
pop_radio_msg(str,&strlength);
logRadio(str,strlength);
}while(str[0]!='S'||str[1]!='T'||str[2]!='A');
//Master initialized
for(;;){
pop_radio_msg(command,&cmdlength);
switch (command[0]){
//master issued "REC"
case 'R':
logRadio("RECORDING",9);
//record on next slot
WaitSem(&SyncroSem);
for(i=0;i<SAMPLES;i++){
wait50khz();
while(!AD1CON1bits.DONE);
data[i]=ADC1BUF0;
}
led_reset(LED_ORANGE);
break;
//master issued "XCOR"
case 'X':
logRadio("CORRELATION",11);
Page 45
7.2. TASK DI GESTIONE DELL'ALGORITMO SUI NODI SLAVE 35
//Gets master data
for(i=0;i<SAMPLES;i++){
pop_radio_msg(&data_master[i],
&cmdlength);
}
//correlates
result=xcorrelation(SAMPLES,temparray,
data, data_master);
//and sends back to master
radio_tx_data_packet_int((int)result,1);
break;
}//other commands are ignored
}
}
La correlazione e stata compiuta senza utilizzare la libreria di digital signal
processing del microprocessore 3 La funzione utilizzata e la seguente:
int xcorrelation(
int n, \\number of data to correlate
double* c, \\working vector (size 2*n)
double* a, \\vectors to correlate
double* b
){
int i,k;
int maxv=0,ind=0;
for(k=0;k<2*n-1;k++)
c[k]=0;
for(k=1-n;k<n;k++){
if(k>=0){
for(i=k;i<n;i++){
3La documentazione trovata in materia e scarsa ed i risultati della correlazione utiliz-
zando le librerie che sfruttano il DSP hardware erano sempre nulli. L'implementazione di
tale funzione, ottenuta la giusta documentazione, dovrebbe essere immediata, poiche se
ne e rispettata la signature e i tipi di dati da lei accettati.
//Gets master data
for(i=0;i<SAMPLES;i++){
pop_radio_msg(&data_master[i],
&cmdlength);
}
//correlates
result=xcorrelation(SAMPLES,temparray,
data, data_master);
//and sends back to master
radio_tx_data_packet_int((int)result,1);
break;
}//other commands are ignored
}
}
La correlazione e stata compiuta senza utilizzare la libreria di digital signal
processing del microprocessore 3 La funzione utilizzata e la seguente:
int xcorrelation(
int n, \\number of data to correlate
double* c, \\working vector (size 2*n)
double* a, \\vectors to correlate
double* b
){
int i,k;
int maxv=0,ind=0;
for(k=0;k<2*n-1;k++)
c[k]=0;
for(k=1-n;k<n;k++){
if(k>=0){
for(i=k;i<n;i++){
3La documentazione trovata in materia e scarsa ed i risultati della correlazione utiliz-
zando le librerie che sfruttano il DSP hardware erano sempre nulli. L'implementazione di
tale funzione, ottenuta la giusta documentazione, dovrebbe essere immediata, poiche se
ne e rispettata la signature e i tipi di dati da lei accettati.
Page 46
36 CAPITOLO 7. IMPLEMENTAZIONE DELL'ALGORITMO
c[k+n-1]+=a[i]*b[i-k];
}
}else{
for(i=0;i<n+k;i++){
c[k+n-1]+=a[i]*b[i-k];
}
}
}
for(i=0;i<2*n-1;i++){
if(c[i]>maxv)
maxv=c[ind=i];
}
//delay of b from a (in number of array cells)
return n-ind-1;
}
c[k+n-1]+=a[i]*b[i-k];
}
}else{
for(i=0;i<n+k;i++){
c[k+n-1]+=a[i]*b[i-k];
}
}
}
for(i=0;i<2*n-1;i++){
if(c[i]>maxv)
maxv=c[ind=i];
}
//delay of b from a (in number of array cells)
return n-ind-1;
}
Page 47
Capitolo 8
Conclusioni
In queste pagine si e descritta la progettazione di una rete wireless di loca-
lizzazione di un target non collaborativo.
8.1 Problemi risolti
Durante il suo sviluppo ci si e scontrati con alcune questioni, di seguito
elencate:
Nonostante la relativa ampiezza dello spazio di memoria volatile, si
sono comunque usati alcuni accorgimenti per rispettare tale vincolo.
In particolare, dato che lo stack di un processo1 non puo superare gli 8
kilobyte di memoria, e stato necessario allocare in memoria condivisa
le strutture dati piu ingombranti, cos da posizionarle all'esterno dello
stack.
E stato necessario accompagnare l'utilizzo della scheda FLEX con il
manuale dei Silicon Errata ?, che descrive gli errori nel circuito stam-
pato del chip, ovvero cio che non funziona come descritto nel manua-
le del microcontrollore e eventuali workaround (i problemi risolti in
questo modo sono stati vari: uno dei piu importanti e sicuramente la
temporizzazione del segnale seriale in output al computer).
1Per limitazione del registro base del microcontrollore
37
Conclusioni
In queste pagine si e descritta la progettazione di una rete wireless di loca-
lizzazione di un target non collaborativo.
8.1 Problemi risolti
Durante il suo sviluppo ci si e scontrati con alcune questioni, di seguito
elencate:
Nonostante la relativa ampiezza dello spazio di memoria volatile, si
sono comunque usati alcuni accorgimenti per rispettare tale vincolo.
In particolare, dato che lo stack di un processo1 non puo superare gli 8
kilobyte di memoria, e stato necessario allocare in memoria condivisa
le strutture dati piu ingombranti, cos da posizionarle all'esterno dello
stack.
E stato necessario accompagnare l'utilizzo della scheda FLEX con il
manuale dei Silicon Errata ?, che descrive gli errori nel circuito stam-
pato del chip, ovvero cio che non funziona come descritto nel manua-
le del microcontrollore e eventuali workaround (i problemi risolti in
questo modo sono stati vari: uno dei piu importanti e sicuramente la
temporizzazione del segnale seriale in output al computer).
1Per limitazione del registro base del microcontrollore
37
Page 49
Appendice A
Schemi hardware di riferimento
Figura A.1: Board nale del circuito
39
Schemi hardware di riferimento
Figura A.1: Board nale del circuito
39
Page 50
40 APPENDICE A. SCHEMI HARDWARE DI RIFERIMENTO
Figura A.2: Schematico del circuito
Figura A.2: Schematico del circuito
Page 51
41
Figura A.3: La scheda Flex con la daughter board
Figura A.3: La scheda Flex con la daughter board
Page 52
42 APPENDICE A. SCHEMI HARDWARE DI RIFERIMENTO
Figura A.4: La scheda Flex
Figura A.4: La scheda Flex
Page 53
Appendice B
Congurazione del sistema: le
OIL
CPU mySystem {
OS myOs {
EE_OPT = "DEBUG";
EE_OPT = "__SEM__"; //utilizzo dei semafori
CPU_DATA = PIC30 {
APP_SRC = "code.c";
MULTI_STACK = TRUE{
IRQ_STACK = TRUE {
SYS_SIZE=256;
};
};
ICD2 = TRUE;
};
MCU_DATA = PIC30 {
MODEL = PIC33FJ256MC710;
};
BOARD_DATA = EE_FLEX {
USELEDS = TRUE;
};
KERNEL_TYPE = FP;
};
TASK RadioTask {
PRIORITY = 1;
43
Congurazione del sistema: le
OIL
CPU mySystem {
OS myOs {
EE_OPT = "DEBUG";
EE_OPT = "__SEM__"; //utilizzo dei semafori
CPU_DATA = PIC30 {
APP_SRC = "code.c";
MULTI_STACK = TRUE{
IRQ_STACK = TRUE {
SYS_SIZE=256;
};
};
ICD2 = TRUE;
};
MCU_DATA = PIC30 {
MODEL = PIC33FJ256MC710;
};
BOARD_DATA = EE_FLEX {
USELEDS = TRUE;
};
KERNEL_TYPE = FP;
};
TASK RadioTask {
PRIORITY = 1;
43
Page 54
44 APPENDICE B. CONFIGURAZIONE DEL SISTEMA: FILE OIL
STACK = PRIVATE {
SYS_SIZE = 128;
};
SCHEDULE = FULL;
};
TASK MasterTask {
PRIORITY = 5;
STACK = PRIVATE {
SYS_SIZE = 128;
};
SCHEDULE = FULL;
};
TASK SlaveTask {
PRIORITY = 5;
STACK = PRIVATE {
SYS_SIZE = 256;
};
SCHEDULE = FULL;
};
TASK RS232Task {
PRIORITY = 6;
STACK = PRIVATE {
SYS_SIZE = 64;
};
SCHEDULE = FULL;
};
COUNTER Counter_system;
ALARM RS232TaskPeriodicActivation {
COUNTER = "Counter_system";
ACTION = ACTIVATETASK { TASK = "RS232Task"; };
};
};
STACK = PRIVATE {
SYS_SIZE = 128;
};
SCHEDULE = FULL;
};
TASK MasterTask {
PRIORITY = 5;
STACK = PRIVATE {
SYS_SIZE = 128;
};
SCHEDULE = FULL;
};
TASK SlaveTask {
PRIORITY = 5;
STACK = PRIVATE {
SYS_SIZE = 256;
};
SCHEDULE = FULL;
};
TASK RS232Task {
PRIORITY = 6;
STACK = PRIVATE {
SYS_SIZE = 64;
};
SCHEDULE = FULL;
};
COUNTER Counter_system;
ALARM RS232TaskPeriodicActivation {
COUNTER = "Counter_system";
ACTION = ACTIVATETASK { TASK = "RS232Task"; };
};
};
Sign up today - FREE
Mendeley saves you time finding and organizing research. Learn more
- All your research in one place
- Add and import papers easily
- Access it anywhere, anytime
Start using Mendeley in seconds!
Readership Statistics
1 Reader on Mendeley
by Discipline
by Academic Status
100% Ph.D. Student
by Country
100% Italy


