in shakti/parashu/main.c [307:378]
void vTaskbmp280(__attribute__((unused)) void *pvParameters )
{
const TickType_t xDelay1000ms = pdMS_TO_TICKS( 10 );
uint32_t tempReadValue = 0;
uint32_t delay = 100;
i2c_init();
//Initialises I2C Controller
if(config_i2c(I2C, PRESCALER_COUNT,SCLK_COUNT))
{
log_error("\tSomething Wrong In Initialization\n");
return;
}
else
log_info("\tIntilization BMP280_STATUS_REGISTER Happened Fine\n");
write_bmp280_register(I2C, BMP280_CONFIG_REGISTER, 0xC0, delay);
write_bmp280_register(I2C, BMP280_CTRL_MEANS, 0x27, delay);
if(0 == read_bmp280_register(I2C, 0xD0, &tempReadValue, delay))
{
if (0x58 != tempReadValue)
{
printf("\n Device Not detected");
return;
}
}
write_bmp280_register(I2C, BMP280_RESET_REGISTER, 0xB6, delay);
read_bmp280_register(I2C, BMP280_RESET_REGISTER, &tempReadValue, delay);
bmp280_calib_dig_T1 = read_bmp280_values16(I2C, BMP280_REG_DIG_T1, delay);
bmp280_calib_dig_T2 = read_bmp280_values16(I2C, BMP280_REG_DIG_T2, delay);
bmp280_calib_dig_T3 = read_bmp280_values16(I2C, BMP280_REG_DIG_T3, delay);
bmp280_calib_dig_P1 = read_bmp280_values16(I2C, BMP280_REG_DIG_P1, delay);
bmp280_calib_dig_P2 = read_bmp280_values16(I2C, BMP280_REG_DIG_P2, delay);
bmp280_calib_dig_P3 = read_bmp280_values16(I2C, BMP280_REG_DIG_P3, delay);
bmp280_calib_dig_P4 = read_bmp280_values16(I2C, BMP280_REG_DIG_P4, delay);
bmp280_calib_dig_P5 = read_bmp280_values16(I2C, BMP280_REG_DIG_P5, delay);
bmp280_calib_dig_P6 = read_bmp280_values16(I2C, BMP280_REG_DIG_P6, delay);
bmp280_calib_dig_P7 = read_bmp280_values16(I2C, BMP280_REG_DIG_P7, delay);
bmp280_calib_dig_P8 = read_bmp280_values16(I2C, BMP280_REG_DIG_P8, delay);
bmp280_calib_dig_P9 = read_bmp280_values16(I2C, BMP280_REG_DIG_P9, delay);
/* As per most tasks, this task is implemented in an infinite loop. */
for( ;; )
{
write_bmp280_register(I2C, BMP280_CTRL_MEANS, BMP280_NORMAL_MODE,
delay);
if(0 == read_bmp280_register(I2C, BMP280_STATUS_REGISTER,
&tempReadValue, delay))
{
if(!(tempReadValue & 0x9))
{
//Read pressure and temperature values.
read_bmp280_values(I2C, 0xF7, &gpress,
>emp, delay);
}
}
else
{
log_error("\nTemperature read failed.");
}
vTaskDelay( xDelay1000ms );
/* Delay for a period. */
}
}