grazie. Ho dato una lettura veloce.
Ho capito che:
i byte devono essere trasferiti su una nuova variabile di tipo long (32 bit).
il primo byte rappresenta i bit da 0 a 7
il secondo byte rappresenta i bit da 8 a 15
il terzo byte rappresenta i bita da 16 a 24
Il posizionamento dei bit nella nuova variabile lo eseguo attraverso gli operatori shift left o shift right.
var |= byte1 ;
var <<= 8;
var |= byte2 ;
var <<= 8;
var |= byte3 ;
alla fine var contiene il valore unificato ?
Praticamente ho montato l'ADS1252 su un adattatore (la mia prima saldatura SMD)
Ho utilizzato pasta salda.
Domanda come faccio ad eliminare la pasta salda in eccesso ?
Basta utilizzare un normale solvente tipo acetone per le unghie e cotonfioc (o come si chiama)
Visto le immagini allegate:
il puntino di riferimento qual'è ?
Come faccio a capire i pin corretti ?
Edit: il riferimento è il cerchietto che somiglia alla c del copyright ?
Attento, come stai facendo tu (... ovvero partendo da byte1) ... te lo trovi tutto a sinistra (fai due volte lo shift) ... devi partire da quello che dovrà finire tutto a sinistra (byte3 - bit 23..16) poi proseguire con quello di mezzo (byte2 - 15..8) ed infine quello iniziale (byte1 - 7..0).
Inoltre, per evitare possibili guai ...
unsigned long var;
La pasta salda (flussante) in eccesso lo togli con un solvente ... esistono quelli specifici, va bene l'acetone (se ancora lo trovi) e ... ottimo, è il "tetracloruro di carbonio" ... che però difficilmente ti vendono data la tossicità
I pin li identifichi guardando il datasheet del componente ... a pag. 2. SI, il piccolo cerchio che vedi sul disegno, lo trovi anche sul componente.
mi è venuto un dubbio. se devo collegare i tre adc allo stesso arduino come faccio ?
i pin sclk (pin 6) li collego al pin 13 arduino
i pin dout/drdy (pin 5) li collego al pin 12 arduino
per accedere al valore acquisito di ogni singolo adc devo utilizzare il pin clk (pin 4) collegando il pin di ogni singolo adc ad un pin diverso dell'arduino ?
Ma con che libreria li leggi ???
... perché NON mi sembra che quel chip abbia un'interfaccia standard ... mi sembra piuttosto che occorre un programma che deve aspettare il DRDY e a quel punto leggere dando un segnale di clock su SCLK e leggere i bit su DOUT ...
Il chip è quindi in grado di parlare con la porta SPI con solo DUE fili ... dato che NON ha il CS, ma .. questo a te crea un bel problema, dato che ne vuoi gestire TRE !
I pin dell'SPI sono fissi e non li puoi cambiare (11, 12, 13) e ... senza il CS come disabiliti i chip non coinvolti ?
Vedo due soluzioni ...
Ti scrivi tu una libreria che gestisce DUE pin qualsiasi (il protocollo che usa NON è difficile)
Aggiungi dell'HW in modo da selezionare quale coppia DRDY/DOUT - SCLK è attiva (bastano degli switch elettronici)
la seconda soluzione la escludo non ho idea di come si fa.
La prima potrei provare. Il punto di partenza è la libreria ufficiale SPI di arduino ?
Una terza soluzione potrebbe essere, tre arduino di cui due mini light 05, ognuno dei quali gestisce il proprio ADC. dopodichè i mini inviano il valore all'arduino master ? c'è da valutare le prestazioni e le velocità ?
Però prima provo la soluzione software. suggerimenti da dove partire ?
gcam:
Però prima provo la soluzione software. suggerimenti da dove partire ?
Io partirei a mente sgombra, senza pensare all'SPI dal datasheet ...
... è spiegato piuttosto bene come funziona, da pagina 9 in poi. Guarda anche gli schemi di Fig. 12 e seguenti.
Si tratta di aspettare che i dati siano pronti (DRDY = LOW) quindi fornirgli un clock (un segnale LOW - HIGH - LOW con una certa tempistica) su SCLK e, in corrispondenza, leggere i dati su DOUT (stesso pin di DRDY). Non mi sembra una cosa così impossibile
gcam:
la seconda soluzione la escludo non ho idea di come si fa.
Non la scartare ... cerca "digital multiplexer" e vedrai che ci sono tantissimi chip in cui dai un indirizzo e colleghi le entrare selezionate con le uscite fisse
gpb01:
Ma con che libreria li leggi ???
... perché NON mi sembra che quel chip abbia un'interfaccia standard ... mi sembra piuttosto che occorre un programma che deve aspettare il DRDY e a quel punto leggere dando un segnale di clock su SCLK e leggere i bit su DOUT ...
ritornando alla soluzione hardware: basta collegare i pin dell'adc (DRDY/DOUT - SCLK) a due ingressi del multiplexer e poi selezionare da arduino a quali canali accedere e quindi a quale adc accedere ?
SI, ma occhio che un pin e in ingresso ed uno in uscita ... quindi uno in un verso ed uno nell'altro ... mi sa che ti servono DUE multiplexer o ... dei "digital switch" (veri interruttori digitali pilotati come un mux). Prova a cercare su Google
Guglielmo
P.S. : Prova a guardare QUI ... o qualche cosa di simile