|
|||
SPI nei PIC - 4 |
|||
|
|||
|
|||
ESEMPIO APPLICATIVO DELLO SPI Riportiamo un esempio applicativo dello SPI e il relativo
codice per mostrare come si implementa una comunicazione SPI su un
PIC. In questo esempio sono utilizzati due PIC16F876 della Microchip.
Uno è settato come MASTER
e l'altro come SLAVE. Il MASTER ha un contatore interno che genera dei
dati da inviare in modalità SPI allo SLAVE che ha il compito di
visualizzarli mediante
diodi LED. Lo SLAVE inoltre ritrasmetterà i dati al MASTER che, in
questo caso, non
userà. Fig. 3: schema semplificato dell'esempio Come si può vedere dalla figura 3 si ha un collegamento SPI fra il MASTER ed lo SLAVE, entrambi realizzati con un pic 16F876. I dati, trasmessi dal MASTER, sono ricevuti ed elaborati dallo SLAVE che li visualizza su 8 LED collegati alla PORTB. Allo stesso tempo, lo SLAVE trasmetterà i dati indietro. Il MASTER non userà questi dati ma deve leggerli per svuotare il suo SSPBUF. Al piedino RA2 del MASTER è associata la funzione SS ovvero di selettore dello SLAVE o SS. IMPLEMENTAZIONE DEL MASTER SPI In figura 4 e' riportato il diagramma di flusso implementato dal codice di esempio per il MASTER SPI. Fig. 4 :diagramma di flusso per il MASTER SPI Come si può vedere i primi passi sono usati per configurare il dispositivo, compreso il modulo SSP per la modalità SPI. Successivamente i dati sono caricati sul registro SSPBUF per essere trasmessi. I dati, in questo esempio, sono generati da un contatore ma potrebbero provenire da altri fonti. Un ciclo controlla se il trasferimento di SPI e' stato completato leggendo il bit BF del registro SSPSTAT. Una volta che i dati sono stati trasferiti il registro SSPBUF, che ora contiene i dati inviati dallo SLAVE viene letto. In questo esempio, il MASTER non usa questi dati ma potrebbero essere usati. I dati devono essere sempre letti alla conclusione di ogni trasferimento anche se i dati non sono usati nel programma, come in questo esempio. Dopo la lettura del SSPBUF, si incrementa il contatore per generare un nuovo dato da trasmettere e il ciclo di trasmissione ricomincia. Essendo l' SPI è uno scambio di dati, Il WAIT inserito nel flusso e' necessario per dare il tempo che occorre all'occhio umano per rilevare i cambiamento sui LED. IMPLEMENTAZIONE DELLO SLAVE SPI Consideriamo ora lo SLAVE. Come accennato precedentemente, lo SLAVE prenderà i dati dal MASTER e li visualizzerà su otto LED collegati alla PORTB. Lo SLAVE inoltre rispedirà i dati ma questi saranno scartati dal MASTER. Fig. 5:Diagramma di flusso per lo SLAVE Il diagramma di flusso per lo SLAVE e' molto simile al diagramma di flusso per il MASTER, ma ci sono alcune differenze. Logicamente il modulo di SSP e' configurato come SLAVE. Nella fase in cui i dati sono caricati in SSPBUF per essere rinviati al MASTER, nessun dato è caricato. Tuttavia, se uno desiderasse restituire i dati, potrebbero farloi. Il programma di esempio include un insieme delle osservazioni testuali che indicano questa posizione nel programma dove poter inserire il codice.
|
|
||
|
|||
|
|||
|