summary refs log tree commit diff
path: root/tmk_core/protocol
diff options
context:
space:
mode:
authorQMK Bot <hello@qmk.fm>2021-02-05 22:21:23 +0000
committerQMK Bot <hello@qmk.fm>2021-02-05 22:21:23 +0000
commit843643aef36165ee6b00a52e19a272e69f19e6e1 (patch)
treee033218c8d1c6fed65b360e684b41530e96dca8a /tmk_core/protocol
parentc3eee3a842366497abeacc22c02020622a339c46 (diff)
parent5ea92a9c1cbe3e20bf4830d550d797a8e9650da8 (diff)
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'tmk_core/protocol')
-rw-r--r--tmk_core/protocol/serial.h2
-rw-r--r--tmk_core/protocol/serial_uart.c25
2 files changed, 26 insertions, 1 deletions
diff --git a/tmk_core/protocol/serial.h b/tmk_core/protocol/serial.h
index b70d117d7c..0204b84a92 100644
--- a/tmk_core/protocol/serial.h
+++ b/tmk_core/protocol/serial.h
@@ -37,6 +37,8 @@ POSSIBILITY OF SUCH DAMAGE.
 
 #pragma once
 
+#define SERIAL_UART_DATA UDR1
+
 /* host role */
 void    serial_init(void);
 uint8_t serial_recv(void);
diff --git a/tmk_core/protocol/serial_uart.c b/tmk_core/protocol/serial_uart.c
index a15124193a..4fe059e7d9 100644
--- a/tmk_core/protocol/serial_uart.c
+++ b/tmk_core/protocol/serial_uart.c
@@ -40,6 +40,22 @@ POSSIBILITY OF SUCH DAMAGE.
 #include <avr/interrupt.h>
 #include "serial.h"
 
+#ifndef SERIAL_UART_BAUD
+#    define SERIAL_UART_BAUD 9600
+#endif
+
+#define SERIAL_UART_UBRR (F_CPU / (16UL * SERIAL_UART_BAUD) - 1)
+#define SERIAL_UART_TXD_READY (UCSR1A & _BV(UDRE1))
+#define SERIAL_UART_RXD_VECT USART1_RX_vect
+
+#ifndef SERIAL_UART_INIT_CUSTOM
+#    define SERIAL_UART_INIT_CUSTOM \
+    /* enable TX */                 \
+    UCSR1B = _BV(TXEN1);            \
+    /* 8-bit data */                \
+    UCSR1C = _BV(UCSZ11) | _BV(UCSZ10);
+#endif
+
 #if defined(SERIAL_UART_RTS_LO) && defined(SERIAL_UART_RTS_HI)
 // Buffer state
 //   Empty:           RBUF_SPACE == RBUF_SIZE(head==tail)
@@ -61,7 +77,14 @@ POSSIBILITY OF SUCH DAMAGE.
 #    define rbuf_check_rts_hi()
 #endif
 
-void serial_init(void) { SERIAL_UART_INIT(); }
+void serial_init(void) {
+    do {
+        // Set baud rate
+        UBRR1L = SERIAL_UART_UBRR;
+        UBRR1L = SERIAL_UART_UBRR >> 8;
+        SERIAL_UART_INIT_CUSTOM;
+    } while (0);
+}
 
 // RX ring buffer
 #define RBUF_SIZE 256