diff --git a/config.h b/config.h index 0093dc3..e25e800 100644 --- a/config.h +++ b/config.h @@ -7,27 +7,34 @@ #define MATRIX_COLS 5 #define DIRECT_PINS { \ - { D5, F5, B7, F4, D3 }, \ - { B1, C6, F7, D4, F6}, \ - { B6, B2, E6, B3, D7 }, \ - { F0, B5, B4, NO_PIN, NO_PIN } \ + { GP13, GP28, GP12, GP29, GP0 }, \ + { GP22, GP14, GP26, GP4, GP27}, \ + { GP21, GP23, GP7, GP20, GP6 }, \ + { GP16, GP9, GP8, NO_PIN, NO_PIN } \ } #define DIRECT_PINS_RIGHT { \ - { D3, F4, B7, F5, D5 }, \ - { F6, D4, F7, C6, B1}, \ - { D7, B3, E6, B2, B6 }, \ - { B4, B5, F0, NO_PIN, NO_PIN } \ + { GP0, GP29, GP12, GP28, GP13 }, \ + { GP27, GP4, GP26, GP14, GP22}, \ + { GP6, GP20, GP7, GP23, GP21 }, \ + { GP8, GP9, GP16, NO_PIN, NO_PIN } \ } /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 5 +/* Serial Config */ #define USE_SERIAL -#define SOFT_SERIAL_PIN D2 +#define SERIAL_USART_TX_PIN GP1 #define MASTER_LEFT +/* I2C Pin mapping */ +//#define I2C1_SDA_PIN GP7 +//#define I2C1_SCL_PIN GP6 +//#define I2C1_CLOCK_SPEED 400000 +//#define I2C_DRIVER I2CD2 + // Set the mouse settings to a comfortable speed/accuracy trade-off, // assuming a screen refresh rate of 60 Htz or higher // The default is 50. This makes the mouse ~3 times faster and more accurate @@ -49,3 +56,16 @@ #define PERMISSIVE_HOLD #define IGNORE_MOD_TAP_INTERRUPT #define TAPPING_FORCE_HOLD +#define USB_VBUS_PIN 19 +#define AUDIO_PWM_DRIVER PWMD2 +#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B +#define AUDIO_STATE_TIMER GPTD4 +#define AUDIO_PIN GP5 +#ifdef AUDIO_ENABLE + #define AUDIO_INIT_DELAY + #define AUDIO_CLICKY + #define AUDIO_CLICKY_FREQ_RANDOMNESS 1.0f + #define STARTUP_SONG SONG(STARTUP_SOUND) +#endif + +#define STARTUP_SOUND E__NOTE(_E6), E__NOTE(_A6), ED_NOTE(_E7), diff --git a/halconf.h b/halconf.h new file mode 100644 index 0000000..0994e4a --- /dev/null +++ b/halconf.h @@ -0,0 +1,11 @@ +#pragma once + +#undef HAL_USE_SIO +#define HAL_USE_SIO TRUE + +#define HAL_USE_I2C TRUE + +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/info.json b/info.json index 6025ecd..acb89d4 100644 --- a/info.json +++ b/info.json @@ -2,8 +2,8 @@ "manufacturer": "grooovebob", "keyboard_name": "dasbob", "maintainer": "grooovebob", - "bootloader": "atmel-dfu", - "processor": "atmega32u4", + "processor": "RP2040", + "bootloader": "rp2040", "url": "", "usb": { "device_version": "1.0.0", @@ -13,36 +13,36 @@ "layouts": { "LAYOUT_split_3x5_3": { "layout": [ - { "matrix": [0, 0], "x": 0, "y": 0.25 }, - { "matrix": [0, 1], "x": 1, "y": 0.25 }, - { "matrix": [0, 2], "x": 2, "y": 0.125 }, - { "matrix": [0, 3], "x": 3, "y": 0 }, - { "matrix": [0, 4], "x": 4, "y": 0.125 }, - { "matrix": [4, 0], "x": 8, "y": 0.25 }, - { "matrix": [4, 1], "x": 9, "y": 0.125 }, - { "matrix": [4, 2], "x": 10, "y": 0 }, - { "matrix": [4, 3], "x": 11, "y": 0.125 }, - { "matrix": [4, 4], "x": 12, "y": 0.25 }, - { "matrix": [1, 0], "x": 0, "y": 1.25 }, - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2, "y": 1.125 }, - { "matrix": [1, 3], "x": 3, "y": 1 }, - { "matrix": [1, 4], "x": 4, "y": 1.125 }, - { "matrix": [5, 0], "x": 8, "y": 1.25 }, - { "matrix": [5, 1], "x": 9, "y": 1.125 }, - { "matrix": [5, 2], "x": 10, "y": 1 }, - { "matrix": [5, 3], "x": 11, "y": 1.125 }, - { "matrix": [5, 4], "x": 12, "y": 1.25 }, - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1, "y": 2.25 }, - { "matrix": [2, 2], "x": 2, "y": 2.125 }, - { "matrix": [2, 3], "x": 3, "y": 2 }, - { "matrix": [2, 4], "x": 4, "y": 2.125 }, - { "matrix": [6, 0], "x": 8, "y": 2.25 }, - { "matrix": [6, 1], "x": 9, "y": 2.125 }, - { "matrix": [6, 2], "x": 10, "y": 2 }, - { "matrix": [6, 3], "x": 11, "y": 2.125 }, - { "matrix": [6, 4], "x": 12, "y": 2.25 }, + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.25 }, + { "matrix": [0, 2], "x": 2, "y": 0.125 }, + { "matrix": [0, 3], "x": 3, "y": 0 }, + { "matrix": [0, 4], "x": 4, "y": 0.125 }, + { "matrix": [4, 0], "x": 8, "y": 0.25 }, + { "matrix": [4, 1], "x": 9, "y": 0.125 }, + { "matrix": [4, 2], "x": 10, "y": 0 }, + { "matrix": [4, 3], "x": 11, "y": 0.125 }, + { "matrix": [4, 4], "x": 12, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2, "y": 1.125 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1.125 }, + { "matrix": [5, 0], "x": 8, "y": 1.25 }, + { "matrix": [5, 1], "x": 9, "y": 1.125 }, + { "matrix": [5, 2], "x": 10, "y": 1 }, + { "matrix": [5, 3], "x": 11, "y": 1.125 }, + { "matrix": [5, 4], "x": 12, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "x": 2, "y": 2.125 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2.125 }, + { "matrix": [6, 0], "x": 8, "y": 2.25 }, + { "matrix": [6, 1], "x": 9, "y": 2.125 }, + { "matrix": [6, 2], "x": 10, "y": 2 }, + { "matrix": [6, 3], "x": 11, "y": 2.125 }, + { "matrix": [6, 4], "x": 12, "y": 2.25 }, { "matrix": [3, 0], "x": 3.5, "y": 3.25 }, { "matrix": [3, 1], "x": 4.5, "y": 3.5 }, { "matrix": [3, 2], "x": 5.5, "y": 3.75 }, diff --git a/keymaps/config.h b/keymaps/config.h deleted file mode 100644 index 1717c4f..0000000 --- a/keymaps/config.h +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2022 grooovebob (@grooovebob) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -/* - * Feature disable options - * These options are also useful to firmware size reduction. - */ - -/* disable debug print */ -//#define NO_DEBUG - -/* disable print */ -//#define NO_PRINT - -/* disable action features */ -//#define NO_ACTION_LAYER -//#define NO_ACTION_TAPPING -//#define NO_ACTION_ONESHOT - -#define MATRIX_ROWS 8 -#define MATRIX_COLS 5 - -#define DIRECT_PINS { \ - { D0, F5, D1, F4, D3 }, \ - { B1, C6, F7, D4, F6}, \ - { B6, B2, E6, B3, D7 }, \ - { F0, B5, B4, NO_PIN, NO_PIN } \ -} - -#define DIRECT_PINS_RIGHT { \ - { D3, F4, D1, F5, D0 }, \ - { F6, D4, F7, C6, B1}, \ - { D7, B3, E6, B2, B6 }, \ - { B4, B5, F0, NO_PIN, NO_PIN } \ -} - - - -#define UNUSED_PINS - -/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ -#define DEBOUNCE 5 - -#define USE_SERIAL -#define SOFT_SERIAL_PIN D2 -#define MASTER_LEFT - -// Set the mouse settings to a comfortable speed/accuracy trade-off, -// assuming a screen refresh rate of 60 Htz or higher -// The default is 50. This makes the mouse ~3 times faster and more accurate -#define MOUSEKEY_INTERVAL 16 -// The default is 20. Since we made the mouse about 3 times faster with the previous setting, -// give it more time to accelerate to max speed to retain precise control over short distances. -#define MOUSEKEY_TIME_TO_MAX 40 -// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive -#define MOUSEKEY_DELAY 100 -// It makes sense to use the same delay for the mouseweel -#define MOUSEKEY_WHEEL_DELAY 100 -// The default is 100 -#define MOUSEKEY_WHEEL_INTERVAL 50 -// The default is 40 -#define MOUSEKEY_WHEEL_TIME_TO_MAX 100 - -// Pick good defaults for enabling homerow modifiers -#define TAPPING_TERM 200 -#define PERMISSIVE_HOLD -#define IGNORE_MOD_TAP_INTERRUPT -#define TAPPING_FORCE_HOLD diff --git a/keymaps/default/keymap.c b/keymaps/default/keymap.c index 8d6ea9d..c42119c 100644 --- a/keymaps/default/keymap.c +++ b/keymaps/default/keymap.c @@ -33,15 +33,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_LOWER] = LAYOUT_split_3x5_3( KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, - XXXXXXX, RALT_T(XXXXXXX), LCTL_T(XXXXXXX), LSFT_T(XXXXXXX), XXXXXXX, KC_MINS, LSFT_T(KC_EQL), LCTL_T(KC_GRV), RALT_T(KC_QUOT), KC_BSLS, - XXXXXXX, XXXXXXX, XXXXXXX, LCTL(KC_C), LCTL(KC_V), KC_PSCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + CK_RST, RALT_T(XXXXXXX), LCTL_T(XXXXXXX), LSFT_T(XXXXXXX), XXXXXXX, KC_MINS, LSFT_T(KC_EQL), LCTL_T(KC_GRV), RALT_T(KC_QUOT), KC_BSLS, + CK_TOGG, CK_UP, CK_DOWN, LCTL(KC_C), LCTL(KC_V), KC_TAB, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_TRNS, KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS ), [_RAISE] = LAYOUT_split_3x5_3( KC_ESC, KC_UP, XXXXXXX, XXXXXXX, CK_TOGG, KC_NUM_LOCK, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_MINUS, KC_LEFT, RALT_T(KC_DOWN), LCTL_T(KC_RGHT), LSFT_T(XXXXXXX), KC_LGUI, XXXXXXX, LSFT_T(KC_KP_4), LCTL_T(KC_KP_5), RALT_T(KC_KP_6), KC_KP_PLUS, - KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_PSCR, KC_RALT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_0, + KC_MPRV, KC_MSTP, KC_MPLY, KC_MNXT, KC_PSCR, XXXXXXX, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_0, KC_TRNS, KC_TRNS, KC_TAB, KC_ENT, KC_TRNS, KC_TRNS ), @@ -49,7 +49,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; #ifdef OLED_ENABLE -oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_180; } +oled_rotation_t oled_init_user(oled_rotation_t rotation) { return OLED_ROTATION_0; } bool oled_task_user(void) { if (is_keyboard_master()) { static const char PROGMEM runqmk_logo[] = {0,0,0,0,152,152,152,152,152,152,24,24,24, @@ -102,28 +102,10 @@ bool oled_task_user(void) { } } else { static const char PROGMEM dasbob_logo[] = { - 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, - 0,0,0,0,0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0, - 0,0,128,128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,128,128,128,128, - 128,128,128,128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,0,0,0,128,128,128, - 128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,128,128,128,128,128,128,128, - 128,128,128,128,128,128,128,128,128,0,0,0,0,0,0,255,255,255,255,255,255,255, - 255,255,255,255,31,255,255,255,255,255,255,255,255,255,252,0,224,255,255,255, - 255,255,255,255,255,255,255,255,255,255,255,248,192,0,0,0,120,254,255,255,255, - 255,255,255,255,255,223,223,223,223,223,159,159,191,63,1,255,255,255,255,255, - 255,255,255,255,199,255,255,255,255,255,255,255,255,126,0,224,252,254,255,255, - 255,255,255,255,255,255,31,255,255,255,255,255,255,255,254,252,240,0,255,255, - 255,255,255,255,255,255,255,199,255,255,255,255,255,255,255,255,126,0,0,0,1, - 255,255,255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,127,63, - 143,252,255,255,255,255,255,255,255,127,112,127,255,255,255,255,255,255,255,252, - 224,0,252,249,251,251,251,243,247,247,247,247,255,255,255,255,255,255,255,255, - 126,254,255,255,255,255,255,255,255,255,239,227,255,255,255,255,255,255,255,254, - 126,0,31,127,255,255,255,255,255,255,255,255,254,240,255,255,255,255,255,255, - 255,255,255,63,254,255,255,255,255,255,255,255,255,239,227,255,255,255,255,255, - 255,255,254,126,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1, - 1,1,0,0,0,3,3,3,3,3,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1, - 1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,3,3,3,3,3,3,3,3,3,3,3,1,1,1,0,0,0,0,0, - 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0 + 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,192,192,192,192,192,192,192,192,192,192,192,128,128, 0, 0, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, 0,128,128,128,128,128,192,192,192,192,192, 0, 0, 0,128,128,128,128,128,128,128,128,128, 0, 0, 0, 0,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128, 0, 0, + 0, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,252,255,255,255,255,255,255,255,255,255, 15,127,255,255,255,255,255,255,255,255,254,248, 0,126,127,255,255,255,255,255,255,255,199,247,255,255,255,255,255,255,255,255,127,126,255,255,255,255,255,255,255,255,239,239,239,239,207,223,223,223,159, 63, 0, 7, 63,255,255,255,255,255,255,255,254, 14,254,255,255,255,255,255,255,255, 63,241,252,254,255,255,255,255,255,255,255, 31,255,255,255,255,255,255,255,255,255,255,128, 0, + 0, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255, 0, 15, 63,127,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,127, 63, 7, 0,126,255,255,255,255,255,255,255,255,227,255,255,255,255,255,255,255,255,255,128,252,253,249,249,251,251,251,251,251,255,255,255,255,255,255,255,255,127, 30, 0, 0, 0, 3, 31,255,255,255,255,255,255,255,255,255,255,255,255,255,255, 7, 0, 63,255,255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,255,255,255, 0, + 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, }; oled_write_raw_P(dasbob_logo, sizeof(dasbob_logo)); } diff --git a/mcuconf.h b/mcuconf.h new file mode 100644 index 0000000..19230fc --- /dev/null +++ b/mcuconf.h @@ -0,0 +1,15 @@ +#pragma once + +#include_next + +#undef RP_SIO_USE_UART0 +#define RP_SIO_USE_UART0 TRUE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE + +#undef RP_PWM_USE_PWM2 +#define RP_PWM_USE_PWM2 TRUE + +#undef RP_PWM_USE_TIM1 //hier bin ich gerade nicht mehr sicher ob das auch für Audio gebraucht wird +#define RP_PWM_USE_TIM1 TRUE diff --git a/rules.mk b/rules.mk index 924118d..c7d935e 100644 --- a/rules.mk +++ b/rules.mk @@ -1,14 +1,13 @@ -# MCU name -MCU = atmega32u4 + # Bootloader selection -BOOTLOADER = caterina +BOOTLOADER = rp2040 # Build Options # change yes to no to disable # BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite -MOUSEKEY_ENABLE = yes # Mouse keys +MOUSEKEY_ENABLE = no # Mouse keys EXTRAKEY_ENABLE = yes # Audio control and System control CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration @@ -16,8 +15,11 @@ NKRO_ENABLE = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow UNICODE_ENABLE = yes # Unicode -AUDIO_ENABLE = no # Audio output +AUDIO_ENABLE = yes # Audio output SPLIT_KEYBOARD = yes # Use shared split_common code OLED_ENABLE = yes OLED_DRIVER = SSD1306 WPM_ENABLE = yes +LTO_ENABLE = yes +SERIAL_DRIVER = vendor +AUDIO_DRIVER = pwm_hardware