Ciao a tutti, vi scrivo per chiedervi aiuto riguardo un codice scritto in C per microcontrollori freescale.
il mio codice è il seguente:
if(my_flag_scan == 1)
{
my_flag_scan = 0;
responseScanConfig[0] = INIZIO_MSG;
responseScanConfig[1] = AQUISITION_MSG_CODE;
for(channel = 0; channel< CHANNELS_NUMBER; channel++)
{
temp_.number = (unsigned short)(rssi_value_matrix_med[channel]);
responseScanConfig[2+(2*channel)] = temp_.byte[0];
responseScanConfig[3+(2*channel)] = temp_.byte[1];
}
responseScanConfig[34] = 0;
responseScanConfig[35] = 0;
responseScanConfig[36] = LSB(best_channel_glob);
responseScanConfig[37] = MSB(best_channel_glob);
responseScanConfig[38] = 0;
responseScanConfig[39] = 0;
responseScanConfig[40] = FINE_MSG;
error = USB_DeviceCdcAcmSend(s_cdcVcom.cdcAcmHandle, USB_CDC_VCOM_BULK_IN_ENDPOINT, responseScanConfig, 41);
if (error != kStatus_USB_Success)
{
/* Failure to send Data Handling code here */
usb_echo("Error...\r\n");
}
}
In pratica in questo codice copio dei dati nel vettore responseScanConfig[] per trasferirli via usb. Tali dati li visualizzo per mezzo di un piccolo software ( che sto usando per questioni di debug)
Il vettore rssi_value_matrix_med[channel] è un vettore di double dichiarato in un file .h, con modificatore "extern" il cui valore lo assegno in un file .c diverso da questo del codice che vi ho postato.
Il cast l'ho fatto perché trasferisco degli unsigned short.
Fin qui tutto bene. il problema invece nasce quando al posto di rssi_value_matrix_med uso un array di unsigned short.
L'array di unsigned short, è dichiarato nello stesso file .h e i valori vengono assegnati nello stesso file .c ma ho errori. Il che mi sembra quasi assurdo visto che i dati sono uguali. L'unico modo che ho per vedere qualcosa è fare un'operazione, ad esempio un prodotto per 10. In questo modo, se prima di copiare i valori in responseScanConfig faccio un prodotto( o anche una divisione) allora riesco a visualizzare il dato corretto e moltiplicato (o diviso).
Vi giuro che questa cosa mi sta facendo usicre di senno.
Avete qualche suggerimento da darmi?
Grazie
salutoni