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

Exemplo 2: Operação Slave completa (Responde ao Master do Exemplo 1). Mais...

#include <avr/io.h>
#include <stdio.h>
#include <avr/interrupt.h>
#include "twi.h"
Gráfico de dependência de inclusões para example2.c:

Ir para o código-fonte desse arquivo.

Funções

void USART_Init (void)
 Inicializa a UART para monitoramento.
void USART_Transmite_String (const char *str)
void on_receive (const uint8_t *dados, size_t len)
 Callback de recebimento (Master -> Slave).
size_t on_transmit (uint8_t *buffer, size_t max_len)
 Callback de transmissão (Slave -> Master).
int main (void)
 Ponto de entrada do Slave.

Descrição detalhada

Exemplo 2: Operação Slave completa (Responde ao Master do Exemplo 1).

Este exemplo demonstra como configurar o AVR para atuar como um dispositivo escravo no barramento I2C, tratando eventos de recepção e requisição de dados.

Funcionamento:

  1. O Slave é inicializado com o endereço 0x10.
  2. Quando o Master envia dados (SLA+W), a função on_receive é disparada.
  3. Quando o Master solicita dados (SLA+R), a função on_transmit é disparada para preencher o buffer de saída.

Toda a lógica é baseada em eventos (callbacks) disparados pela ISR.

Definição no arquivo example2.c.

Funções

◆ main()

int main ( void )

Ponto de entrada do Slave.

Inicializa como Slave no endereço 0x10. O clock aqui define a taxa de amostragem interna, mas o clock do barramento é ditado pelo Master.

Definição na linha 48 do arquivo example2.c.

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

◆ on_receive()

void on_receive ( const uint8_t * dados,
size_t len )

Callback de recebimento (Master -> Slave).

Implementação do tratamento de dados recebidos.

Chamado automaticamente quando o Master finaliza uma escrita para este Slave.

Parâmetros
dadosPonteiro para o buffer interno contendo os bytes recebidos.
lenQuantidade de bytes recebidos.

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

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

◆ on_transmit()

size_t on_transmit ( uint8_t * buffer,
size_t max_len )

Callback de transmissão (Slave -> Master).

Implementação da resposta ao Master.

Chamado quando o Master solicita dados deste Slave. A aplicação deve preencher o buffer com as informações desejadas.

Parâmetros
bufferPonteiro para o buffer de transmissão do hardware.
max_lenEspaço máximo disponível no buffer (definido em TWI_RX_BUFFER_SIZE).
Retorna
size_t Quantidade de bytes efetivamente carregados no buffer.

Definição na linha 115 do arquivo example2.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 monitoramento.

Definição na linha 77 do arquivo example2.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 86 do arquivo example2.c.

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