diff options
author | QMK Bot <hello@qmk.fm> | 2021-02-05 22:21:23 +0000 |
---|---|---|
committer | QMK Bot <hello@qmk.fm> | 2021-02-05 22:21:23 +0000 |
commit | 843643aef36165ee6b00a52e19a272e69f19e6e1 (patch) | |
tree | e033218c8d1c6fed65b360e684b41530e96dca8a /tmk_core/protocol | |
parent | c3eee3a842366497abeacc22c02020622a339c46 (diff) | |
parent | 5ea92a9c1cbe3e20bf4830d550d797a8e9650da8 (diff) | |
download | qmk_firmware-843643aef36165ee6b00a52e19a272e69f19e6e1.tar.gz qmk_firmware-843643aef36165ee6b00a52e19a272e69f19e6e1.zip |
Merge remote-tracking branch 'origin/master' into develop
Diffstat (limited to 'tmk_core/protocol')
-rw-r--r-- | tmk_core/protocol/serial.h | 2 | ||||
-rw-r--r-- | tmk_core/protocol/serial_uart.c | 25 |
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 |