Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

SPI con periferica a 16 bit

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] SPI con periferica a 16 bit

Messaggioda Foto Utentemros » 5 gen 2013, 10:48

Buongiorno e buon anno a tutti

Iniziamo il 2013 con un nuovo problema.
Dovrei dialogare, mediante il protocollo SPI, con un dispositivo (MAX6675) utilizzando un PIC16...è posibile farlo considerando che il MAX invia un dato di 16 bit? Come si gestisce tale dato?? sono rimasto ai miei vecchi 8 bit e non so come fare !!

grazie
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[2] Re: SPI con periferica a 16 bit

Messaggioda Foto UtenteTardoFreak » 5 gen 2013, 12:11

Invece di trasmettere un byte ne trasmetti due. Per sapere se trasmettere prima la parte alta o quella bassa della word a 16 bit devi consultare il datasheet del dispositivo da comandare.
In pratica:
- Trasmetti il primo byte.
- Aspetti che la trasmissione sia finita
- Trasmetti il secondo byte
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentemros » 5 gen 2013, 14:29

ok !

ma in ricezione mi manderà un informazione a 16 bit, come faccio ad acquisirla?

grazie
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[4] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentesimo85 » 5 gen 2013, 14:44

Nella stessa maniera che ti ha spiegato Foto UtenteTardoFreak.
mros ha scritto:ma in ricezione mi manderà un informazione a 16 bit, come faccio ad acquisirla?


Chi è il ricevitore? Il PIC giusto? O il MAX6675?

Che PIC stai utilizzando?
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[5] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentemros » 5 gen 2013, 15:10

utilizzo un pic16f877 e immagino che il max trasmetta, ogni volta che viene abilitato, la lettura di una termocoppia...quindi il PIC funge da ricevitore...il problema che mi pongo è che il max trasmette un segnale a 16 bit di cui solo 12 solo quelli che mi interessano...con l'spi interno del PIC io posso leggere solo i primmi 8 bit e mentre svuoto il buffer il max credo abbia già trasmesso gli altri otto bit..con la consegunza che perdi questi ultimi dati trasmessi..
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[6] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentesimo85 » 5 gen 2013, 15:24

mros ha scritto:con la consegunza che perdi questi ultimi dati trasmessi..

Non usando le interrupt. La interrupt viene eseguita quando è terminata la trasmissione o la ricezione, in pratica quando si svuota o si riempie il registro a scorrimento e buffer interno.

In tutto il tempo in cui stai ricevendo l'ultimo nibble, hai tutto il tempo di salvare il contenuto del buffer in un'altra locazione di memoria, fuori o dentro l'interrupt.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

0
voti

[7] Re: SPI con periferica a 16 bit

Messaggioda Foto UtenteTardoFreak » 5 gen 2013, 16:24

Per la lettura fai la stessa cosa: prima leggi un byte e poi l' altro.
Non capisco dove stia la difficoltà. :-M
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[8] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentemros » 5 gen 2013, 16:49

grazie

probabilmente gioca il fatto della poca esperienza....quindi se ho ben capito, dopo aver abilitato il max, il PIC inizia a mandare il segbnale del clock e la perificarica inizia mandarmi , ad ogni clock, il relativo bit....ricevuti i primi8 bit ilclock si ferma mettendo in attesa la periferica , dopo lo svuotamento del buffer... riinterrogo la periferica che mi manda i successivi 8 bit?

ho capito bene

grazie
Avatar utente
Foto Utentemros
10 1 5
Frequentatore
Frequentatore
 
Messaggi: 131
Iscritto il: 28 giu 2010, 9:23

0
voti

[9] Re: SPI con periferica a 16 bit

Messaggioda Foto UtenteTardoFreak » 5 gen 2013, 16:53

Si, hai capito bene. :ok:
D' altro canto come fai ad utilizzare, ad esempio, una FLASH da 4 MB che ha bisogno di indirizzi a 32 bit?
Mandi l' indirizzo in 4 bytes.
Oppure come fai per leggere, ad esempio, una serie di 5 shift register da 8 bit?
Leggi 5 bytes consecutivamente.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[10] Re: SPI con periferica a 16 bit

Messaggioda Foto Utentesimo85 » 5 gen 2013, 17:02

Però non è che viene messa in attesa la periferica. L'SPI può rimanere sempre attiva.

Nel main fai quello che stai facendo. Nel mentre il registro a scorrimento interno SSPSR va ricevendo. Quando sono stati ricevuti 8 bit, l'esecuzione del firmware passa alla funzione di interrupt e il contenuto del registro SSPSR viene salvato in SSPBUF (il tutto in maniera asincrona).

Nella funzione di interrupt puoi leggere e salvare in un altro buffer da 1 byte il contenuto di SSPBUF, anche se nel frattempo il registro SSPSR sta ricevendo altri bit di ingresso.

Spero di essermi spiegato bene.
Avatar utente
Foto Utentesimo85
30,9k 7 12 13
Disattivato su sua richiesta
 
Messaggi: 9927
Iscritto il: 30 ago 2010, 4:59

Prossimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti