The output of BMP280 sensor are too consistent

I've used this https://github.com/BoschSensortec/BMP280_driver/tree/master/examples and implemented the i2c functions like this

 

int8_t i2c_reg_write(uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data, uint16_t length)
{
    int fd;
    std::cout << "write";
    fd = open("/dev/i2c-1", O_RDWR);
    std::cout << "fd " << fd;
    if((ioctl(fd, I2C_SLAVE, i2c_addr)) < 0)
    {
        std::cout << "kek1";
    }
    int rres = write(fd, reg_data, length);
    if(rres != length)
    {
        std::cout << " failed to write\n";
    }
    close(fd);
    return 0;
}
int8_t i2c_reg_read(uint8_t i2c_addr, uint8_t reg_addr, uint8_t *reg_data, uint16_t length)
{
    int fd;
    //std::cout << "read";
    fd = open("/dev/i2c-1", I2C_RDWR);
    //std::cout << "fd " << fd;
    int rres = ioctl(fd, I2C_SLAVE, i2c_addr);
    if(rres < 0)
    {
        std::cout << "rkek1 "<< rres << ' ';
    }
    std::cout << "trying to read " << length << "bytes\n";
    for(int i = 0; i < length ; i++)
    {
        __s32 status = i2c_smbus_read_byte_data(fd, reg_addr);
        if( status < 0)
        {
            std::cout << "failed " << status << '\n';
        }
        reg_data[i] = status;

    }
    close(fd);
    /* Implement the I2C read routine according to the target machine. */
    return 0;
}

 

And after i compile temperatures.c and run the program i alway gen the same values 444102, 4671, 46.711974 and i have no i dea why

I compiled my program on a raspberry pi zero w with this command "g++ temperatures.c bmp280.c -li2c"

1 reply