/* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ /* This library handles the USART configuration */ #include // Standard Integer Types #include // Standard IO facilities #include // General utilities #include // AVR device-specific IO definitions #include "uart.h" // UART header #include // Helper macros for baud rate calculations /* assign input and output streams */ FILE uart_output = FDEV_SETUP_STREAM((int (*)(char, struct __file *)) uart_putchar, NULL, _FDEV_SETUP_WRITE); FILE uart_input = FDEV_SETUP_STREAM(NULL, (int (*)(struct __file *)) uart_getchar, _FDEV_SETUP_READ); FILE uart_io = FDEV_SETUP_STREAM((int (*)(char, struct __file *)) uart_putchar, (int (*)(struct __file *)) uart_getchar, _FDEV_SETUP_RW); /* configure serial port */ void uart_init(void) { UBRR0H = UBRRH_VALUE; // set baurate (calculated from BAUD) UBRR0L = UBRRL_VALUE; // set baurate (calculated from BAUD) #if USE_2X UCSR0A |= (1<