uint8_t gyro_read_reg(uint8_t addr) { uint8_t result2; __disable_irq(); i2c1_start(); i2c1_write_byte(GYRO_I2C2_ADDRESS | I2C1_WRITE); i2c1_wait(); i2c1_get_ack(); i2c1_write_byte(addr); i2c1_wait(); i2c1_get_ack(); i2c1_repeated_start(); i2c1_write_byte(GYRO_I2C2_ADDRESS | I2C1_READ); i2c1_wait(); i2c1_get_ack(); i2c1_set_rx_mode(); i2c1_give_nack(); result2 = i2c1_read_byte(); i2c1_wait(); i2c1_get_ack(); i2c1_stop(); result2 = i2c1_read_byte(); pause(); __enable_irq(); return result2; }
/** \fn void i2c1_stop(void) \brief Funkcja konczaca wysylanie, rozpoczynajaca odbieranie */ void i2c1_stop(void) { i2c1_set_slave_mode(); i2c1_set_rx_mode(); }