SPI

11 Anni 6 Mesi fa #26 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
Ciao,
nel while non stai facendo un confronto con 0 ma un'assegnazione = e non ==.
inoltre string e' l'inizio dell'array ovvero il puntatore.
Se avessi messo un confronto non avrebbe funzionato nulla.
l'errore ha preservato ancora il funzionamento.

Quindi devi togliere il while perche' i ha il valore giusto per mezzo di strlen.

Saluti,

Mauro
Ringraziano per il messaggio: Fausto

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 6 Mesi fa #27 da StefA
Risposta da StefA al topic SPI

Rendering Error in layout Message/Item: array_keys(): Argument #1 ($array) must be of type array, null given. Please enable debug mode for more information.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • StefA
  • Avatar di StefA
  • Moderator
  • Moderator
Di più
11 Anni 6 Mesi fa #28 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
Si il while richiederebbe anche una negazione per poter funzionare correttamente ma correggendo il while avresti comunque la doppia ricerca. Nel caso specifico o si usa strlen o il while.
Se uno cerca il codice strlen mi aspetto qualcosa molto simile al codice con il while, piu' il return del conteggio.

Saluti,

Mauro

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
11 Anni 6 Mesi fa #29 da Fausto
Risposta da Fausto al topic SPI
mmmm
ho provato a inserire finalmente le impostazioni per la SPI, ma non mi risponde :( .

Ho usato sia la libreria sia usando un linguaggio a basso livello.

Grazie anticipato per qualsiasi spunto

int get_ADC(void)
{
int adc=123;
unsigned char RX_data_L;
unsigned char RX_data_H;
/*Activate the Chip select*/
LATBbits.LATB2=1;

/*Clock Phase = 0: the MSB bit is in the data line
only after SS is fault down*/

/*OpenSPI(SPI_FOSC_4,MODE_01,0);*/
SSPSTATbits.SMP=0;
SSPSTATbits.CKE=1;

SSPCON1bits.SSPEN=0b00100000;

/*Activate the Chip select*/

LATBbits.LATB2=0;

//while(!DataRdySPI());
while(!SSPSTATbits.BF)

/*save higest 8 bits data in dummy variable*/
RX_data_H=SSPBUF;
//while(!DataRdySPI());
while(!SSPSTATbits.BF)

/*save lowest 8 bits data in dummy variable*/
RX_data_L=SSPBUF;
LATBbits.LATB2=1;

CloseSPI();

adc =(((int)RX_data_H) <<8)|RX_data_L;

LATBbits.LATB2=1; //Active SS pin 23
CloseSPI();
return(adc);

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Fausto
  • Avatar di Fausto
  • Premium Member
  • Premium Member
Di più
11 Anni 6 Mesi fa #30 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
Ciao Fausto,

non ho visto le impostazioni, ma la cosa da fare con l'SPI e' quella di avere un oscilloscopio tra le mani.
Il protocollo e' molto semplice e un oscilloscopio mostra subito il problema.
Dati in uscita e ingresso.

Se hai problemi puoi sempre controllare le impostazioni pin (I/O).

Saluti,

Mauro
Ringraziano per il messaggio: Fausto

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login