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
};