/* Embarcatech: 21-01-2025
Autor: Marcio Barbosa
4 - Microcontroladores - Tarefa 1 - Firmware Embarcado
exerc_3. Elabore um código utilizando a interfaces UART0 e conecte os fios TX
e RX atribuidos a essa interface entre.
IDEIAS WIFI
https://wokwi.com/projects/409820535742349313
https://wokwi.com/projects/420878824988935169
Para realizar este experimento, foi necessário os seguintes componentes:
1 x Raspberry Pi Pico W ,
*/
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/uart.h"
#define UART0_TX_PIN 0 // GPIO 0: TX da UART0
#define UART0_RX_PIN 1 // GPIO 1: RX da UART0
#define UART1_TX_PIN 4 // GPIO 4: TX da UART1
#define UART1_RX_PIN 5 // GPIO 5: RX da UART1
volatile char received = '\0';
volatile char dado = '\0';
int main(void) {
stdio_init_all();
// Inicializa a UART0
//Se houver problemas, tente reduzir a taxa de baud (por exemplo, para 9600 bps) para verificar se a comunicação melhora.
//uart_init(uart0, 115200);
uart_init(uart0, 9600);
gpio_set_function(UART0_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART0_RX_PIN, GPIO_FUNC_UART);
// Inicializa a UART1
//uart_init(uart1, 115200);
uart_init(uart1, 9600);
gpio_set_function(UART1_TX_PIN, GPIO_FUNC_UART);
gpio_set_function(UART1_RX_PIN, GPIO_FUNC_UART);
sleep_ms(1000); // Aguarda estabilização
printf("Sistema inicializado. Digite um caractere");
while (true) {
// Leitura via console
if (scanf(" %c", &dado) == 1) {
printf("\nCaractere digitado: %c\n", dado);
// Envia o caractere pela UART0
uart_putc(uart0, dado);
printf("\nCaractere enviado pela UART0.\n");
dado = '\0';
// Aguarda até que a UART0 receba um caractere (loopback)
uint32_t timeout = 1000000; // Timeout para evitar loop infinito
while (!uart_is_readable(uart0) && timeout > 0) {
tight_loop_contents();
timeout--;
}
// Aguarda o loopback
sleep_ms(100); // Pequena pausa para o loopback
if (uart_is_readable(uart1)) {
received = uart_getc(uart1);
printf("Caractere recebido (loopback): %c\n", received);
} else {
printf("Nenhum dado recebido.\n");
}
}
}
return 0;
}