¿Cómo puedo hacer eco de los caracteres de UART0 a UART1?

0

Estoy buscando un buen tutorial o ayuda para trabajar con dos UART al mismo tiempo. Tengo UART1 conectado a un módem BT y UART0 conectado a un módem celular. Quiero poder tener una buena comunicación bidireccional entre los dos módems.

Aquí está mi código de ejemplo:

int main()
{
    UART0_Init(19200);  // Cell Modem
    UART1_Init(19200);  // Bluetooth Modem

    while(1)
    {
        UART1_TxString("Please choose a menu option.\n\n");
        UART1_TxString("1. Get Cell Modem Baud Rate\n");

        do
        {
            option = UART1_RxChar();
        }while((option<'1') || (option>'4'));

        UART1_TxChar(option);  // Echo option selected
        UART1_TxString("\n\n");

        switch(option)
        {
            case '1':
            UART1_TxString("Sending AT#TCPATCONSER=?");  // Echo command sent
            UART0_TxString("AT#TCPATCONSER=?");  // Send AT command to Modem
            break;

            // other menu options ...
        }

        while(1)
        {
            UART1_TxString(UART0_RxString());   // Receive response from cell modem and send to BT modem
        }

    }
}

UART TX y RX

char UART_RxChar(uint8_t var_uartChannel_u8)
{
    char ch = 0;

    switch(var_uartChannel_u8)
    {
        case 0:
        while(util_IsBitCleared(UCSR0A,RXC0));
        ch = UDR0;

        break;


        case 1:
        while(util_IsBitCleared(UCSR1A,RXC1));
        ch = UDR1;
        break;

    }
    return ch;
}

void UART_TxChar(uint8_t v_uartChannel_u8, char v_uartData_u8)
{
    if(v_uartChannel_u8 == C_UartZero_U8)
    {
        while(util_IsBitCleared(UCSR0A,UDRE0));
        UDR0 =v_uartData_u8;
    }
    else if(v_uartChannel_u8 == C_UartOne_U8)
    {
        while(util_IsBitCleared(UCSR1A,UDRE1));
        UDR1 =v_uartData_u8; 
    }
}
    
pregunta Eddie

0 respuestas

Lea otras preguntas en las etiquetas