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 ' !
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
- Moderator
Riduci
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);
}
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
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 143
- Ringraziamenti ricevuti 1
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
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.
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());
}
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
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 143
- Ringraziamenti ricevuti 1
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
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.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.