Fixed serial.c after tests on real hardware
This commit is contained in:
parent
74db3e6c5b
commit
553c44a93f
2 changed files with 10 additions and 7 deletions
13
serial.c
13
serial.c
|
|
@ -42,12 +42,16 @@ uint8_t tx_buffer[TX_BUFFER_SIZE];
|
|||
uint8_t tx_buffer_head = 0;
|
||||
volatile uint8_t tx_buffer_tail = 0;
|
||||
|
||||
static void set_baud_rate(long baud) {
|
||||
uint16_t UBRR0_value = ((F_CPU / 16 + baud / 2) / baud - 1);
|
||||
UBRR0H = UBRR0_value >> 8;
|
||||
UBRR0L = UBRR0_value;
|
||||
}
|
||||
|
||||
void serial_init(long baud)
|
||||
{
|
||||
UBRR0H = ((F_CPU / 16 + baud / 2) / baud - 1) >> 8;
|
||||
UBRR0L = ((F_CPU / 16 + baud / 2) / baud - 1);
|
||||
|
||||
set_baud_rate(baud);
|
||||
|
||||
/* baud doubler off - Only needed on Uno XXX */
|
||||
UCSR0A &= ~(1 << U2X0);
|
||||
|
||||
|
|
@ -96,8 +100,7 @@ SIGNAL(USART_UDRE_vect) {
|
|||
|
||||
uint8_t serial_read()
|
||||
{
|
||||
if (rx_buffer_head != rx_buffer_tail) {
|
||||
// Return magic number if no data pending
|
||||
if (rx_buffer_head == rx_buffer_tail) {
|
||||
return SERIAL_NO_DATA;
|
||||
} else {
|
||||
uint8_t data = rx_buffer[rx_buffer_tail];
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue