Hey, I handwired a skeletyl with nicenanos. Directly after flashing ZMK the right it is missfiring just everything until I get locked out. When I disconnect the usb-cable I can connect from the host and the left half is responsive, but nothing from the right side. I can´t see any shorts, but I don´t know. Any idea on how to solve my issue is welcome.
#Unresponsive right half, missfiring immediatly after flashing ZMK
1 messages · Page 1 of 1 (latest)
I tested a bit further. It seems to be that every keystroke which is fired is from the right side keymap. It just is all at once for no apparent reason. It is also not one single key, its everything. The moment its connected to the left side it stops. After a reset it fires until its connected again.
Is this a custom shield? If so you might have gotten the gpio flags incorrect in the pin definitions
Also right side shouldn’t be sending keystrokes without a connection to the left, nirmally
Yes, its a custom shield. I found at least one error in the Kconfig.shield. It was
config SHIELD_SKELETYL_LEFT
def_bool $(shields_list_contains,skeletyl_left)
config SHIELD_SKELETYL_LEFT
def_bool $(shields_list_contains,skeletyl_left)
Now it corrected to:
config SHIELD_SKELETYL_LEFT
def_bool $(shields_list_contains,skeletyl_left)
config SHIELD_SKELETYL_RIGHT
def_bool $(shields_list_contains,skeletyl_right)
It ins´t missfiring anymore. However, still not working propperly. Now it seem to be always on the FUN layer... ööö
Please do share the config, along with a schematic of wiring if you have one
OK, now the right has a connection however the right half doesn´t work that well. Left half is good when right is turned off.
Here is my skeletyl.dtsi
#include <dt-bindings/zmk/matrix_transform.h>
/ {
chosen {
zmk,kscan = &kscan0;
zmk,matrix_transform = &default_transform;
};
default_transform: keymap_transform_0 {
compatible = "zmk,matrix-transform";
columns = <10>;
rows = <4>;
// | SW01 | SW02 | SW03 | SW04 | SW05 | | SW05 | SW04 | SW03 | SW02 | SW01 |
// | SW06 | SW07 | SW08 | SW09 | SW10 | | SW10 | SW09 | SW08 | SW07 | SW06 |
// | SW11 | SW12 | SW13 | SW14 | SW15 | | SW15 | SW14 | SW13 | SW12 | SW11 |
// | SW16 | SW17 | SW18 | | SW18 | SW17 | SW16 |
map = <
RC(0,0) RC(0,1) RC(0,2) RC(0,3) RC(0,4) RC(0,5) RC(0,6) RC(0,7) RC(0,8) RC(0,9)
RC(1,0) RC(1,1) RC(1,2) RC(1,3) RC(1,4) RC(1,5) RC(1,6) RC(1,7) RC(1,8) RC(1,9)
RC(2,0) RC(2,1) RC(2,2) RC(2,3) RC(2,4) RC(2,5) RC(2,6) RC(2,7) RC(2,8) RC(2,9)
RC(3,2) RC(3,3) RC(3,4) RC(3,5) RC(3,6) RC(3,7)
>;
};
kscan0: kscan {
compatible = "zmk,kscan-gpio-matrix";
label = "KSCAN";
diode-direction = "col2row";
row-gpios
= <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
};
};
skeletyl_left.overlay
// skeletyl_left.overlay
#include "skeletyl.dtsi"
&kscan0 {
col-gpios
= <&pro_micro 8 GPIO_ACTIVE_HIGH> // col1
, <&pro_micro 7 GPIO_ACTIVE_HIGH> // col2
, <&pro_micro 6 GPIO_ACTIVE_HIGH> // col3
, <&pro_micro 5 GPIO_ACTIVE_HIGH> // col4
, <&pro_micro 4 GPIO_ACTIVE_HIGH> // col5
;
};
skeletyl_right.overlay
// skeletyl_right.overlay
#include "skeletyl.dtsi"
&default_transform { // The matrix transform for this board is 5
col-offset = <5>;
};
&kscan0 {
row-gpios
= <&pro_micro 4 (GPIO_ACTIVE_HIGH)> // row0
, <&pro_micro 5 (GPIO_ACTIVE_HIGH)> // row1
, <&pro_micro 6 (GPIO_ACTIVE_HIGH)> // row2
, <&pro_micro 7 (GPIO_ACTIVE_HIGH)> // row3
;
col-gpios
= <&pro_micro 19 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // col5
, <&pro_micro 18 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // col4
, <&pro_micro 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // col3
, <&pro_micro 14 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // col2
, <&pro_micro 16 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)> // col1
;
};
You need to swap flags for row and col pins so that rows get the pull down
Ah okay, will try that tomorrow