Выпуск UART RX (PIC24)

У меня проблема с моим PIC24F16KA102. Я использую PicTit2 UART Tool для связи с ПК. Итак, это мои процедуры:

UART1Init:

void UART1Init(int BAUDRATE)
{
    U1BRG = BAUDRATE;           

    U1MODEbits.UARTEN = 1;      // UART2 is Enabled
    U1MODEbits.USIDL = 0;       // Continue operation at Idlestate
    U1MODEbits.IREN = 0;        // IrDA En/Decoder is disabled
    U1MODEbits.RTSMD = 0;       // flow control mode
    U1MODEbits.UEN = 0b10;      // UTX, RTX, U2CTS, U2RTS are enable and on use.
    U1MODEbits.WAKE = 1;        // Wake-up on start bit is enabled
    U1MODEbits.LPBACK = 0;      // Loop-back is disabled
    U1MODEbits.ABAUD = 0;       // auto baud is disabled
    U1MODEbits.RXINV = 0;       // No RX inversion
    U1MODEbits.BRGH = 0;        // low boud rate
    U1MODEbits.PDSEL = 0b00;    // 8bit no parity
    U1MODEbits.STSEL = 1;       // one stop bit 

    U1STAbits.UTXISEL1 = 0b00;      
    U1STAbits.UTXBRK = 0;       // sync break tx is disabled
    U1STAbits.UTXEN = 1;        //transmit  is enabled

    U1MODEbits.RXINV = 1;  //Invert RX and TX Idle state
    U1STAbits.UTXINV = 1;
}

void UART1putChar(unsigned char ch)
{
    while(U1STAbits.UTXBF == 1);    //wait till transmit buffer is not full anymore
        U1TXREG = (ch);
}

char UART1GetChar()
{
   char Temp;
   //wait for buffer to fill up, wait for interrupt
   while(IFS0bits.U1RXIF == 0);
   Temp = U1RXREG;
   //reset interrupt
   IFS0bits.U1RXIF = 0;
   //return my received byte
   return Temp;
}

и основная функция:

int main(void) {
    init();
    TRISB=0x0004;
    UART1Init(25);
    while(1)
    {
        UART1putChar(UART1GetChar());
    }
    return 0;
}

Когда я использую PicTit2 UART Tool для отправки и получения символов, вот что я получаю:

hekllo

TX:  68 65 6B 6C 6C 6F 
RX:  85 
TX:  68 65 6B 6C 6C 6F 
RX:  85 
TX:  68 65 6B 6C 6C 6F 
RX:  88 
TX:  68 65 6B 6C 6C 6F 
RX:  85 
TX:  68 65 6B 6C 6C 6F 
RX:  63 0C 
TX:  68 65 6B 6C 6C 6F 
RX:  88 
TX:  68 65 6B 6C 6C 6F 
RX:  88 
TX:  68 65 6B 6C 6C 6F 
RX:  61 0C 

Когда я передаю символ "1", я никогда не получаю "1", но иногда я получаю "// возврат каретки? ".

Итак, мой вопрос: с чего начать отладку? Что может пойти не так?

0 ответов

Другие вопросы по тегам