UART на ATmega2560 (Atmel Studio)

qbaddev

✩✩✩✩✩✩✩
23 Апр 2020
54
8
23
[email protected]
t.me
Написал UART для ATmega2560 в Atmel Studio. Не правильно работает чтение (UART_read())
В чем может быть проблема?

main.c:
#include "uart.h"

int main(void) {
    UART_init();
    UART_send(UART_read()); // выводит не то что отправил
}

uart.h:
void UART_init(long baud){
    uint8_t ubrr = (F_CPU / (baud * 16)) - 1;
  
    /* Set baud rate */
    UBRR0L = (unsigned char)ubrr;
    UBRR0H = (unsigned char)(ubrr >> 8);

    /* Enable receiver and transmitter */
    UCSR0B |= (1 << RXEN0)|(1 <<TXEN0);
    UCSR0C |= (1 << USBS0)|(1 << UCSZ01)|(1 << UCSZ00);
}

void UART_send(unsigned char data){
    /* Wait for empty transmit buffer */
    while (!( UCSR0A & (1 << UDRE0)));
    /* Put data into buffer, sends the data */
    UDR0 = data;
}

void UART_sendString(char* line) {
    uint8_t i = 0;
    for(;;){
        if(line[i] == '\0') break;
        UART_send((unsigned char) line[i]);
      
        i++;
    }
}

unsigned char UART_read(){
    while(!(UCSR0A & (1 << RXC0)));
    return UDR0;
}
 

qbaddev

✩✩✩✩✩✩✩
23 Апр 2020
54
8
23
[email protected]
t.me
Случилась магия, все заработало после написания этого поста без вмешательств. НО!
Новая проблема, при отправке что то на ардуину приходят только первые три байта. (из hello - hel)

Снимок экрана (33).png