Так вот проблема в том, что неподвижная плата мне выдаёт значение 35. Как я понял даташит, младший бит значит 14,375 градуса в секунду, т.е. 35 соответствует 503,125 градуса в секунду? и получается, что за 10мс плата уже повернулась на 5 градусов? Или я не понимаю как интерпретировать данные?
Код: Выделить всё
int ITG_angle(unsigned int reset) {
static int direction = 0;
uint8_t z_acceleration[2];
int16_t angle_velocity = 0;
if (reset) direction = 0;
while (BITBAND_PERI(ITG_IRQ_PORT->IN, ITG_IRQ_PIN) == 1) {
i2c_rd_reg(ITG_ADDRESS, GYRO_ZOUT_H, z_acceleration, 2);
angle_velocity = z_acceleration[0] << 8 | z_acceleration[1];
direction += (angle_velocity * 14375) / 100;
}
return direction;
}


