]> git.zerfleddert.de Git - fnordlicht-mini/blobdiff - firmware/fnordlicht-firmware/uart.c
remove master mode, disable uart tx
[fnordlicht-mini] / firmware / fnordlicht-firmware / uart.c
index a004bcf8dd2cabf719e4e150c11442f8bf402043..d25e2b5d38cf159edcbf5e1e2998bbdf946b1b8b 100644 (file)
@@ -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
Impressum, Datenschutz