Exemple #1
0
/**************************************************************************//*!
* @brief    Function reads current data from sensor's register 
*
* @param    *mag3110 - pointer to value buffer 
******************************************************************************/
int16_t MAG3110_ReadRawData_x(void) 
{
  byte ix = 0;
  int16_t x_val = 0;
  

  if(MAG3110_enabled == TRUE)
  {
    x_val = MAG3110_READ_REGISTER(REG3110_OUT_X_MSB);
    x_val = MAG3110_READ_REGISTER(REG3110_OUT_X_LSB);

    MAG3110_WRITE_REGISTER(REG3110_CTRL_REG2, 0x80);
    MAG3110_WRITE_REGISTER(REG3110_CTRL_REG1, 0x02);
    
    do {
      ix = MAG3110_READ_REGISTER(REG3110_DR_STATUS);
    }while((ix & X_DATA_RDY) != X_DATA_RDY);

    x_val = MAG3110_READ_REGISTER(REG3110_OUT_X_MSB);
    x_val <<= 8;
    x_val += MAG3110_READ_REGISTER(REG3110_OUT_X_LSB);
  }
  
  return x_val;
}
int16_t MAG3110_ReadRawData_z() {
	char r = 0;
	int16_t a = 0;
	if (MAG3110_Initialized == 1) {
		a = MAG3110_READ_REGISTER(5);
		a = MAG3110_READ_REGISTER(6);
		MAG3110_WRITE_REGISTER(17, 128);
		MAG3110_WRITE_REGISTER(16, 2);
		do {
			r = MAG3110_READ_REGISTER(0);
		} while (!(r & 4));
		a = MAG3110_READ_REGISTER(5);
		a = a << 8;
		a = a + MAG3110_READ_REGISTER(6);
	}	
	return a;
}
int MAG3110_Init() {
	char v = 0;
	bcm2835_i2c_begin();
	bcm2835_i2c_setClockDivider(2500);
	MAG3110_WRITE_REGISTER(16, 0);
	v = MAG3110_READ_REGISTER(7);
	if (v == 0xc4) {
		MAG3110_WRITE_REGISTER(17, 128);
		MAG3110_Initialized = 1;
	}
	return MAG3110_Initialized;
}
char MAG3110_ReadRawData(char* data) {
	char a = 0;
	short b = 0;
	if (MAG3110_Initialized == 1) {
		MAG3110_WRITE_REGISTER(17, 128);
		MAG3110_WRITE_REGISTER(16, 2);
		do {
			a = MAG3110_READ_REGISTER(0);
		} while ((a & 7) != 7);
		MAG3110_BULK_READ(1, 6, data);
	}
	return 1;
}
Exemple #5
0
/**************************************************************************//*!
* @brief    Function reads current data from sensor's register 
*
* @param    *mag3110 - pointer to value buffer 
******************************************************************************/
uint8_t MAG3110_ReadRawData(uint8_t * pdata) 
{
  byte ix = 0;
  int16_t z_val = 0;
  
  if(MAG3110_enabled == TRUE)
  {
    MAG3110_WRITE_REGISTER(REG3110_CTRL_REG2, 0x80);
    MAG3110_WRITE_REGISTER(REG3110_CTRL_REG1, 0x02);
    
    do {
        ix = MAG3110_READ_REGISTER(REG3110_DR_STATUS);

    }while((ix & ALL_DATA_RDY) != ALL_DATA_RDY);
    
    MAG3110_BULK_READ(REG3110_OUT_X_MSB, 6, pdata);
  }
  return TRUE;
}
Exemple #6
0
/**************************************************************************//*!
* @brief    The IIC Initialization for MMA7660
*
* @param    mod - current used module for conection
******************************************************************************/
uint8_t MAG3110_Init(void)
{
  byte who_i_am = 0;

  bcm2835_i2c_begin();
  bcm2835_i2c_setClockDivider(BCM2835_I2C_CLOCK_DIVIDER_2500); // The default	 
  
  MAG3110_WRITE_REGISTER(REG3110_CTRL_REG1, 0x00);

  who_i_am = MAG3110_READ_REGISTER(REG3110_WHO_AM_I);
	
  if(who_i_am == ID_MAG3110) 
  {
    MAG3110_WRITE_REGISTER(REG3110_CTRL_REG2, 0x80);
    MAG3110_enabled = TRUE;
  }
  
  return MAG3110_enabled;
}