/*
Unidade 4 - Tarefa 2
Lara Gardenia
Questão 3: Elabore um código utilizando a interfaces UART0 e conecte os fios TX e
RX atribuídos à essa interface entre. Essa estrutura envia dados e recebe
os dados na mesma interface, apenas para verificar seu funcionamento.
Utilize a função scanf da biblioteca stdio para enviar via console um dado à
placa, em seguida, transmita da UART0 para a UART1, e por fim, transmita
o dado recebido para o console utilizando o printf.
*/
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
// Configurações da UART
#define UART0_ID uart0
#define UART1_ID uart1
#define BAUD_RATE 9600
#define UART0_TX_PINO 0
#define UART0_RX_PINO 1
#define UART1_TX_PINO 4
#define UART1_RX_PINO 5
int main() {
stdio_init_all();
// Inicialização da UART0
uart_init(UART0_ID, BAUD_RATE);
gpio_set_function(UART0_TX_PINO, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PINO, GPIO_FUNC_UART);
// Inicialização da UART1
uart_init(UART1_ID, BAUD_RATE);
gpio_set_function(UART1_TX_PINO, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PINO, GPIO_FUNC_UART);
while (true) {
char var;
// Lê um caractere do console
printf("Digite um caractere: ");
scanf(" %c", &var);
printf("Enviando caractere: %c\n", var);
// Transmite o caractere pela UART0
uart_putc(UART0_ID, var);
// Aguarda e recebe o caractere na UART1
while (!uart_is_readable(UART1_ID)) {
tight_loop_contents();
}
char var_recebido = uart_getc(UART1_ID);
// Imprime o caractere recebido no console
printf("Caractere recebido pela UART1: %c\n", var_recebido);
}
return 0;
}