|
Driver TWI/I2C - YouTube: Ciência Elétrica
Biblioteca Otimizada para Microcontroladores AVR
|
Biblioteca robusta e otimizada para comunicação I2C/TWI, focada em performance e baixo consumo de CPU através de uma máquina de estados (FSM) totalmente baseada em interrupções.
Para o ATmega328P (Arduino Uno/Nano/Pro Mini), utilize as seguintes conexões:
| Pino TWI | Pino AVR | Descrição |
|---|---|---|
| SDA | PC4 (A4) | Serial Data Line |
| SCL | PC5 (A5) | Serial Clock Line |
| GND | GND | Referência Comum |
Nota: Lembre-se de utilizar resistores de pull-up (4.7kΩ a 10kΩ) nas linhas SDA e SCL, já que o barramento é do tipo dreno-aberto.
O repositório conta com 3 demonstrações completas:
Configure o modo e a velocidade desejada no seu main.c:
sei(); // Habilita interrupções globais
twi_init(TWI_MODE_MASTER, 0, TWI_CLOCK_100KHZ);
Defina a função que será chamada quando a comunicação terminar:
void ao_finalizar(TWI_Status_t status, const uint8_t* data, size_t len)
{
if (status == TWI_OK)
{
// Sucesso! Trate os dados aqui.
}
}
twi_master_register_callbacks(ao_finalizar, NULL);
Inicie a comunicação. O código continuará rodando enquanto o hardware TWI trabalha em segundo plano:
uint8_t comando = 0x75;
twi_master_start_write_read(0x68, &comando, 1, buffer_leitura, 1);
Este projeto está sob a licença MIT - veja o arquivo [LICENSE](LICENSE) para detalhes.