From c12268807d8622a05dc445e6101a575eae16860d Mon Sep 17 00:00:00 2001 From: Ryan Date: Wed, 15 Dec 2021 22:00:39 +1100 Subject: Migrate serial_uart usages to UART driver (#15479) * Migrate Thermal Printer feature to UART driver * Migrate 40percentclub UT47 to UART driver * Migrate Centromere to UART driver * Migrate Chimera Ergo to UART driver * Migrate Chimera Let's Split to UART driver * Migrate Chimera Ortho to UART driver * Migrate Chimera Ortho Plus to UART driver * Migrate Comet46 to UART driver * Migrate Palm USB converter to UART driver * Migrate Sun USB converter to UART driver * Migrate Dichotomy to UART driver * Migrate Honeycomb to UART driver * Migrate Mitosis to UART driver * Migrate Redox W to UART driver * Migrate Uni660 to UART driver * Migrate Telophase to UART driver --- keyboards/centromere/config.h | 9 --------- keyboards/centromere/matrix.c | 10 +++++----- keyboards/centromere/rules.mk | 3 ++- 3 files changed, 7 insertions(+), 15 deletions(-) (limited to 'keyboards/centromere') diff --git a/keyboards/centromere/config.h b/keyboards/centromere/config.h index e502e2534b..b4cae20332 100644 --- a/keyboards/centromere/config.h +++ b/keyboards/centromere/config.h @@ -56,12 +56,3 @@ along with this program. If not, see . //#define NO_ACTION_ONESHOT //#define NO_ACTION_MACRO //#define NO_ACTION_FUNCTION - -//UART settings for communication with the RF microcontroller -#define SERIAL_UART_BAUD 500000 -#define SERIAL_UART_RXD_PRESENT (UCSR1A & _BV(RXC1)) -#define SERIAL_UART_INIT_CUSTOM \ - /* enable TX and RX */ \ - UCSR1B = _BV(TXEN1) | _BV(RXEN1); \ - /* 8-bit data */ \ - UCSR1C = _BV(UCSZ11) | _BV(UCSZ10); diff --git a/keyboards/centromere/matrix.c b/keyboards/centromere/matrix.c index 7256cd5cb5..a46701275a 100644 --- a/keyboards/centromere/matrix.c +++ b/keyboards/centromere/matrix.c @@ -26,7 +26,7 @@ along with this program. If not, see . #include "util.h" #include "matrix.h" #include "timer.h" -#include "protocol/serial.h" +#include "uart.h" #if (MATRIX_COLS <= 8) # define print_matrix_header() print("\nr/c 01234567\n") @@ -80,7 +80,7 @@ uint8_t matrix_cols(void) { void matrix_init(void) { matrix_init_quantum(); - serial_init(); + uart_init(500000); } uint8_t matrix_scan(void) @@ -88,7 +88,7 @@ uint8_t matrix_scan(void) uint32_t timeout = 0; //the s character requests the RF remote slave to send the matrix information - SERIAL_UART_DATA = 's'; + uart_write('s'); //trust the external keystates, erase the last set of data uint8_t uart_data[11] = {0}; @@ -96,13 +96,13 @@ uint8_t matrix_scan(void) //there are 10 bytes corresponding to 1w columns, and an end byte for (uint8_t i = 0; i < 11; i++) { //wait for the serial data, timeout if it's been too long - while(!SERIAL_UART_RXD_PRESENT){ + while(!uart_available()){ timeout++; if (timeout > 10000){ break; } } - uart_data[i] = SERIAL_UART_DATA; + uart_data[i] = uart_read(); } //check for the end packet, the key state bytes use the LSBs, so 0xE0 diff --git a/keyboards/centromere/rules.mk b/keyboards/centromere/rules.mk index ed777e1b9e..15c6a20746 100644 --- a/keyboards/centromere/rules.mk +++ b/keyboards/centromere/rules.mk @@ -21,6 +21,7 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality UNICODE_ENABLE = yes # Unicode # # project specific files -SRC += matrix.c serial_uart.c +SRC += matrix.c +QUANTUM_LIB_SRC += uart.c LAYOUTS = split_3x5_3 split_3x6_3 -- cgit v1.2.3 From 6f81880f17f94cb9a2e7a09f2f028c83e5d8b1db Mon Sep 17 00:00:00 2001 From: Ryan Date: Mon, 27 Dec 2021 21:15:56 +1100 Subject: Convert some more boards to Matrix Lite (#15489) --- keyboards/centromere/matrix.c | 118 +++++------------------------------------- keyboards/centromere/rules.mk | 20 +++---- 2 files changed, 25 insertions(+), 113 deletions(-) (limited to 'keyboards/centromere') diff --git a/keyboards/centromere/matrix.c b/keyboards/centromere/matrix.c index a46701275a..bbd771f41b 100644 --- a/keyboards/centromere/matrix.c +++ b/keyboards/centromere/matrix.c @@ -15,77 +15,18 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ -#include -#include -#if defined(__AVR__) -#include -#endif -#include "wait.h" -#include "print.h" -#include "debug.h" -#include "util.h" + +#include "quantum.h" #include "matrix.h" -#include "timer.h" #include "uart.h" -#if (MATRIX_COLS <= 8) -# define print_matrix_header() print("\nr/c 01234567\n") -# define print_matrix_row(row) print_bin_reverse8(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop(matrix[i]) -# define ROW_SHIFTER ((uint8_t)1) -#elif (MATRIX_COLS <= 16) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse16(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop16(matrix[i]) -# define ROW_SHIFTER ((uint16_t)1) -#elif (MATRIX_COLS <= 32) -# define print_matrix_header() print("\nr/c 0123456789ABCDEF0123456789ABCDEF\n") -# define print_matrix_row(row) print_bin_reverse32(matrix_get_row(row)) -# define matrix_bitpop(i) bitpop32(matrix[i]) -# define ROW_SHIFTER ((uint32_t)1) -#endif - -/* matrix state(1:on, 0:off) */ -static matrix_row_t matrix[MATRIX_ROWS]; - - -__attribute__ ((weak)) -void matrix_init_kb(void) { - matrix_init_user(); -} - -__attribute__ ((weak)) -void matrix_scan_kb(void) { - matrix_scan_user(); -} - -__attribute__ ((weak)) -void matrix_init_user(void) { -} - -__attribute__ ((weak)) -void matrix_scan_user(void) { -} - -inline -uint8_t matrix_rows(void) { - return MATRIX_ROWS; -} - -inline -uint8_t matrix_cols(void) { - return MATRIX_COLS; -} - -void matrix_init(void) { - - matrix_init_quantum(); +void matrix_init_custom(void) { uart_init(500000); } -uint8_t matrix_scan(void) -{ +bool matrix_scan_custom(matrix_row_t current_matrix[]) { uint32_t timeout = 0; + bool changed = false; //the s character requests the RF remote slave to send the matrix information uart_write('s'); @@ -96,9 +37,9 @@ uint8_t matrix_scan(void) //there are 10 bytes corresponding to 1w columns, and an end byte for (uint8_t i = 0; i < 11; i++) { //wait for the serial data, timeout if it's been too long - while(!uart_available()){ + while (!uart_available()) { timeout++; - if (timeout > 10000){ + if (timeout > 10000) { break; } } @@ -107,47 +48,16 @@ uint8_t matrix_scan(void) //check for the end packet, the key state bytes use the LSBs, so 0xE0 //will only show up here if the correct bytes were recieved - if (uart_data[10] == 0xE0) - { + if (uart_data[10] == 0xE0) { //shifting and transferring the keystates to the QMK matrix variable for (uint8_t i = 0; i < MATRIX_ROWS; i++) { - matrix[i] = (uint16_t) uart_data[i*2] | (uint16_t) uart_data[i*2+1] << 5; + matrix_row_t current_row = (uint16_t) uart_data[i * 2] | (uint16_t) uart_data[i * 2 + 1] << 5; + if (current_matrix[i] != current_row) { + changed = true; + } + current_matrix[i] = current_row; } } - - matrix_scan_quantum(); - return 1; -} - -inline -bool matrix_is_on(uint8_t row, uint8_t col) -{ - return (matrix[row] & ((matrix_row_t)1<