|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 3
|
Somma di byte da C a Basic
Ciao a tutti.
Voglio utilizzare il sensore di pressione BMP85 su duinomite (MMBasic), prendendo spunto dai tanti esempi che si trovano in rete per Arduino (C). Quando col Basic vado a leggere le word di 16 bit memorizzate nel sensore, mi tornano indietro solo dei numeri decimali positivi, valori sbagliati. Con Arduino, infatti, tornano indietro alcuni di questi numeri decimali positivi, altri negativi (valori corretti). Parlo dei dati di calibrazione. Il codice che ho scritto, per leggere la prima word: 5 DIM BYTE(2) 10 I2CEN 100,100 20 I2CSEND &H77, 0, 1, &HAA 30 I2CRCV &H77, 0, 2,BYTE(1) 40 A=BYTE(1)*256+BYTE(2) 50 I2CDIS 60 PRINT A I valori di BYTE(1) e BYTE(2) che leggo sono corretti, il problema sta nella somma di questi due byte. Come posso risolvere? Devo convertire BYTE(1) e BYte(2) in binario, fare la somma, poi riconvertire in decimale con complemento a due, o c'è un modo più rapido? Poi, credo avrò problemi analoghi anche nel leggere il valore di temperatura e di pressione. Grazie! Ultima modifica di audley : 15-11-2012 alle 02:06. Motivo: aggiunti dettagli |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 3
|
Risolto:
se A > 32767, allora A=A-65536 Così funziona. Ma perchè? Qualcuno lo sa? Ultima modifica di audley : 18-11-2012 alle 00:39. |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Quote:
In complemento a due, un valore a 16 bit va da -32768 a 32767 mentre in binario puro da 0 a 65535. L'aggiustamento serve proprio a determinare il corretto valore negativo in complemento a due che non esiste in binario puro. |
|
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Nov 2012
Messaggi: 3
|
Ti ringrazio molto per la delucidazione!
Nel frattempo ho completato il codice e devo dire che sono molto contento di questo trasduttore Bosh, funziona molto bene. Un saluto a tutti, anche a quelli che hanno "perso tempo" a leggere il mio post. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:31.




















