Driver TWI/I2C - YouTube: Ciência Elétrica
Biblioteca Otimizada para Microcontroladores AVR
Carregando...
Procurando...
Nenhuma entrada encontrado
Referência do Arquivo example3.c

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"
Gráfico de dependência de inclusões para example3.c:

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.

Descrição detalhada

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:

  1. START: O Master assume o barramento.
  2. SLA+W (0x68): Endereça o MPU6050 para escrita.
  3. DATA (0x75): Envia o endereço do registrador WHO_AM_I.
  4. REPEATED START: Reinicia o protocolo sem liberar o barramento.
  5. SLA+R (0x68): Endereça o MPU6050 para leitura.
  6. DATA RX: Lê o valor do registrador (esperado 0x68).
  7. STOP: Libera o barramento.

Definição no arquivo example3.c.

Funções

◆ main()

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.

Este é o diagrama das funções utilizadas por essa função:

◆ on_complete()

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.

Parâmetros
stStatus da operação (TWI_Status_t).
dataPonteiro para o buffer de recepção com o valor do WHO_AM_I.
lenQuantidade de bytes lidos (esperado 1).

< Esperado: 0x68.

Definição na linha 118 do arquivo example3.c.

Este é o diagrama das funções utilizadas por essa função:

◆ uart_puthex8()

void uart_puthex8 ( uint8_t val)

Converte um byte em Hexadecimal e envia via UART.

Parâmetros
valValor a ser convertido.

Definição na linha 109 do arquivo example3.c.

Este é o diagrama das funções utilizadas por essa função:
Esse é o diagrama das funções que utilizam essa função:

◆ USART_Init()

void USART_Init ( void )

Inicializa a UART para depuração.

Definição na linha 89 do arquivo example3.c.

Esse é o diagrama das funções que utilizam essa função:

◆ USART_Transmite_String()

void USART_Transmite_String ( const char * str)

Definição na linha 97 do arquivo example3.c.

Esse é o diagrama das funções que utilizam essa função: