Cerco qualcuno che mi faccia capire come devo fare il programma con questo chip HMC681 che usa il protocollo SPI , ho capito il principio di come funziona il protocollo SPI ma solo il principio !! ho cercato in rete un esempio base , quello che mi serve e che devo scrivere all'interno del chip HMC681.
Grazie !!
Grazie di avermi risposto Uwefed
Oltre a Google ho cercato anche qui nel Forum un programma che mi porti a capire dove cavolo sbaglio , ho fatto varie prove ma non ho ottenuto quello che sto cercando di fare , ho cercato di adattare questo:
*/
#include "SPI.h" // Libreria SPI
int ss=10; // Assegno il pin 10 come SS
void setup()
{
pinMode(ss, OUTPUT); imposto il pin ss in OUTPUT
SPI.begin(); //abilito il SPI bus
SPI.setBitOrder(MSBFIRST); // definisco dove iniziare la trasmissione dei dati
}
void loop()
{
digitalWrite(ss, LOW); // pongo il pin SS basso
SPI.transfer(0); // inizio trasmettere i bit
SPI.transfer(999); // valore da trasmettere
digitalWrite (ss, HIGH );
}
questo dovrebbe scrivere nella memoria del HMC681 il valore da me scelto per variare il quadagno in uscita , ma verificando questo dato l'uscita della stesso non varia ..
Sono molto deluso perche non riesco capire dove sbaglio nella procedura !! Spero di essere riuscito a spiegarmi !!
Grazie
Il codice DEVI racchiuderlo nei tag code, vedi sezione 7 del regolamento, spiega bene come fare ( pulsante </> ).
Altrimenti parte del codice può essere visualizzata male o mancare perchè interpretato come attributo del testo stesso.
Magari un link al prodotto che vuoi usare. In internet non lo trovo.
Nid69ita
Non riuscivo capire come fare , poi ci provo !!
Vi allego la pagina del HMC681 del Serial Control Interface ..
*/
#include "SPI.h" // Libreria SPI
int ss=10; // Assegno il pin 10 come SS
void setup()
{
pinMode(ss, OUTPUT); imposto il pin ss in OUTPUT
SPI.begin(); //abilito il SPI bus
SPI.setBitOrder(MSBFIRST); // definisco dove iniziare la trasmissione dei dati
}
void loop()
{
digitalWrite(ss, LOW); // pongo il pin SS basso
SPI.transfer(0); // inizio trasmettere i bit
SPI.transfer(999); // valore da trasmettere
digitalWrite (ss, HIGH );
}
HMC681A, è un amplificatore RF con gain variabile tramite bus seriale sincrono compatibile SPI.
La SPI.setBitOrder() è deprecata, al suo posto va usata la SPISettings e deve essere indicato il modo SPI da usare, sono quattro e se si mette quello errato il bus non dialoga.
Nel caso specifico la spi.transfer() non va bene perché lavora sul singolo byte, valori tra 0-255, si deve usare la spi.transfer16() che lavora con una word di 2 byte.
Grazie Astrobeed
Provo fare come mi hai indicato , speriamo bene !!!
Ho provato fare le modifiche ma nulla , anzi mi da dei errori nella compilazione su SPISettings e sul spi.transfer16() , sicuramente e come utilizzo lo sbaglio !! :o
Posta il codice completo, così possiamo vedere dove si trova l'errore.
#include "SPI.h" // Libreria SPI
int ss=10; // Assegno il pin 10 come SS
void setup()
{
pinMode(ss, OUTPUT); // imposto il pin ss in OUTPUT
SPI.begin(); //abilito il SPI bus
SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0)); // definisco il modo0 per sincronizzare la trasmissione
}
void loop()
{
digitalWrite(ss, LOW); // pongo il pin SS basso
SPI.transfer(8); // inizio trasmettere i bit
SPI.transfer(0); // send value (0~255)
digitalWrite (ss, HIGH );
}
Buongiorno
Una Caporeto con sto SPI !! non funziona nulla !! non riesco capire se riceve o nò i comandi che invio !!
Ragazzi la vecchiaia fa brutti scherzi !!! :o :o :o
Il programma postato funziona e solamente che ho invertito l'ingresso con l'uscita perchè e indicato in Cinese !!
sembra che ora funzioni tutto !! faccio le prove e poi vi dico !!
Grazie !!

PaoloP:
:o
Allego l'immagine , poi il venditore a messo l'etichetta al rovescio rispetto alla immagine che ho allegato !!

Allego foto di quello che ho fatto le prove !!