• Non ci sono risultati.

3 Analisi del set-up sperimentale

3.1 Panoramica sul set-up sperimentale

Gli esperimenti effettuati per analizzare la qualità del segnale vocale trasmesso su rete CAN in presenza del traffico di controllo (a priorità più alta) della rete, sono stati compiuti realizzando, nel laboratorio di Sistemi Elettronici dell’Università di Pisa, il sistema mostrato in Figura 3.1:

NODO 2 Scheda Interfono NODO 5 Generatore di traffico casuale NODO 3 Analizzatore di traffico NODO 4 Generatore di traffico periodico Scheda Interfono NODO 1 BUS CAN

I nodi 1 e 2 costituiscono l’interfono realizzato sul bus CAN e trasmettono il traffico costituito dai messaggi vocali. Ciascuno di essi è collegato ad una scheda interfono che esegue le operazioni di conversione e codifica/decodifica del segnale audio.

I nodi 4 e 5 costituiscono i due generatori di traffico e simulano l’invio dei dati di controllo (a più alta priorità) di un sistema reale . Il nodo 4 invia sul bus un messaggio periodico di lunghezza variabile che rappresenta l’insieme delle trasmissioni periodoche dei vari dispositivi collegati al bus CAN. Il generatore al nodo 5 invia sul bus il traffico casuale che costituisce l’insieme dei messaggi attivati in modo non deterministico all’interno di un sistema CAN. Ciascuno dei due nodi realizza quindi uno dei modelli di traffico analizzati nel capitolo precedente.

Il nodo 3 rappresenta lo strumento di analisi con cui vengono valutate le caratteristiche dei messaggi che transitano sul bus. Attraverso l’analizzatore di traffico è possibile ad esempio ricavare la struttura dei singoli messaggi trasmessi ed avere informazioni riguardanti i vari campi (ID, DLC, Data Field, etc) oppure selezionare, in base all’identificatore, il tipo di messaggi da ricevere e valutarne gli istanti di arrivo al nodo. In questo modo è possibile misurare i parametri del traffico reale (ad esempio T dei messaggi periodici o λ di quelli casuali) e confrontarli con le specifiche imposte dal modello teorico.

Tutti i nodi del sistema utilizzano il T89C51CC01 della Atmel che costituisce un esempio di microcontrollore (µC) a 8 bit dedicato ad applicazioni su rete CAN. Tale dispositivo fornisce numerose periferiche di diverso tipo integrate in un unico cip e la sua struttura interna viene mostrata in Figura 3.2 attraverso uno schema funzionale a blocchi.

Senza scendere nel dettaglio [14] è possibile analizzare le caratteristiche di alcuni di questi dispositivi ed i relativi meccanismi di funzionamento a cui faremo riferimento nella trattazione successiva.

Figura 3.2: Struttura interna del T89C51CC01.

o SFR. L’uso di alcuni registri chiamati SFR (Special Function Register) permette di gestire la quasi totalità delle periferiche del microcontrollore. Nel caso del T89C51CC01, 34 di essi vengono utilizzati per gestire il CAN controller integrato. Ogni SFR risiede nella memoria dati interna al sistema ed è accessibile in tempi molto brevi; per questo motivo la struttura single-cip risulta particolarmente efficiente nella gestione della comunicazione fra la CPU e le varie periferiche.

o Message object. Un message object o “canale” è un’area di RAM che viene gestita dal CAN controller per memorizzare le informazioni relative ai messaggi che il micro deve inviare o ha ricevuto. Ogni canale occupa 20 byte: identificatore e maschera (4+4), dati (8), timestamp (2), registro di configurazione (1), registro di stato (1). Nel T89C51CC01 sono presenti 15 canali differenti che possono essere gestiti attraverso un sistema di paginazione per mezzo di alcuni SFR. Ogni message object può essere configurato indipendentemente dagli altri in modalità di trasmissione, ricezione o disabilitata; è inoltre prevista la modalità di buffer di ricezione. o UART. Il T89C51CC01 dispone di una porta di comunicazione seriale di tipo full duplex in cui ricezione e trasmissione possono avvenire

contemporaneamente anche a differenti bit-rate. Il circuito di gestione della porta è una UART (Universal Asynchronous Receiver/Transmitter) e l’accesso ai registri di trasmissione e ricezione avviene per mezzo di un unico SFR chiamato SBUF (Serial BUFfer register).

o CAN Interrupt. La generazione di una interruzione di programma può essere attivata al verificarsi di una delle seguenti condizioni: corretta ricezione di un messaggio, avvenuta trasmissione di un messaggio, buffer di ricezione pieno, rilevamento di un errore secondo le specifiche previste dal protocollo, overflow di un timer o di un contatore.

