//Aluno: ANTONIO JOSÉ PORTELA DE JESUS SANTOS
//UNIT04 - Cap. 05 a 08 - ATIVIDADE: TAREFA DE ENVIO - Clock e temporizador
/* Tarefa 2 - Questão 3 (Parte 2) - 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.
*/
//Declaração das bibliotecas
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
//Definição das variáveis globais, GPIO e constantes
char enviado[50];
char recebido[50];
//Definição dos protótipos de funções
void setup();
void verifica_msg(char enviado[], char recebido[]);
//Função main
void main() {
setup();
scanf("%[^\n]", enviado); //Lê caracteres até que ENTER seja pressionado
uart_puts(uart0,enviado); //String enviada utilizando a função uart_puts(uartN,string)
int t = 0;
while(enviado[t]!='\0'){
recebido[t]=uart_getc(uart1); //Cada caractere enviado é recebido por uart_getc(uartN)
t++;
}
printf("\nMensagem enviada pela UART0 :%s\n",enviado);
printf("Mensagem recebida pela UART1:%s\n",recebido);
verifica_msg(enviado,recebido);
while(true){
sleep_ms(1);
}
}
//Funções implementadas
void setup(){
stdio_init_all();
// Configurações da UART0
uart_init(uart0, 115200); // Inicializa a UART0 com baud rate de 115200
gpio_set_function(0, GPIO_FUNC_UART); // Configura pino 0 como TX
gpio_set_function(1, GPIO_FUNC_UART); // Configura pino 1 como RX
uart_init(uart1, 115200); // Inicializa a UART0 com baud rate de 115200
gpio_set_function(4, GPIO_FUNC_UART); // Configura pino 0 como TX
gpio_set_function(5, GPIO_FUNC_UART); // Configura pino 1 como RX
uart_set_fifo_enabled(uart0, true);
uart_set_fifo_enabled(uart1, true);
}
void verifica_msg(char enviado[], char recebido[]){
if (strcmp(enviado,recebido)==0){
printf("UART0:UART1 - COMUNICAÇÃO OK\n");
}
else{
printf("UART0:UART1 - COMUNICAÇÃO NOK\n");
}
}