|
Driver TWI/I2C - YouTube: Ciência Elétrica
Biblioteca Otimizada para Microcontroladores AVR
|
Exemplo 3: Leitura do registrador WHO_AM_I do sensor MPU6050. Mais...
#include <avr/io.h>#include <util/delay.h>#include <stdio.h>#include <avr/interrupt.h>#include "twi.h"Ir para o código-fonte desse arquivo.
Funções | |
| void | USART_Init (void) |
| Inicializa a UART para depuração. | |
| void | USART_Transmite_String (const char *str) |
| void | uart_puthex8 (uint8_t val) |
| Converte um byte em Hexadecimal e envia via UART. | |
| void | on_complete (TWI_Status_t st, const uint8_t *data, size_t len) |
| Callback chamado ao fim da transação combinada. | |
| int | main (void) |
| Função principal para o teste do MPU6050. | |
Exemplo 3: Leitura do registrador WHO_AM_I do sensor MPU6050.
Este exemplo demonstra o uso da transação combinada (Escrita seguida de Leitura) utilizando a técnica de Repeated Start, evitando que outros Masters tomem o barramento entre as operações.
Sequência Lógica da Transação:
Definição no arquivo example3.c.
| int main | ( | void | ) |
Função principal para o teste do MPU6050.
Endereço do registrador WHO_AM_I no MPU6050.
Buffer estático para garantir persistência durante a ISR.
Inicia transação Write-then-Read. Envia o endereço do registrador e lê a resposta de forma atômica.
< Endereço I2C padrão do MPU6050.
< Buffer com endereço do registrador.
< Tamanho da escrita (1 byte).
< Buffer para salvar a leitura.
< Tamanho da leitura (1 byte).
Definição na linha 42 do arquivo example3.c.
| void on_complete | ( | TWI_Status_t | st, |
| const uint8_t * | data, | ||
| size_t | len ) |
Callback chamado ao fim da transação combinada.
Implementação do callback de conclusão da transação.
| st | Status da operação (TWI_Status_t). |
| data | Ponteiro para o buffer de recepção com o valor do WHO_AM_I. |
| len | Quantidade de bytes lidos (esperado 1). |
< Esperado: 0x68.
Definição na linha 118 do arquivo example3.c.
| void uart_puthex8 | ( | uint8_t | val | ) |
Converte um byte em Hexadecimal e envia via UART.
| val | Valor a ser convertido. |
Definição na linha 109 do arquivo example3.c.
| void USART_Init | ( | void | ) |
Inicializa a UART para depuração.
Definição na linha 89 do arquivo example3.c.
| void USART_Transmite_String | ( | const char * | str | ) |
Definição na linha 97 do arquivo example3.c.