|
|
|
@ -7,10 +7,16 @@ FILE uart_output = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE);
|
|
|
|
|
|
|
|
|
|
|
|
void uart_init ()
|
|
|
|
void uart_init ()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
UBRRH = (BAUDRATE>>8); // shift the register right by 8 bits
|
|
|
|
UART_BAUD_REGH = (BAUDRATE>>8);
|
|
|
|
UBRRL = BAUDRATE; // set baud rate
|
|
|
|
UART_BAUD_REGL = BAUDRATE; // set baud rate
|
|
|
|
UCSRB|= (1<<TXEN)|(1<<RXEN)|(1<<RXCIE); // enable receiver and transmitter
|
|
|
|
|
|
|
|
UCSRC|= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1); // 8bit data format
|
|
|
|
UART_CTRL_REGB |= (1<<UART_TXEN_BM)
|
|
|
|
|
|
|
|
|(1<<UART_RXEN_BM)
|
|
|
|
|
|
|
|
|(1<<UART_RXCIE_BM); // enable receiver and transmitter
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UART_CTRL_REGC |= (1<<UART_URSEL_BM)
|
|
|
|
|
|
|
|
|(1<<UART_UCSZ0_BM)
|
|
|
|
|
|
|
|
|(1<<UART_UCSZ1_BM); // 8bit data format
|
|
|
|
|
|
|
|
|
|
|
|
stdout = &uart_output;
|
|
|
|
stdout = &uart_output;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -19,8 +25,8 @@ static int uart_putchar(char c, FILE *stream) {
|
|
|
|
if (c == '\n') {
|
|
|
|
if (c == '\n') {
|
|
|
|
uart_putchar('\r', stream);
|
|
|
|
uart_putchar('\r', stream);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
loop_until_bit_is_set(UCSRA, UDRE);
|
|
|
|
loop_until_bit_is_set(UART_CTRL_REGA, UART_UDRE_BM);
|
|
|
|
UDR = c;
|
|
|
|
UART_DATA_REG = c;
|
|
|
|
return 0;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -32,8 +38,8 @@ void read_sync(char buffer[], uint8_t buffersize, uint8_t * bufferindex){
|
|
|
|
|
|
|
|
|
|
|
|
char input;
|
|
|
|
char input;
|
|
|
|
do{
|
|
|
|
do{
|
|
|
|
while ((UCSRA & (1 << RXC)) == 0);
|
|
|
|
while ((UART_CTRL_REGA & (1 << UART_RXC_BM)) == 0);
|
|
|
|
input = UDR;
|
|
|
|
input = UART_DATA_REG;
|
|
|
|
|
|
|
|
|
|
|
|
putchar(input); //echo
|
|
|
|
putchar(input); //echo
|
|
|
|
buffer[*bufferindex]=input;
|
|
|
|
buffer[*bufferindex]=input;
|
|
|
|
|