X-Git-Url: http://git.zerfleddert.de/cgi-bin/gitweb.cgi/fnordlicht-mini/blobdiff_plain/ec1bef8e19888e982ffc53129f74d58868e8d203..e06282dce0420369b589ec793c567a8a2cc48603:/firmware/fnordlicht-firmware/uart.c diff --git a/firmware/fnordlicht-firmware/uart.c b/firmware/fnordlicht-firmware/uart.c index a004bcf..d25e2b5 100644 --- a/firmware/fnordlicht-firmware/uart.c +++ b/firmware/fnordlicht-firmware/uart.c @@ -51,11 +51,13 @@ volatile struct global_uart_t global_uart; /** output one character */ void uart_putc(uint8_t data) { +#if UART_TX_ENABLED /* store data */ fifo_enqueue((fifo_t *)&global_uart.tx, data); /* enable interrupt */ _UCSRB_UART0 |= _BV(_UDRIE_UART0); +#endif } /** init the hardware uart */ @@ -75,12 +77,18 @@ void uart_init(void) /* set mode */ _UCSRC_UART0 = UART_UCSRC; +#if UART_TX_ENABLED /* enable transmitter, receiver and receiver complete interrupt */ _UCSRB_UART0 = _BV(_TXEN_UART0) | _BV(_RXEN_UART0) | _BV(_RXCIE_UART0); + /* init tx fifo */ + fifo_init((fifo_t *)&global_uart.tx); +#else + /* enable receiver and receiver complete interrupt */ + _UCSRB_UART0 = _BV(_RXEN_UART0) | _BV(_RXCIE_UART0); +#endif - /* init fifos */ + /* init rx fifo */ fifo_init((fifo_t *)&global_uart.rx); - fifo_init((fifo_t *)&global_uart.tx); } @@ -95,10 +103,10 @@ ISR(_SIG_UART_RECV_UART0) } +#if UART_TX_ENABLED /** uart data register empty interrupt */ ISR(_SIG_UART_DATA_UART0) { - /* load next byte to transfer */ _UDR_UART0 = fifo_dequeue((fifo_t *)&global_uart.tx); @@ -107,8 +115,8 @@ ISR(_SIG_UART_DATA_UART0) /* disable this interrupt */ _UCSRB_UART0 &= ~_BV(_UDRIE_UART0); } - } +#endif #endif