Пример #1
0
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;
}
Пример #2
0
/** \fn void i2c1_stop(void)
	\brief Funkcja konczaca wysylanie, rozpoczynajaca odbieranie
*/
void i2c1_stop(void)
{
    i2c1_set_slave_mode();
    i2c1_set_rx_mode();
}