35 lines
979 B
C++
35 lines
979 B
C++
size_t _I2C_write(uint8_t *data, size_t quantity)
|
|
{
|
|
for(size_t i = 0; i < quantity; ++i) {
|
|
if(!WIRE.write(data[i])) {
|
|
return i;
|
|
}
|
|
}
|
|
return quantity;
|
|
|
|
}
|
|
|
|
uint8_t I2C_ecrire_registre(int adresse_i2c, uint adresse_registre, unsigned char * donnees, uint taille_donnees){
|
|
// Ecriture
|
|
WIRE.beginTransmission(adresse_i2c);
|
|
WIRE.write(adresse_registre);
|
|
_I2C_write(donnees, taille_donnees);
|
|
return WIRE.endTransmission(true);
|
|
}
|
|
|
|
uint8_t I2C_lire_registre(int adresse_i2c, uint adresse_registre, unsigned char * donnees_recues, uint taille_donnees){
|
|
int status;
|
|
byte temp;
|
|
WIRE.beginTransmission(adresse_i2c);
|
|
WIRE.write(adresse_registre);
|
|
status = WIRE.endTransmission(true);
|
|
|
|
WIRE.requestFrom(adresse_i2c, taille_donnees + 1);
|
|
// ceci contient l'adresse
|
|
if(adresse_i2c == I2C_SLAVE_chassi){
|
|
Wire.readBytes(&temp, 1);
|
|
}
|
|
// Et ceci les données
|
|
Wire.readBytes(donnees_recues, taille_donnees);
|
|
return status;
|
|
} |