Good day
I have the NRF_desktop keyboard application running on the NRF52840 Dongle, Zephyr 2.6.1. I would like to us the nrf52840 ProMicro as it has a battery charger build in. I have modified rows and columns accordingly. All my buttons are working except P1.00. I can use any other pin for col 2 and it will work but for some reason not P1.00. It does not appear to be used anywhere else, and I don't get any warnings. Below is my Button_def.h and App.overlay files. I do need to use P1.00 as its the Keypad membrane header col 2.
Any suggestions would be welcomed. Thanks in advance
app.overlay
/ { chosen { nordic,pm-ext-flash = &mx25r64; }; }; / { chosen { /* * In some default configurations within the nRF Connect SDK, * e.g. on nRF52840 and nRF9160, the chosen zephyr,entropy node * is &cryptocell. This devicetree overlay ensures that default * is overridden wherever it is set, as this application uses * the RNG node for entropy exclusively. */ zephyr,entropy = &rng; }; // vbatt { // compatible = "voltage-divider"; // io-channels = <&adc 31>; // pin no of the ADC channel //output-ohms = <22000>; //full-ohms = <(560000 + 22000)>; //power-gpios = <&sx1509b 4 0>; // }; zephyr,user { io-channels = <&adc 7>; }; //remember to check buttons_def.h for corresponding ports // for Dongle rows { compatible = "gpio-leds"; // row1: row_1 { // gpios = <&gpio0 9 GPIO_ACTIVE_HIGH>; // label = "keypadrow1"; // }; row2: row_2 { gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>;//1.00 //remember to change buttons_def label = "keypadrow2"; }; row3: row_3 { gpios = <&gpio0 20 GPIO_ACTIVE_HIGH>;//0.24//remember to change buttons_def label = "keypadrow3"; }; row4: row_4 { gpios = <&gpio0 22 GPIO_ACTIVE_HIGH>;//0.22//remember to change buttons_def label = "keypadrow4"; }; }; col { compatible = "gpio-keys"; col1: col_1 { gpios = <&gpio0 24(GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;//0.20//remember to change buttons_def label = "keypadcol1"; }; col2: col_2 { gpios = <&gpio1 0 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;//0.17//remember to change buttons_def label = "keypadcol2"; }; col3: col_3 { gpios = <&gpio0 11 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>;//0.15//remember to change buttons_def label = "keypadcol3"; }; col4: col_4 { gpios = <&gpio1 4 (GPIO_PULL_UP | GPIO_ACTIVE_LOW)>; //0.13//remember to change buttons_def label = "keypadcol4"; }; }; pwmleds1 { compatible = "pwm-leds"; status = "okay"; pwm_led1: led_pwm_1 { status = "okay"; pwms = <&pwm1 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>; label = "LED Conn State"; }; }; pwmleds2 { compatible = "pwm-leds"; status = "okay"; pwm_led2: led_pwm_2 { status = "okay"; pwms = <&pwm2 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>; label = "LED Caps Lock"; }; }; pwmleds3 { compatible = "pwm-leds"; status = "okay"; pwm_led3: led_pwm_3 { status = "okay"; pwms = <&pwm3 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>; label = "LED Num Lock"; }; }; }; &pwm0 { status = "okay"; pinctrl-0 = <&pwm0_default_alt>; pinctrl-1 = <&pwm0_sleep_alt>; pinctrl-names = "default", "sleep"; }; &pwm1 { status = "okay"; pinctrl-0 = <&pwm1_default_alt>; pinctrl-1 = <&pwm1_sleep_alt>; pinctrl-names = "default", "sleep"; }; &pwm2 { status = "okay"; pinctrl-0 = <&pwm2_default_alt>; pinctrl-1 = <&pwm2_sleep_alt>; pinctrl-names = "default", "sleep"; }; &pwm3 { status = "okay"; pinctrl-0 = <&pwm3_default_alt>; pinctrl-1 = <&pwm3_sleep_alt>; pinctrl-names = "default", "sleep"; }; &pwm_led0 { status = "okay"; pwms = <&pwm0 0 PWM_MSEC(20) PWM_POLARITY_INVERTED>; label = "LED System State"; }; &qspi { status = "disabled"; }; &pinctrl { pwm0_default_alt: pwm0_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 13)>; nordic,invert; }; }; pwm0_sleep_alt: pwm0_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 13)>; low-power-enable; }; }; pwm1_default_alt: pwm1_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 14)>; nordic,invert; }; }; pwm1_sleep_alt: pwm1_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 14)>; low-power-enable; }; }; pwm2_default_alt: pwm2_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 15)>; nordic,invert; }; }; pwm2_sleep_alt: pwm2_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 15)>; low-power-enable; }; }; pwm3_default_alt: pwm3_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 16)>; nordic,invert; }; }; pwm3_sleep_alt: pwm3_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 16)>; low-power-enable; }; }; }; &adc { status = "okay"; }; &spi1 { status = "disabled"; }; &temp { status = "disabled"; }; &spi3 { status = "disabled"; }; &uart0 { status = "disabled"; }; &i2c0 { status = "disabled"; }; &gpio0 { status = "okay"; gpio-reserved-ranges = <0 2>; gpio-line-names = "XL1", "XL2"; }; &gpio1{ status = "okay"; gpio-reserved-ranges = <0>; gpio-line-names = ""; }; &led3 { gpios = <&gpio0 6 GPIO_ACTIVE_LOW>; }; &pwm3_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 6)>; }; }; &pwm2_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 6)>; }; }; &pwm3_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 6)>; }; }; &pwm2_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 8)>; }; }; &led2 { gpios = <&gpio0 8 GPIO_ACTIVE_LOW>; }; &pwm2_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 8)>; }; }; &pwm1_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 1, 9)>; }; }; &pwm1_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 12)>; }; }; &led1 { gpios = <&gpio0 12 GPIO_ACTIVE_LOW>; }; &pwm1_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 12)>; }; }; &led0 { gpios = <&gpio1 9 GPIO_ACTIVE_LOW>; }; &pwm0_default_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 1, 9)>; }; }; &pwm0_default { group1 { psels = <NRF_PSEL(PWM_OUT0, 0, 9)>; }; }; &pwm0_default { group1 { psels = <NRF_PSEL(PWM_OUT0, 1, 9)>; }; }; &pwm0_sleep { group1 { psels = <NRF_PSEL(PWM_OUT0, 1, 9)>; }; }; &pwm0_sleep_alt { group1 { psels = <NRF_PSEL(PWM_OUT0, 1, 9)>; }; }; &button0 { gpios = <&gpio0 29 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; }; &button1 { gpios = <&gpio1 7 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; }; &button2 { gpios = <&gpio1 5 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; }; &button3 { gpios = <&gpio1 6 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; };
/* * Copyright (c) 2021 Nordic Semiconductor ASA * * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause */ #include <caf/gpio_pins.h> /* This configuration file is included only once from button module and holds * information about pins forming keyboard matrix. */ /* This structure enforces the header file is included only once in the build. * Violating this requirement triggers a multiple definition error at link time. */ const struct {} buttons_def_include_once; static const struct gpio_pin col[] = { { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(col4), gpios) },//0.20 remember to look at the app over lay map { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(col2), gpios) },//0.17 remember to look at the app over lay map { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(col3), gpios) },//0.15 remember to look at the app over lay map { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(col1), gpios) },//0.13 remember to look at the app over lay map }; static const struct gpio_pin row[] = { { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(button0), gpios) }, { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button1), gpios) }, { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button2), gpios) }, { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(button3), gpios) }, // dont use row 1 for 12 button // { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(row1), gpios) }, //0.09 remember to look at the app over lay map { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(row2), gpios) }, //1.00 remember to look at the app over lay map { .port = 0, .pin = DT_GPIO_PIN(DT_NODELABEL(row3), gpios) }, //0.24 remember to look at the app over lay map { .port = 1, .pin = DT_GPIO_PIN(DT_NODELABEL(row4), gpios) }, //0.20 remember to look at the app over lay map };