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
SPI con periferica a 16 bit
Moderatore:
Paolino
13 messaggi
• Pagina 1 di 2 • 1, 2
0
voti
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
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.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Nella stessa maniera che ti ha spiegato
TardoFreak.
Chi è il ricevitore? Il PIC giusto? O il MAX6675?
Che PIC stai utilizzando?
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?
0
voti
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..
0
voti
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.
0
voti
Per la lettura fai la stessa cosa: prima leggi un byte e poi l' altro.
Non capisco dove stia la difficoltà.
Non capisco dove stia la difficoltà.

"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.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
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
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
0
voti
Si, hai capito bene.
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.
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.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
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.
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.
13 messaggi
• Pagina 1 di 2 • 1, 2
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 5 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

