Estou recebendo dados pelo UART de outro AVR. No entanto, estou fazendo outras coisas, por isso não quero ter que continuar pesquisando constantemente o UART. Sei que há interrupções, mas só vejo uma para receber concluída, o que suponho que ainda exija que eu faça uma pesquisa para concluir a transferência.
10
Respostas:
Existem vetores de interrupção para o RXC e o TXC (RX e TX completos) nos AVRs. Você nunca deve pesquisar esses dados a menos que queira.
O AVRFreaks tem um bom post sobre isso, e o fabricante também .
fonte
A rotina de interrupção armazena os dados em um buffer (um buffer circular com ponteiros put e get funciona bem). O loop principal verifica se há dados no buffer e, quando houver, os remove. O loop principal pode fazer outras coisas, mas precisa verificar e remover os dados antes que o buffer de interrupção transborde (quando o put se encontra com o get).
Não será compilado, mas isso ilustra o método.
fonte