o Generazione del clock. Il piedino XTAL1 del T89C51CC01 rappresenta l’ingresso del segnale di clock del sistema. Il core del microcontrollore richiede 12 periodi di clock per ciclo di macchina ma è possibile attivare una modalità di funzionamento (settando il bit X2 del registro CKCON) che consente di raddoppiare la frequenza di lavoro impostata esternamente. Attivata tale modalità è come se il micro lavorasse con 6 periodi di clock per istruzione. E’ inoltre possibile abilitare tutte le periferiche del circuito a lavorare in questa modalità configurando in modo opportuno i restanti bit del registro CKCON.

o Timer/Counter. Il T89C51CC01 implementa tre diversi timer/counter a 16 bit (Timer0,Timer1,Timer2). Nella modalità timer ciascuno di essi è in grado di scandire un periodo di tempo programmato e generare, alla fine, una richiesta di interruzione. Il Timer2 può essere inoltre utilizzato per impostare la baud-rate1 di trasmissione della UART secondo la seguente formula : ] / [ * 32 2 * 2 2 s bit n f rate Baud X T osc UART= −

dove fosc rappresenta la frequenza dell’oscillatore collegato al piedino

XTAL1 del T89C51CC01 ed n indica che il registro formato dall’unione di due SFR chiamati RCAP2H e RCAP2L, con cui si accede al Timer2,

1 Poiché nella linea di trasmissione seriale viaggiano solo i livelli logici 0 e 1, la baud-rate equivale

deve essere caricato con il valore 65536-n. T2X2 vale 0 se il Timer2 lavora con 6 periodi di clock per ciclo di macchina, 1 altrimenti.

Scegliendo ad esempio n = 9 con fosc=16 MHz è possibile ottenere una

baud-rate pari a 111111Hz approssimando, con un errore relativo del 3.5%, il valore 115.2 kbit/s che costituisce la frequenza più alta utilizzabile nelle trasmissioni seriali con il PC.

o In-System Programming. L’ISP consente per mezzo del bootloader di programmare e riprogrammare il microcontrollore senza rimuoverlo dal sistema in cui è stato inserito. La stessa ATMEL fornisce il T89C51CC01 in due versioni: nella prima il bootloader (di tipo standard) viene precaricato in un’area di memoria detta FM1 e consente la programmazione del microcontrollore attraverso la UART; la seconda versione implementa questa funzionalità tramite il bus CAN. L’integrato presente in laboratorio utilizza il bootloader standard e quindi può essere programmato tramite collegamento seriale (UART) inviando il codice da eseguire direttamente dal PC.

o Processore CAN. Senza fornire una descrizione dettagliata dei blocchi funzionali del processore CAN, per la quale rimandiamo al relativo datasheet [14], la sua struttura interna permette di realizzare tutte le operazioni collegate alla gestione dei dati da inviare sul bus (stuffing/destuffing, cyclic redundancy check, automatic reply mode, error confinement, etc). E’ inoltre possibile, utilizzando appositi SFR (chiamati BRP, SJW, PRS, PHS1, PHS2), specificare la velocità di trasmissione del traffico sul bus CAN; i dati possono viaggiare ad 1 Mbps, 800 kbps, 500 kbps, 250 kbps fino a 125 kbps.

Il processore CAN risulta inoltre compatibile sia con le specifiche del formato standard (2.0 A) che di quello esteso (2.0 B).

Prima di analizzare più dettagliatamente il funzionamento di ciascun nodo, è necessario fare alcune considerazioni riguardanti gli strumenti software utilizzati.

o I programmi che hanno permesso di generare i modelli di traffico sul bus,

sono stati realizzati attraverso l’ambiente di sviluppo software integrato “µVision2” di Keil Software. Tale ambiente, dedicato alla creazione di applicazioni per i microprocessori delle famiglie C51 e C251, combina in un’unica interfaccia utente la gestione del progetto, l’editazione del codice sorgente, la compilazione ed il debugging. E’ stato utilizzato il linguaggio di programmazione C ed i vari moduli sono stati tradotti in formato Intel HEX per programmare il microcontrollore.

o Per poter trasferire i file Hex al T89C51CC01 attraverso collegamento seriale, è stata utilizzata l’applicazione “ATMEL Flip”.

o Per effettuare il trasferimento seriale dei dati fra PC e microcontrollore in fase di esecuzione del programma che genera il traffico periodico, si è utilizzato il software “HyperTerminal”.

o Per realizzare i dati utili alla generazione del traffico casuale ed inviarli, via seriale, al microcontrollore, è stato utilizzato invece l’ambiente di programmazione LabVIEW 5.1 fornito dalla National Instruments.

Documenti correlati