#Unresponsive right half, missfiring immediatly after flashing ZMK

1 messages · Page 1 of 1 (latest)

modest saddle
#

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.

modest saddle
#

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.

white bear
#

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

modest saddle
#

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... ööö

white bear
#

Please do share the config, along with a schematic of wiring if you have one

modest saddle
#

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
        ;
};
white bear
modest saddle
#

Ah okay, will try that tomorrow