Написал 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;
}