summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Humbert <jack.humb@gmail.com>2023-06-20 20:32:32 -0400
committerGitHub <noreply@github.com>2023-06-20 20:32:32 -0400
commit42cd55e08d5ba1b7b5bbbedaee1737c9febdcd64 (patch)
tree8596d8e39e286ea5c31a0fe0c258d207db2ba1a1
parentac14fce06da3b73b6b150af97d956fe573b7882a (diff)
Planck Matrix Fixes (#21196)
* fix non-default keymap compiling, initial matrix state, watchdog options * fix: allow planck/rev7 to be used with ENCODER_ENABLE = no * chore: update function name on all cases. * remove old midi tone option Co-authored-by: Ryan <fauxpark@gmail.com> * fixes abhixec's planck keymap * add audio enable condition to abhixec's planck keymap * add audio enable condition to all muse includes * Revert "add audio enable condition to all muse includes" This reverts commit 9779e908970dbf7cf81b1a3f968ef2e85ae2b76f. * Revert "add audio enable condition to abhixec's planck keymap" This reverts commit 24c742a5e8ddd55c45ce9f1917b0cb237d4bf721. * Revert "fixes abhixec's planck keymap" This reverts commit 4bb085d1ff00febc92ff6211da4fb776c6379fad. --------- Co-authored-by: Peter.Falken <luis@bitjester.com> Co-authored-by: Ryan <fauxpark@gmail.com>
-rw-r--r--keyboards/planck/rev6_drop/matrix.c1
-rw-r--r--keyboards/planck/rev7/keymaps/default/config.h6
-rw-r--r--keyboards/planck/rev7/keymaps/default/keymap.c9
-rw-r--r--keyboards/planck/rev7/matrix.c42
-rw-r--r--keyboards/planck/rev7/readme.md15
5 files changed, 42 insertions, 31 deletions
diff --git a/keyboards/planck/rev6_drop/matrix.c b/keyboards/planck/rev6_drop/matrix.c
index fae7de179c..e31e473ae2 100644
--- a/keyboards/planck/rev6_drop/matrix.c
+++ b/keyboards/planck/rev6_drop/matrix.c
@@ -27,6 +27,7 @@ void matrix_init_custom(void) {
// actual matrix setup - cols
for (int i = 0; i < MATRIX_COLS; i++) {
setPinOutput(matrix_col_pins[i]);
+ writePinLow(matrix_col_pins[i]);
}
// rows
diff --git a/keyboards/planck/rev7/keymaps/default/config.h b/keyboards/planck/rev7/keymaps/default/config.h
index c3de26365b..fbbab996e1 100644
--- a/keyboards/planck/rev7/keymaps/default/config.h
+++ b/keyboards/planck/rev7/keymaps/default/config.h
@@ -41,9 +41,3 @@
- etc.
*/
// #define MIDI_ADVANCED
-
-/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */
-// #define MIDI_TONE_KEYCODE_OCTAVES 2
-
-// Most tactile encoders have detents every 4 stages
-#define ENCODER_RESOLUTION 4
diff --git a/keyboards/planck/rev7/keymaps/default/keymap.c b/keyboards/planck/rev7/keymaps/default/keymap.c
index 37d7ba0d23..4ac4c0de4f 100644
--- a/keyboards/planck/rev7/keymaps/default/keymap.c
+++ b/keyboards/planck/rev7/keymaps/default/keymap.c
@@ -189,17 +189,8 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case BACKLIT:
if (record->event.pressed) {
register_code(KC_RSFT);
-#ifdef BACKLIGHT_ENABLE
- backlight_step();
-#endif
-#ifdef KEYBOARD_planck_rev5
- writePinLow(E6);
-#endif
} else {
unregister_code(KC_RSFT);
-#ifdef KEYBOARD_planck_rev5
- writePinHigh(E6);
-#endif
}
return false;
break;
diff --git a/keyboards/planck/rev7/matrix.c b/keyboards/planck/rev7/matrix.c
index 6b45d61861..df1e627e83 100644
--- a/keyboards/planck/rev7/matrix.c
+++ b/keyboards/planck/rev7/matrix.c
@@ -31,21 +31,36 @@
#define STM32_IWDG_RL_MS(s) STM32_IWDG_RL_US(s * 1000.0)
#define STM32_IWDG_RL_S(s) STM32_IWDG_RL_US(s * 1000000.0)
+#if !defined(PLANCK_ENCODER_RESOLUTION)
+# define PLANCK_ENCODER_RESOLUTION 4
+#endif
+
+#if !defined(PLANCK_WATCHDOG_TIMEOUT)
+# define PLANCK_WATCHDOG_TIMEOUT 1.0
+#endif
+
+#ifdef ENCODER_MAP_ENABLE
+#error "The encoder map feature is not currently supported by the Planck's encoder matrix"
+#endif
+
/* matrix state(1:on, 0:off) */
static pin_t matrix_row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS;
static pin_t matrix_col_pins[MATRIX_COLS] = MATRIX_COL_PINS;
static matrix_row_t matrix_inverted[MATRIX_COLS];
+#ifdef ENCODER_ENABLE
int8_t encoder_LUT[] = {0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0};
uint8_t encoder_state[8] = {0};
int8_t encoder_pulses[8] = {0};
uint8_t encoder_value[8] = {0};
+#endif
void matrix_init_custom(void) {
// actual matrix setup - cols
for (int i = 0; i < MATRIX_COLS; i++) {
setPinOutput(matrix_col_pins[i]);
+ writePinLow(matrix_col_pins[i]);
}
// rows
@@ -57,50 +72,47 @@ void matrix_init_custom(void) {
setPinInputLow(B12);
setPinInputLow(B13);
- // setup watchdog timer for 1 second
+#ifndef PLANCK_WATCHDOG_DISABLE
wdgInit();
static WDGConfig wdgcfg;
- wdgcfg.pr = STM32_IWDG_PR_S(1.0);
- wdgcfg.rlr = STM32_IWDG_RL_S(1.0);
+ wdgcfg.pr = STM32_IWDG_PR_S(PLANCK_WATCHDOG_TIMEOUT);
+ wdgcfg.rlr = STM32_IWDG_RL_S(PLANCK_WATCHDOG_TIMEOUT);
wdgcfg.winr = STM32_IWDG_WIN_DISABLED;
wdgStart(&WDGD1, &wdgcfg);
+#endif
}
+#ifdef ENCODER_ENABLE
bool encoder_update(uint8_t index, uint8_t state) {
bool changed = false;
uint8_t i = index;
encoder_pulses[i] += encoder_LUT[state & 0xF];
- if (encoder_pulses[i] >= ENCODER_RESOLUTION) {
+ if (encoder_pulses[i] >= PLANCK_ENCODER_RESOLUTION) {
encoder_value[index]++;
changed = true;
-#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, false);
-#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, false);
-#endif // ENCODER_MAP_ENABLE
}
- if (encoder_pulses[i] <= -ENCODER_RESOLUTION) {
+ if (encoder_pulses[i] <= -PLANCK_ENCODER_RESOLUTION) {
encoder_value[index]--;
changed = true;
-#ifdef ENCODER_MAP_ENABLE
- encoder_exec_mapping(index, true);
-#else // ENCODER_MAP_ENABLE
encoder_update_kb(index, true);
-#endif // ENCODER_MAP_ENABLE
}
- encoder_pulses[i] %= ENCODER_RESOLUTION;
+ encoder_pulses[i] %= PLANCK_ENCODER_RESOLUTION;
#ifdef ENCODER_DEFAULT_POS
encoder_pulses[i] = 0;
#endif
return changed;
}
+#endif
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
+#ifndef PLANCK_WATCHDOG_DISABLE
// reset watchdog
wdgReset(&WDGD1);
+#endif
bool changed = false;
@@ -136,6 +148,7 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
changed |= old != current_matrix[row];
}
+#ifdef ENCODER_ENABLE
// encoder-matrix functionality
// set up C/rows for encoder read
@@ -168,6 +181,7 @@ bool matrix_scan_custom(matrix_row_t current_matrix[]) {
for (int i = 0; i < MATRIX_ROWS; i++) {
setPinInputLow(matrix_row_pins[i]);
}
+#endif
return changed;
}
diff --git a/keyboards/planck/rev7/readme.md b/keyboards/planck/rev7/readme.md
index 9b531a4e09..6a4df37704 100644
--- a/keyboards/planck/rev7/readme.md
+++ b/keyboards/planck/rev7/readme.md
@@ -14,7 +14,7 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
## Encoders
-Encoders must have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time, and are zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(index, clockwise)` function:
+Encoders must have matching pulse & detent resolutions (e.g. 24/24) for the scanning to work properly. Multiple encoders can be used at the same time, and are zero-indexed (compared to being one-indexed on the PCB's silkscreen) in the `encoder_update_user(uint8_t index, bool clockwise)` function:
```
,-----------------------------------------------------------------------------------.
@@ -28,4 +28,15 @@ Encoders must have matching pulse & detent resolutions (e.g. 24/24) for the scan
`-----------------------------------------------------------------------------------'
```
-If an encoder has a switch built-in, it's connected to the key at that location. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity.
+If an encoder has a switch built-in, it's connected to the key at that location. On the default keymap, each encoder will play its own rising/falling tone sequence when rotated, and will reset the pitch after one second of inactivity. The encoder map feature is not currently supported.
+
+## Some Planck-specific config.h options:
+
+```c
+// sets the length (in seconds) of the watchdog timer, which will reset the keyboard due to hang/crash in the code
+#define PLANCK_WATCHDOG_TIMEOUT 1.0
+// disables the watchdog timer - you may want to disable the watchdog timer if you use longer macros
+#define PLANCK_WATCHDOG_DISABLE
+// the resolution of the encoders used in the encoder matrix
+#define PLANCK_ENCODER_RESOLUTION 4
+```