SPI

11 Anni 6 Mesi fa #6 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
Ciao Fausto,

fai attenzione a itoa e void sendUSART(char msg)
Invii una stringa ad un carattere. Questo fara' funzionare male la trasmissione e non sei certo di quanti caratteri verranno inviati.

Non ho controllato il dettaglio di tutto ma questo e' un problema che potrebbe causare quello che vedi.

Saluti,

Mauro

P.S.
Noto che con gli accenti hai il mio stesso problema e devi usare ' ! :)

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 #7 da Fausto
Risposta da Fausto al topic SPI
Ciao, effettivamente itoa mi restituisce una stringa. ho incorporato in una unica funzione allora:
ma i ritardi di 2.8 sec ci sono sempre. Probabilmente sbaglio qualcosa anche nel manovrare la stringa poichè non mi va' a capo.

void pressR(void)
{
int value_ADC;
char dataChar[5];
dataChar[4]=0x0A; //LF
dataChar[5]=0x0D; //CF
value_ADC=get_ADC();
itoa(value_ADC,dataChar);
putrsUSART("value:");

putsUSART(dataChar);

while(BusyUSART());



int get_ADC()
{
int adc=1027;

LATBbits.LATB2=0;
delay_ms(100);
only after SS is fault down*/


LATBbits.LATB2=1;//Active SS pin 23
delay_ms(100);

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 #8 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
I caratteri LF e CF li devi aggiungere dopo la chiamata itoa.
in particolare devi vedere dove itoa mette il carattere di fine stringa e li' metti prima LF e alla cella successiva CF. Alla cella ancora successiva devi rimettere il carattere '\0' di fine stringa.

La tua stringa e' comunque corta.
Un ADC ritorna un valore fino a 1023 ovvero 4 digit
Se vuoi LF e CR hai bisogno di altre due celle nell'array, ed infine il carattere di fine stringa.
...per un totale di 7 ovvero devi avere:

char dataChar[7];

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 #9 da Fausto
Risposta da Fausto al topic SPI
Ho provato nel seguente modo, come mi hai detto tu Mauro, ma senza risultati. PS anche il questo modo non va a capo ( CR )

void pressR(void)
{
int value_ADC;
char dataChar[7];
char *String;

value_ADC=get_ADC();
itoa(value_ADC,String);

String[5]=0x0A; //LF
String[6]=0x0D; //CR
String[7]=´\0´;

putrsUSART("value:");
while(BusyUSART());
putsUSART(String);
while(BusyUSART());
}

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 #10 da Mauro Laurenti
Risposta da Mauro Laurenti al topic SPI
Ciao,

il valore numerico viene scritto correttamente?
Che terminal usi?

A seconda dei terminal potresti dover abilitare l'opzione della ricezione CR.
Alcune volte, di default, il carattere CR viene ignorato.

ma credo che il problema e' che ora hai

char *String;

...che non punta a niente! :)

Saluti,

Mauro

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