X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp.git/blobdiff_plain/762a42ef835d3692bf0d9bea19f5cfd9cb673a33..refs/tags/hexrel-2:/avr/serial.c diff --git a/avr/serial.c b/avr/serial.c index 2d2c551..a5e2846 100644 --- a/avr/serial.c +++ b/avr/serial.c @@ -36,7 +36,7 @@ uint8_t tx_ring_buffer[BUFFER_SIZE]; /* Initialize UART */ -void usart0_setup(void) { +void usart0_setup(unsigned long baud) { ATOMIC_BLOCK(ATOMIC_RESTORESTATE) { @@ -48,7 +48,7 @@ void usart0_setup(void) { ring_init(&tx_ring, tx_ring_buffer, BUFFER_SIZE); UCSR0A = 0; - UBRR0 = F_CPU / BAUD / 16 - 1; + UBRR0 = F_CPU / baud / 16 - 1; UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0); UCSR0C = 3 << UCSZ00; }; @@ -82,10 +82,10 @@ ISR(USART0_UDRE_vect) /*--------------------------------------------------------------------------*/ -void serial_setup(void) +void serial_setup(unsigned long baud) { stdout = &mystdout; - usart0_setup(); + usart0_setup(baud); } /*--------------------------------------------------------------------------*/ @@ -106,7 +106,7 @@ int serial_getc(void) return ring_read_ch(&rx_ring); } -void serial_putc(uint8_t data) +void serial_putc(char data) { while (ring_write_ch(&tx_ring, data) < 0) ; @@ -115,3 +115,9 @@ void serial_putc(uint8_t data) UCSR0B = _BV(RXCIE0) | _BV(RXEN0) | _BV(TXEN0) | _BV(UDRIE0); } +uint_fast8_t serial_tstc(void) +{ + return !ring_is_empty(&rx_ring); +} + +