Indirizzi accelerometro

Vectoryzed

Membro
2 Aprile 2014
4
0
1
Buongiorno,
vorrei sottoporvi un problema che ho con gli indirrizi dell'accelerometro (tramite i quali posso settare anche la modalità) da inviare. Non so da dove escono.

Vi segnalo il problema sul codice preso direttamente su questo forum, così potete capire meglio cosa intendo.

Nel codice seguente, per esempio:

PHP:
//LETTURA DI X

while((I2C1->SR2&BUSY)==BUSY); //ATTENDE CHE L'I2C1 SIA LIBERO
I2C1->CR1 |= (uint16_t) (1<<8); //STARTwhile((I2C1->SR1&SB)!=SB); //CONDIZIONE DI START
dummy16=I2C1->SR1; //leggendo lo SR lo azzero
I2C1->DR=(uint8_t)0x32; //INVIO L'INDIRIZZO DELL'ACCELEROMETRO MOD. W
while((I2C1>SR1&ADDR)!=ADDR); //ATTENDO CHE IL TRASFERIMENTO DELL'INDIRIZZO TERMINI
dummy16=I2C1->SR1; //leggendo lo SR lo azzero
dummy16=I2C1->SR2; //leggendo lo SR lo azzero

invio quel "0x32".

Qui, invece:

PHP:
while((I2C1->SR1&TxE)!=TxE); //ATTENDO CHE IL CANALE DI TRASMISSIONE SIA VUOTO
I2C1->DR=(uint8_t)((0x80)|X_L); //PUNTO IL REGISTRO X_L in modalità MULTIPLA
while((I2C1->SR1&(TxE|BTF))!=(TxE|BTF)); // CONTROLLO CHE IL TRANSFERIMENTO VENGA TERMINATO
I2C1->CR1 |= (uint16_t) (1<<8); //RESTARTwhile((I2C1->SR1&SB)!=SB); //CONDIZIONE DI START
dummy16=I2C1->SR1; //leggendo lo SR lo azzero

ho quel "0x80" e settando proprio questo valore punto il registro che mi serve.

Ma da dove vengono fuori? Come faccio a capire quale indirizzo inviare o che valore devo mettere per puntare un determinato registro?

Sui manuali a disposizione non sembra esserci qualcosa di utile...

Grazie!
 

Seguici su Facebook