Closed soundsreal closed 1 year ago
@PierreNeumann - Can you by any chance have a look at this.
Hi @soundsreal Yes I can take a look at your issue.
Can you post the prj.conf and devicetree overlay you are using ?
@soundsreal I have no issue using the original driver code with nrf Connect on a board with nrf52840.
I you want to use the modified code from the nordic devzone you originally referenced, just see my answer from this issue : https://github.com/nobodyguy/HX711_zephyr_driver/issues/4#issuecomment-1632541333
Hi @PierreNeumann
There still seems to be an issue but I noticed my error differs.
*** Booting Zephyr OS build v3.2.99-ncs2 ***
ASSERTION FAIL [hx711_dev == ((void *)0)] @ ../src/main.c:106
Failed to get device binding
[00:00:00.000,976] <err> os: r0/a1: 0x00000004 r1/a2: 0x0000006a r2/a3: 0x00000006
[00:00:00.001,007] <err> os: r3/a4: 0x00000000 r12/ip: 0x0000006a r14/lr: 0x00011c71
[00:00:00.001,007] <err> os: xpsr: 0x61000000
[00:00:00.001,037] <err> os: Faulting instruction address (r15/pc): 0x00031ae4
[00:00:00.001,068] <err> os: >>> ZEPHYR FATAL ERROR 4: Kernel panic on CPU 0
[00:00:00.001,098] <err> os: Current thread: 0x200035f8 (unknown)
[00:00:00.413,299] <err> fatal_error: Resetting system
[00:00:00.000,183] <dbg> bt_hci_core: bt_hci_driver_register: Registered SoftDevice Controller
[00:00:00.000,305] <dbg> bt_sdc_hci_driver: configure_memory_usage: BT mempool size: 3464, required: 2704
[00:00:00.000,610] <err> qspi_nor: JEDEC id [00 00 00] expect [c2 28 17]
# RTOS configuration.
CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=3000
CONFIG_HEAP_MEM_POOL_SIZE=1024
# Configure buttons and LEDs.
CONFIG_GPIO=y
CONFIG_DK_LIBRARY=y
# Peripheral configuration.
CONFIG_I2C=y
CONFIG_ADC=y
CONFIG_SPI=y
# Sensor configuration.
CONFIG_SENSOR=y
CONFIG_HX711=y
# Loggging configuration.
CONFIG_ASSERT=y
CONFIG_RESET_ON_FATAL_ERROR=y
#CONFIG_DISPLAY=y
# SEGGER RTT logging instead of UART
CONFIG_LOG_PRINTK=y
CONFIG_LOG=y
CONFIG_LOG_BACKEND_RTT_MODE_BLOCK=y
#CONFIG_DEBUG_OPTIMIZATIONS=y
CONFIG_USE_SEGGER_RTT=y
CONFIG_LOG_BACKEND_RTT=y
# End of SEGGER RTT
CONFIG_LOG_DEFAULT_LEVEL=4
CONFIG_CBPRINTF_FP_SUPPORT=y
# Enable settings to store data in non-volatile memory
CONFIG_FLASH=y
CONFIG_FLASH_MAP=y
CONFIG_NVS=y
CONFIG_SETTINGS_NVS=y
CONFIG_SETTINGS=y
CONFIG_BT_SETTINGS=y
CONFIG_FLASH_PAGE_LAYOUT=y
# Bluetooth configuration.
CONFIG_BT=y
CONFIG_BT_PERIPHERAL=y
CONFIG_BT_DEVICE_NAME="Test App"
CONFIG_BT_MAX_CONN=2
CONFIG_BT_SMP=y
CONFIG_BT_MAX_PAIRED=2
manifest:
remotes:
- name: ncs
url-base: https://github.com/nrfconnect
projects:
- name: sdk-nrf
remote: ncs
path: nrf
revision: v2.3.0
import: true
clone-depth: 1
- name: HX711
path: modules/HX711
revision: refs/tags/zephyr-v3.2.0
url: https://github.com/nobodyguy/HX711_zephyr_driver
self:
path: app
{
hx711 {
compatible = "avia,hx711";
status = "okay";
dout-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP) >;
sck-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
// rate-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
};
};
#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/sensor.h>
#include <zephyr/logging/log.h>
#include <zephyr/sys/util.h>
#include <zephyr/types.h>
#include <dk_buttons_and_leds.h>
#include <sensor/hx711/hx711.h>
#include <stddef.h>
#include <app_ble.h>
LOG_MODULE_REGISTER(main, LOG_LEVEL_DBG);
#define SLEEP_TIME_MS 1000
#define LED_STATUS_1 DK_LED1
#define LED_STATUS_2 DK_LED2
#define LED_STATUS_3 DK_LED3
#define LED_STATUS_4 DK_LED4
#define BTN_1 DK_BTN1_MSK
#define BTN_2 DK_BTN2_MSK
#define BTN_3 DK_BTN3_MSK
#define BTN_4 DK_BTN4_MSK
extern uint32_t peripheral_gatt_write(uint32_t count);
const struct device *hx711_dev;
void set_rate(enum hx711_rate rate)
{
static struct sensor_value rate_val;
rate_val.val1 = rate;
sensor_attr_set(hx711_dev,
HX711_SENSOR_CHAN_WEIGHT,
SENSOR_ATTR_SAMPLING_FREQUENCY,
&rate_val);
}
void measure(void)
{
static struct sensor_value weight;
int ret;
ret = sensor_sample_fetch(hx711_dev);
if (ret != 0) {
LOG_ERR("Cannot take measurement: %d", ret);
} else {
sensor_channel_get(hx711_dev, HX711_SENSOR_CHAN_WEIGHT, &weight);
LOG_INF("Weight: %d.%06d grams", weight.val1, weight.val2);
}
}
void button_changed(uint32_t button_state, uint32_t has_changed)
{
uint32_t buttons = button_state & has_changed;
if (buttons & BTN_1) {
dk_set_led(LED_STATUS_2, 1);
return;
}
if (buttons & BTN_2) {
dk_set_led(LED_STATUS_3, 1);
return;
}
}
void configure_dk_buttons_and_leds(void)
{
int err = dk_buttons_init(button_changed);
if (err) {
LOG_ERR("Cannot init buttons (err: %d)", err);
}
err = dk_leds_init();
if (err) {
LOG_ERR("Cannot init LEDs (err: %d)", err);
}
}
void app_ble_adv_start(void)
{
/* Start advertising */
int err = app_ble_init();
if (err) {
LOG_INF("Advertising failed to start (err %d)\n", err);
return;
}
LOG_INF("Bluetooth initialization complete!");
return 0;
}
void main(void)
{
static bool led_on;
configure_dk_buttons_and_leds();
hx711_dev = DEVICE_DT_GET_ANY(avia_hx711);
__ASSERT(hx711_dev == NULL, "Failed to get device binding");
app_ble_adv_start();
LOG_INF("Running app...");
while (1) {
led_on = !led_on;
dk_set_led(LED_STATUS_1, led_on);
k_msleep(SLEEP_TIME_MS);
}
}
It's like the hx711 is not found in the devicetree. Is the avia,hx711 node present in the file build/zephyr/zephyr.dts ?
And @soundsreal I think you missed a / at the beginning of your overlay :
/{
hx711 {
compatible = "avia,hx711";
status = "okay";
dout-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP) >;
sck-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>;
// rate-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>;
};
};
It's there. build/zephyr/zephyr.dts
/dts-v1/;
/ {
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
model = "Nordic nRF52840 DK NRF52840";
compatible = "nordic,nrf52840-dk-nrf52840";
chosen {
zephyr,entropy = &cryptocell;
zephyr,flash-controller = &flash_controller;
zephyr,console = &uart0;
zephyr,shell-uart = &uart0;
zephyr,uart-mcumgr = &uart0;
zephyr,bt-mon-uart = &uart0;
zephyr,bt-c2h-uart = &uart0;
zephyr,sram = &sram0;
zephyr,flash = &flash0;
zephyr,code-partition = &slot0_partition;
zephyr,ieee802154 = &ieee802154;
};
aliases {
led0 = &led0;
led1 = &led1;
led2 = &led2;
led3 = &led3;
pwm-led0 = &pwm_led0;
sw0 = &button0;
sw1 = &button1;
sw2 = &button2;
sw3 = &button3;
bootloader-led0 = &led0;
mcuboot-button0 = &button0;
mcuboot-led0 = &led0;
watchdog0 = &wdt0;
spi-flash0 = &mx25r64;
};
soc {
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
compatible = "nordic,nRF52840-QIAA", "nordic,nRF52840", "nordic,nRF52", "simple-bus";
interrupt-parent = < &nvic >;
ranges;
nvic: interrupt-controller@e000e100 {
#address-cells = < 0x1 >;
compatible = "arm,v7m-nvic";
reg = < 0xe000e100 0xc00 >;
interrupt-controller;
#interrupt-cells = < 0x2 >;
arm,num-irq-priority-bits = < 0x3 >;
phandle = < 0x1 >;
};
systick: timer@e000e010 {
compatible = "arm,armv7m-systick";
reg = < 0xe000e010 0x10 >;
status = "disabled";
};
ficr: ficr@10000000 {
compatible = "nordic,nrf-ficr";
reg = < 0x10000000 0x1000 >;
status = "okay";
};
uicr: uicr@10001000 {
compatible = "nordic,nrf-uicr";
reg = < 0x10001000 0x1000 >;
status = "okay";
};
sram0: memory@20000000 {
compatible = "mmio-sram";
reg = < 0x20000000 0x40000 >;
};
clock: clock@40000000 {
compatible = "nordic,nrf-clock";
reg = < 0x40000000 0x1000 >;
interrupts = < 0x0 0x1 >;
status = "okay";
};
power: power@40000000 {
compatible = "nordic,nrf-power";
reg = < 0x40000000 0x1000 >;
interrupts = < 0x0 0x1 >;
status = "okay";
};
radio: radio@40001000 {
compatible = "nordic,nrf-radio";
reg = < 0x40001000 0x1000 >;
interrupts = < 0x1 0x1 >;
status = "okay";
ieee802154-supported;
ble-2mbps-supported;
ble-coded-phy-supported;
tx-high-power-supported;
ieee802154: ieee802154 {
compatible = "nordic,nrf-ieee802154";
status = "okay";
};
};
uart0: uart@40002000 {
compatible = "nordic,nrf-uarte";
reg = < 0x40002000 0x1000 >;
interrupts = < 0x2 0x1 >;
status = "okay";
current-speed = < 0x1c200 >;
pinctrl-0 = < &uart0_default >;
pinctrl-1 = < &uart0_sleep >;
pinctrl-names = "default", "sleep";
};
i2c0: arduino_i2c: i2c@40003000 {
compatible = "nordic,nrf-twi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40003000 0x1000 >;
clock-frequency = < 0x186a0 >;
interrupts = < 0x3 0x1 >;
status = "okay";
pinctrl-0 = < &i2c0_default >;
pinctrl-1 = < &i2c0_sleep >;
pinctrl-names = "default", "sleep";
};
spi0: spi@40003000 {
compatible = "nordic,nrf-spi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40003000 0x1000 >;
interrupts = < 0x3 0x1 >;
max-frequency = < 0x7a1200 >;
status = "disabled";
pinctrl-0 = < &spi0_default >;
pinctrl-1 = < &spi0_sleep >;
pinctrl-names = "default", "sleep";
};
i2c1: i2c@40004000 {
compatible = "nordic,nrf-twi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40004000 0x1000 >;
clock-frequency = < 0x186a0 >;
interrupts = < 0x4 0x1 >;
status = "disabled";
pinctrl-0 = < &i2c1_default >;
pinctrl-1 = < &i2c1_sleep >;
pinctrl-names = "default", "sleep";
};
spi1: spi@40004000 {
compatible = "nordic,nrf-spi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40004000 0x1000 >;
interrupts = < 0x4 0x1 >;
max-frequency = < 0x7a1200 >;
status = "okay";
pinctrl-0 = < &spi1_default >;
pinctrl-1 = < &spi1_sleep >;
pinctrl-names = "default", "sleep";
};
nfct: nfct@40005000 {
compatible = "nordic,nrf-nfct";
reg = < 0x40005000 0x1000 >;
interrupts = < 0x5 0x1 >;
status = "disabled";
};
gpiote: gpiote@40006000 {
compatible = "nordic,nrf-gpiote";
reg = < 0x40006000 0x1000 >;
interrupts = < 0x6 0x5 >;
status = "okay";
};
adc: adc@40007000 {
compatible = "nordic,nrf-saadc";
reg = < 0x40007000 0x1000 >;
interrupts = < 0x7 0x1 >;
status = "okay";
#io-channel-cells = < 0x1 >;
phandle = < 0x1b >;
};
timer0: timer@40008000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = < 0x40008000 0x1000 >;
cc-num = < 0x4 >;
interrupts = < 0x8 0x1 >;
prescaler = < 0x0 >;
};
timer1: timer@40009000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = < 0x40009000 0x1000 >;
cc-num = < 0x4 >;
interrupts = < 0x9 0x1 >;
prescaler = < 0x0 >;
};
timer2: timer@4000a000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = < 0x4000a000 0x1000 >;
cc-num = < 0x4 >;
interrupts = < 0xa 0x1 >;
prescaler = < 0x0 >;
phandle = < 0x17 >;
};
rtc0: rtc@4000b000 {
compatible = "nordic,nrf-rtc";
reg = < 0x4000b000 0x1000 >;
cc-num = < 0x3 >;
interrupts = < 0xb 0x1 >;
status = "okay";
clock-frequency = < 0x8000 >;
prescaler = < 0x1 >;
};
temp: temp@4000c000 {
compatible = "nordic,nrf-temp";
reg = < 0x4000c000 0x1000 >;
interrupts = < 0xc 0x1 >;
status = "okay";
};
rng: random@4000d000 {
compatible = "nordic,nrf-rng";
reg = < 0x4000d000 0x1000 >;
interrupts = < 0xd 0x1 >;
status = "okay";
};
ecb: ecb@4000e000 {
compatible = "nordic,nrf-ecb";
reg = < 0x4000e000 0x1000 >;
interrupts = < 0xe 0x1 >;
status = "okay";
};
ccm: ccm@4000f000 {
compatible = "nordic,nrf-ccm";
reg = < 0x4000f000 0x1000 >;
interrupts = < 0xf 0x1 >;
length-field-length-8-bits;
status = "okay";
};
wdt: wdt0: watchdog@40010000 {
compatible = "nordic,nrf-wdt";
reg = < 0x40010000 0x1000 >;
interrupts = < 0x10 0x1 >;
status = "okay";
};
rtc1: rtc@40011000 {
compatible = "nordic,nrf-rtc";
reg = < 0x40011000 0x1000 >;
cc-num = < 0x4 >;
interrupts = < 0x11 0x1 >;
status = "okay";
clock-frequency = < 0x8000 >;
prescaler = < 0x1 >;
};
qdec: qdec0: qdec@40012000 {
compatible = "nordic,nrf-qdec";
reg = < 0x40012000 0x1000 >;
interrupts = < 0x12 0x1 >;
status = "disabled";
};
comp: comparator@40013000 {
compatible = "nordic,nrf-comp";
reg = < 0x40013000 0x1000 >;
interrupts = < 0x13 0x1 >;
status = "disabled";
#io-channel-cells = < 0x1 >;
};
egu0: swi0: egu@40014000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40014000 0x1000 >;
interrupts = < 0x14 0x1 >;
status = "okay";
};
egu1: swi1: egu@40015000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40015000 0x1000 >;
interrupts = < 0x15 0x1 >;
status = "okay";
};
egu2: swi2: egu@40016000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40016000 0x1000 >;
interrupts = < 0x16 0x1 >;
status = "okay";
};
egu3: swi3: egu@40017000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40017000 0x1000 >;
interrupts = < 0x17 0x1 >;
status = "okay";
};
egu4: swi4: egu@40018000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40018000 0x1000 >;
interrupts = < 0x18 0x1 >;
status = "okay";
};
egu5: swi5: egu@40019000 {
compatible = "nordic,nrf-egu", "nordic,nrf-swi";
reg = < 0x40019000 0x1000 >;
interrupts = < 0x19 0x1 >;
status = "okay";
};
timer3: timer@4001a000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = < 0x4001a000 0x1000 >;
cc-num = < 0x6 >;
interrupts = < 0x1a 0x1 >;
prescaler = < 0x0 >;
};
timer4: timer@4001b000 {
compatible = "nordic,nrf-timer";
status = "okay";
reg = < 0x4001b000 0x1000 >;
cc-num = < 0x6 >;
interrupts = < 0x1b 0x1 >;
prescaler = < 0x0 >;
};
pwm0: pwm@4001c000 {
compatible = "nordic,nrf-pwm";
reg = < 0x4001c000 0x1000 >;
interrupts = < 0x1c 0x1 >;
status = "okay";
#pwm-cells = < 0x3 >;
pinctrl-0 = < &pwm0_default >;
pinctrl-1 = < &pwm0_sleep >;
pinctrl-names = "default", "sleep";
phandle = < 0x19 >;
};
pdm0: pdm@4001d000 {
compatible = "nordic,nrf-pdm";
reg = < 0x4001d000 0x1000 >;
interrupts = < 0x1d 0x1 >;
status = "disabled";
};
acl: acl@4001e000 {
compatible = "nordic,nrf-acl";
reg = < 0x4001e000 0x1000 >;
status = "okay";
};
flash_controller: flash-controller@4001e000 {
compatible = "nordic,nrf52-flash-controller";
reg = < 0x4001e000 0x1000 >;
partial-erase;
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
flash0: flash@0 {
compatible = "soc-nv-flash";
erase-block-size = < 0x1000 >;
write-block-size = < 0x4 >;
reg = < 0x0 0x100000 >;
partitions {
compatible = "fixed-partitions";
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
boot_partition: partition@0 {
label = "mcuboot";
reg = < 0x0 0xc000 >;
};
slot0_partition: partition@c000 {
label = "image-0";
reg = < 0xc000 0x67000 >;
};
slot1_partition: partition@73000 {
label = "image-1";
reg = < 0x73000 0x67000 >;
};
scratch_partition: partition@da000 {
label = "image-scratch";
reg = < 0xda000 0x1e000 >;
};
storage_partition: partition@f8000 {
label = "storage";
reg = < 0xf8000 0x8000 >;
};
};
};
};
ppi: ppi@4001f000 {
compatible = "nordic,nrf-ppi";
reg = < 0x4001f000 0x1000 >;
status = "okay";
};
mwu: mwu@40020000 {
compatible = "nordic,nrf-mwu";
reg = < 0x40020000 0x1000 >;
status = "okay";
};
pwm1: pwm@40021000 {
compatible = "nordic,nrf-pwm";
reg = < 0x40021000 0x1000 >;
interrupts = < 0x21 0x1 >;
status = "disabled";
#pwm-cells = < 0x3 >;
};
pwm2: pwm@40022000 {
compatible = "nordic,nrf-pwm";
reg = < 0x40022000 0x1000 >;
interrupts = < 0x22 0x1 >;
status = "disabled";
#pwm-cells = < 0x3 >;
};
spi2: spi@40023000 {
compatible = "nordic,nrf-spi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40023000 0x1000 >;
interrupts = < 0x23 0x1 >;
max-frequency = < 0x7a1200 >;
status = "disabled";
pinctrl-0 = < &spi2_default >;
pinctrl-1 = < &spi2_sleep >;
pinctrl-names = "default", "sleep";
};
rtc2: rtc@40024000 {
compatible = "nordic,nrf-rtc";
reg = < 0x40024000 0x1000 >;
cc-num = < 0x4 >;
interrupts = < 0x24 0x1 >;
status = "okay";
clock-frequency = < 0x8000 >;
prescaler = < 0x1 >;
};
i2s0: i2s@40025000 {
compatible = "nordic,nrf-i2s";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40025000 0x1000 >;
interrupts = < 0x25 0x1 >;
status = "disabled";
};
usbd: zephyr_udc0: usbd@40027000 {
compatible = "nordic,nrf-usbd";
reg = < 0x40027000 0x1000 >;
interrupts = < 0x27 0x1 >;
num-bidir-endpoints = < 0x1 >;
num-in-endpoints = < 0x7 >;
num-out-endpoints = < 0x7 >;
num-isoin-endpoints = < 0x1 >;
num-isoout-endpoints = < 0x1 >;
status = "okay";
};
uart1: arduino_serial: uart@40028000 {
compatible = "nordic,nrf-uarte";
reg = < 0x40028000 0x1000 >;
interrupts = < 0x28 0x1 >;
status = "okay";
current-speed = < 0x1c200 >;
pinctrl-0 = < &uart1_default >;
pinctrl-1 = < &uart1_sleep >;
pinctrl-names = "default", "sleep";
};
qspi: qspi@40029000 {
compatible = "nordic,nrf-qspi";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x40029000 0x1000 >, < 0x12000000 0x8000000 >;
reg-names = "qspi", "qspi_mm";
interrupts = < 0x29 0x1 >;
status = "okay";
pinctrl-0 = < &qspi_default >;
pinctrl-1 = < &qspi_sleep >;
pinctrl-names = "default", "sleep";
mx25r64: mx25r6435f@0 {
compatible = "nordic,qspi-nor";
reg = < 0x0 >;
writeoc = "pp4io";
readoc = "read4io";
sck-frequency = < 0x7a1200 >;
jedec-id = [ C2 28 17 ];
sfdp-bfp = [ E5 20 F1 FF FF FF FF 03 44 EB 08 6B 08 3B 04 BB EE FF FF FF FF FF 00 FF FF FF 00 FF 0C 20 0F 52 10 D8 00 FF 23 72 F5 00 82 ED 04 CC 44 83 68 44 30 B0 30 B0 F7 C4 D5 5C 00 BE 29 FF F0 D0 FF FF ];
size = < 0x4000000 >;
has-dpd;
t-enter-dpd = < 0x2710 >;
t-exit-dpd = < 0x88b8 >;
};
};
pwm3: pwm@4002d000 {
compatible = "nordic,nrf-pwm";
reg = < 0x4002d000 0x1000 >;
interrupts = < 0x2d 0x1 >;
status = "disabled";
#pwm-cells = < 0x3 >;
};
spi3: arduino_spi: spi@4002f000 {
compatible = "nordic,nrf-spim";
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
reg = < 0x4002f000 0x1000 >;
interrupts = < 0x2f 0x1 >;
max-frequency = < 0x1e84800 >;
rx-delay-supported;
rx-delay = < 0x2 >;
status = "okay";
cs-gpios = < &arduino_header 0x10 0x1 >;
pinctrl-0 = < &spi3_default >;
pinctrl-1 = < &spi3_sleep >;
pinctrl-names = "default", "sleep";
};
gpio0: gpio@50000000 {
compatible = "nordic,nrf-gpio";
gpio-controller;
reg = < 0x50000000 0x200 0x50000500 0x300 >;
#gpio-cells = < 0x2 >;
status = "okay";
port = < 0x0 >;
phandle = < 0x18 >;
};
gpio1: gpio@50000300 {
compatible = "nordic,nrf-gpio";
gpio-controller;
reg = < 0x50000300 0x200 0x50000800 0x300 >;
#gpio-cells = < 0x2 >;
ngpios = < 0x10 >;
status = "okay";
port = < 0x1 >;
phandle = < 0x1a >;
};
cryptocell: crypto@5002a000 {
compatible = "nordic,nrf-cc310";
reg = < 0x5002a000 0x1000 >;
status = "okay";
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
cryptocell310: crypto@5002b000 {
compatible = "arm,cryptocell-310";
reg = < 0x5002b000 0x1000 >;
interrupts = < 0x2a 0x1 >;
};
};
};
pinctrl: pin-controller {
compatible = "nordic,nrf-pinctrl";
uart0_default: uart0_default {
phandle = < 0x2 >;
group1 {
psels = < 0x6 >, < 0x20005 >;
};
group2 {
psels = < 0x10008 >, < 0x30007 >;
bias-pull-up;
};
};
uart0_sleep: uart0_sleep {
phandle = < 0x3 >;
group1 {
psels = < 0x6 >, < 0x10008 >, < 0x20005 >, < 0x30007 >;
low-power-enable;
};
};
uart1_default: uart1_default {
phandle = < 0x10 >;
group1 {
psels = < 0x10021 >;
bias-pull-up;
};
group2 {
psels = < 0x22 >;
};
};
uart1_sleep: uart1_sleep {
phandle = < 0x11 >;
group1 {
psels = < 0x10021 >, < 0x22 >;
low-power-enable;
};
};
i2c0_default: i2c0_default {
phandle = < 0x4 >;
group1 {
psels = < 0xc001a >, < 0xb001b >;
};
};
i2c0_sleep: i2c0_sleep {
phandle = < 0x5 >;
group1 {
psels = < 0xc001a >, < 0xb001b >;
low-power-enable;
};
};
i2c1_default: i2c1_default {
phandle = < 0x8 >;
group1 {
psels = < 0xc001e >, < 0xb001f >;
};
};
i2c1_sleep: i2c1_sleep {
phandle = < 0x9 >;
group1 {
psels = < 0xc001e >, < 0xb001f >;
low-power-enable;
};
};
pwm0_default: pwm0_default {
phandle = < 0xc >;
group1 {
psels = < 0x16000d >;
nordic,invert;
};
};
pwm0_sleep: pwm0_sleep {
phandle = < 0xd >;
group1 {
psels = < 0x16000d >;
low-power-enable;
};
};
spi0_default: spi0_default {
phandle = < 0x6 >;
group1 {
psels = < 0x4001b >, < 0x5001a >, < 0x6001d >;
};
};
spi0_sleep: spi0_sleep {
phandle = < 0x7 >;
group1 {
psels = < 0x4001b >, < 0x5001a >, < 0x6001d >;
low-power-enable;
};
};
spi1_default: spi1_default {
phandle = < 0xa >;
group1 {
psels = < 0x4001f >, < 0x5001e >, < 0x60028 >;
};
};
spi1_sleep: spi1_sleep {
phandle = < 0xb >;
group1 {
psels = < 0x4001f >, < 0x5001e >, < 0x60028 >;
low-power-enable;
};
};
spi2_default: spi2_default {
phandle = < 0xe >;
group1 {
psels = < 0x40013 >, < 0x50014 >, < 0x60015 >;
};
};
spi2_sleep: spi2_sleep {
phandle = < 0xf >;
group1 {
psels = < 0x40013 >, < 0x50014 >, < 0x60015 >;
low-power-enable;
};
};
qspi_default: qspi_default {
phandle = < 0x12 >;
group1 {
psels = < 0x1d0013 >, < 0x1f0014 >, < 0x200015 >, < 0x210016 >, < 0x220017 >, < 0x1e0011 >;
};
};
qspi_sleep: qspi_sleep {
phandle = < 0x13 >;
group1 {
psels = < 0x1d0013 >, < 0x1f0014 >, < 0x200015 >, < 0x210016 >, < 0x220017 >;
low-power-enable;
};
group2 {
psels = < 0x1e0011 >;
low-power-enable;
bias-pull-up;
};
};
spi3_default: spi3_default {
phandle = < 0x15 >;
group1 {
psels = < 0x4002f >, < 0x6002e >, < 0x5002d >;
};
};
spi3_sleep: spi3_sleep {
phandle = < 0x16 >;
group1 {
psels = < 0x4002f >, < 0x6002e >, < 0x5002d >;
low-power-enable;
};
};
};
rng_hci: entropy_bt_hci {
compatible = "zephyr,bt-hci-entropy";
status = "okay";
};
cpus {
#address-cells = < 0x1 >;
#size-cells = < 0x0 >;
cpu@0 {
device_type = "cpu";
compatible = "arm,cortex-m4f";
reg = < 0x0 >;
#address-cells = < 0x1 >;
#size-cells = < 0x1 >;
itm: itm@e0000000 {
compatible = "arm,armv7m-itm";
reg = < 0xe0000000 0x1000 >;
swo-ref-frequency = < 0x1e84800 >;
};
};
};
sw_pwm: sw-pwm {
compatible = "nordic,nrf-sw-pwm";
status = "disabled";
generator = < &timer2 >;
clock-prescaler = < 0x0 >;
#pwm-cells = < 0x3 >;
};
leds {
compatible = "gpio-leds";
led0: led_0 {
gpios = < &gpio0 0xd 0x1 >;
label = "Green LED 0";
};
led1: led_1 {
gpios = < &gpio0 0xe 0x1 >;
label = "Green LED 1";
};
led2: led_2 {
gpios = < &gpio0 0xf 0x1 >;
label = "Green LED 2";
};
led3: led_3 {
gpios = < &gpio0 0x10 0x1 >;
label = "Green LED 3";
};
};
pwmleds {
compatible = "pwm-leds";
pwm_led0: pwm_led_0 {
pwms = < &pwm0 0x0 0x1312d00 0x1 >;
};
};
buttons {
compatible = "gpio-keys";
button0: button_0 {
gpios = < &gpio0 0xb 0x11 >;
label = "Push button switch 0";
};
button1: button_1 {
gpios = < &gpio0 0xc 0x11 >;
label = "Push button switch 1";
};
button2: button_2 {
gpios = < &gpio0 0x18 0x11 >;
label = "Push button switch 2";
};
button3: button_3 {
gpios = < &gpio0 0x19 0x11 >;
label = "Push button switch 3";
};
};
arduino_header: connector {
compatible = "arduino-header-r3";
#gpio-cells = < 0x2 >;
gpio-map-mask = < 0xffffffff 0xffffffc0 >;
gpio-map-pass-thru = < 0x0 0x3f >;
gpio-map = < 0x0 0x0 &gpio0 0x3 0x0 >, < 0x1 0x0 &gpio0 0x4 0x0 >, < 0x2 0x0 &gpio0 0x1c 0x0 >, < 0x3 0x0 &gpio0 0x1d 0x0 >, < 0x4 0x0 &gpio0 0x1e 0x0 >, < 0x5 0x0 &gpio0 0x1f 0x0 >, < 0x6 0x0 &gpio1 0x1 0x0 >, < 0x7 0x0 &gpio1 0x2 0x0 >, < 0x8 0x0 &gpio1 0x3 0x0 >, < 0x9 0x0 &gpio1 0x4 0x0 >, < 0xa 0x0 &gpio1 0x5 0x0 >, < 0xb 0x0 &gpio1 0x6 0x0 >, < 0xc 0x0 &gpio1 0x7 0x0 >, < 0xd 0x0 &gpio1 0x8 0x0 >, < 0xe 0x0 &gpio1 0xa 0x0 >, < 0xf 0x0 &gpio1 0xb 0x0 >, < 0x10 0x0 &gpio1 0xc 0x0 >, < 0x11 0x0 &gpio1 0xd 0x0 >, < 0x12 0x0 &gpio1 0xe 0x0 >, < 0x13 0x0 &gpio1 0xf 0x0 >, < 0x14 0x0 &gpio0 0x1a 0x0 >, < 0x15 0x0 &gpio0 0x1b 0x0 >;
phandle = < 0x14 >;
};
arduino_adc: analog-connector {
compatible = "arduino,uno-adc";
#io-channel-cells = < 0x1 >;
io-channel-map = < 0x0 &adc 0x1 >, < 0x1 &adc 0x2 >, < 0x2 &adc 0x4 >, < 0x3 &adc 0x5 >, < 0x4 &adc 0x6 >, < 0x5 &adc 0x7 >;
};
hx711 {
compatible = "avia,hx711";
status = "okay";
dout-gpios = < &gpio0 0x1a 0x10 >;
sck-gpios = < &gpio0 0x1b 0x0 >;
};
};
Does it help to mention this is a workspace application.
And @soundsreal I think you missed a / at the beginning of your overlay :
/{ hx711 { compatible = "avia,hx711"; status = "okay"; dout-gpios = <&gpio0 26 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP) >; sck-gpios = <&gpio0 27 GPIO_ACTIVE_HIGH>; // rate-gpios = <&gpio0 31 GPIO_ACTIVE_HIGH>; }; };
Sorry I did that to force formatting, it's there on my side.
No @soundsreal, I use it too in a workspace.
There is a problem with the assertion. I never run the main example with CONFIG_ASSERT=y.
I think we should use this line instead :
__ASSERT(hx711_dev, "Failed to get device binding");
or
__ASSERT(hx711_dev != NULL, "Failed to get device binding");
Hi thank you so much it works!
# Loggging configuration.
#CONFIG_ASSERT=y
CONFIG_RESET_ON_FATAL_ERROR=y
What's the difference should the sample code get an update then?
// works.
__ASSERT(hx711_dev, "Failed to get device binding");
// fails.
__ASSERT(hx711_dev == NULL, "Failed to get device binding");
okay so I tested everything again and it seems that CONFIG_ASSERT=y
was the issue.
This enables the __ASSERT() macro in the kernel code. If an assertion
fails, the policy for what to do is controlled by the implementation
of the assert_post_action() function, which by default will trigger
a fatal error.
Disabling this option will cause assertions to compile to nothing,
improving performance and system footprint.
https://developer.nordicsemi.com/nRF_Connect_SDK/doc/1.9.2-dev1/kconfig/CONFIG_ASSERT.html
// works.
__ASSERT(hx711_dev == NULL, "Failed to get device binding");
Thank you again.
00> [00:00:00.000,152] <dbg> bt_hci_core: bt_hci_driver_register: Registered SoftDevice Controller
00> [00:00:00.000,274] <dbg> bt_sdc_hci_driver: configure_memory_usage: BT mempool size: 3464, required: 2704
00> [00:00:00.000,518] <err> qspi_nor: JEDEC id [00 00 00] expect [c2 28 17]
00> *** Booting Zephyr OS build v3.2.99-ncs2 ***
00> [00:00:00.000,823] <inf> main: Device is 0x326bc, name is hx711
00> [00:00:00.000,823] <inf> main: Calculating offset...
00> [00:00:00.306,457] <inf> main: Waiting for known weight of 100 grams...
00> [00:00:00.306,488] <inf> main: 5..
00> [00:00:01.306,610] <inf> main: 4..
00> [00:00:02.306,671] <inf> main: 3..
00> [00:00:03.306,793] <inf> main: 2..
00> [00:00:04.306,915] <inf> main: 1..
00> [00:00:05.307,037] <inf> main: 0..
00> [00:00:06.632,720] <dbg> bt_sdc_hci_driver: event_packet_process: Command Complete (0x200a) status: 0x00, ncmd: 1, len 4
00> --- 446 messages dropped ---
00> [00:00:06.632,965] <inf> app_ble: Bluetooth initialization complete!
00> [00:00:06.632,995] <inf> main: Bluetooth initialization complete!
00> [00:00:06.632,995] <inf> main: Running app...
00> [00:00:06.633,361] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 2
00> [00:00:06.633,422] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.633,666] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.633,911] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.633,941] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 2
00> [00:00:06.633,972] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.634,216] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.634,460] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 5
00> [00:00:06.634,490] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 16
00> [00:00:06.634,735] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 19
00> [00:00:06.635,192] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 19
00> [00:00:06.635,711] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 19
00> [00:00:06.635,986] <dbg> bt_gatt: bt_gatt_attr_read: handle 0x0000 offset 0 length 19
00> [00:00:06.636,749] <dbg> bt_gatt: db_hash_gen: Hash:
00> 04 76 5e ca 62 04 5f 4e 17 3d 24 7c 63 e9 b8 1f |.v^.b._N .=$|c...
00> [00:00:06.636,779] <dbg> bt_gatt: db_hash_process: Database Hash matches
00> [00:00:06.663,085] <dbg> bt_hci_core: bt_recv: buf 0x20009a9c len 68
00> [00:00:06.663,116] <dbg> bt_hci_core: rx_work_handler: Getting net_buf from queue
00> [00:00:06.663,146] <dbg> bt_hci_core: rx_work_handler: buf 0x20009a9c type 1 len 68
00> [00:00:06.663,146] <dbg> bt_hci_core: hci_event: event 0x3e
00> [00:00:06.663,177] <dbg> bt_hci_core: hci_le_meta_event: subevent 0x08
00> [00:00:06.663,177] <dbg> bt_ecc: bt_hci_evt_le_pkey_complete: status: 0x00
00> [00:00:06.663,208] <dbg> bt_smp: bt_smp_pkey_ready:
00> [00:00:08.633,148] <inf> main: == Test measure ==
00> [00:00:08.633,178] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:08.633,331] <inf> main: Weight: 440.000000 grams
00> [00:00:09.633,422] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:09.633,575] <inf> main: Weight: -5059.000000 grams
00> [00:00:11.633,728] <inf> main: == Test measure ==
00> [00:00:11.633,758] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:11.633,911] <inf> main: Weight: 340.000000 grams
00> [00:00:12.634,002] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:12.634,155] <inf> main: Weight: -259.000000 grams
00> [00:00:14.634,307] <inf> main: == Test measure ==
00> [00:00:14.634,338] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:14.634,490] <inf> main: Weight: 540.000000 grams
00> [00:00:15.634,582] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:15.634,735] <inf> main: Weight: -859.000000 grams
00> [00:00:17.634,887] <inf> main: == Test measure ==
00> [00:00:17.634,918] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:17.635,070] <inf> main: Weight: -159.000000 grams
00> [00:00:18.635,162] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:18.635,314] <inf> main: Weight: -659.000000 grams
00> [00:00:20.635,467] <inf> main: == Test measure ==
00> [00:00:20.635,498] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:20.635,650] <inf> main: Weight: -259.000000 grams
00> [00:00:21.635,742] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:21.635,894] <inf> main: Weight: 440.000000 grams
00> [00:00:23.636,047] <inf> main: == Test measure ==
00> [00:00:23.636,077] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:23.636,230] <inf> main: Weight: -5159.000000 grams
00> [00:00:24.636,322] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:24.636,474] <inf> main: Weight: 540.000000 grams
00> [00:00:26.636,627] <inf> main: == Test measure ==
00> [00:00:26.636,657] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:26.636,810] <inf> main: Weight: -659.000000 grams
00> [00:00:27.636,901] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:27.637,054] <inf> main: Weight: -409070.000000 grams
00> [00:00:29.637,207] <inf> main: == Test measure ==
00> [00:00:29.637,237] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:29.637,390] <inf> main: Weight: 540.000000 grams
00> [00:00:30.637,481] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:30.637,634] <inf> main: Weight: -259.000000 grams
00> [00:00:32.637,786] <inf> main: == Test measure ==
00> [00:00:32.637,817] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:32.637,969] <inf> main: Weight: 340.000000 grams
00> [00:00:33.638,061] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:33.638,214] <inf> main: Weight: 340.000000 grams
00> [00:00:35.638,366] <inf> main: == Test measure ==
00> [00:00:35.638,397] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:35.638,549] <inf> main: Weight: -159.000000 grams
00> [00:00:36.638,641] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:36.638,793] <inf> main: Weight: 140.000000 grams
00> [00:00:38.638,946] <inf> main: == Test measure ==
00> [00:00:38.638,977] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:38.639,129] <inf> main: Weight: 540.000000 grams
00> [00:00:39.639,221] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:39.639,373] <inf> main: Weight: 540.000000 grams
00> [00:00:41.639,526] <inf> main: == Test measure ==
00> [00:00:41.639,556] <inf> main: = Setting sampling rate to 10Hz.
00> [00:00:41.639,709] <inf> main: Weight: 540.000000 grams
00> [00:00:42.639,801] <inf> main: = Setting sampling rate to 80Hz.
00> [00:00:42.639,953] <inf> main: Weight: -259.000000 grams
Same as this post getting errors. https://devzone.nordicsemi.com/f/nordic-q-a/101179/trouble-with-avia_hx711_calibrate-function-of-nobodyguy-hx711_zephyr_driver