|
Driver TWI/I2C - YouTube: Ciência Elétrica
Biblioteca Otimizada para Microcontroladores AVR
|
Exemplo 2: Operação Slave completa (Responde ao Master do Exemplo 1). Mais...
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. | |
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:
0x10.SLA+W), a função on_receive é disparada.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.
| 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.
| 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.
| dados | Ponteiro para o buffer interno contendo os bytes recebidos. |
| len | Quantidade de bytes recebidos. |
Definição na linha 97 do arquivo example2.c.
| 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.
| buffer | Ponteiro para o buffer de transmissão do hardware. |
| max_len | Espaço máximo disponível no buffer (definido em TWI_RX_BUFFER_SIZE). |
Definição na linha 115 do arquivo example2.c.
| void USART_Init | ( | void | ) |
Inicializa a UART para monitoramento.
Definição na linha 77 do arquivo example2.c.
| void USART_Transmite_String | ( | const char * | str | ) |
Definição na linha 86 do arquivo example2.c.