avr/serial: Separate out low-level hardware manipulation to its own function

Introduce enable_tx_irq() for manipulating the AVR hardware.  This
keeps the low-level hardware code together.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2016-06-11 16:09:33 -04:00
parent ea5f825a91
commit e59951c8ae
1 changed files with 9 additions and 3 deletions

View File

@ -63,6 +63,13 @@ ISR(USART0_UDRE_vect)
UDR0 = transmit_buf[transmit_pos++]; UDR0 = transmit_buf[transmit_pos++];
} }
// Enable tx interrupts
static void
enable_tx_irq(void)
{
UCSR0B |= 1<<UDRIE0;
}
/**************************************************************** /****************************************************************
* Console access functions * Console access functions
@ -124,7 +131,7 @@ console_get_output(uint8_t len)
writeb(&transmit_pos, 0); writeb(&transmit_pos, 0);
barrier(); barrier();
writeb(&transmit_max, tmax); writeb(&transmit_max, tmax);
UCSR0B |= 1<<UDRIE0; enable_tx_irq();
return &transmit_buf[tmax]; return &transmit_buf[tmax];
} }
@ -133,6 +140,5 @@ void
console_push_output(uint8_t len) console_push_output(uint8_t len)
{ {
writeb(&transmit_max, readb(&transmit_max) + len); writeb(&transmit_max, readb(&transmit_max) + len);
// enable TX interrupt enable_tx_irq();
UCSR0B |= 1<<UDRIE0;
} }