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:
parent
ea5f825a91
commit
e59951c8ae
|
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue