Jump to content

Osoro

Members
  • Posts

    3
  • Joined

  • Last visited

Everything posted by Osoro

  1. Arduino DHT11 Temperature-Humidity Sensor sensor version not supporting classical 1-wire protocol. Just bought raw DS18B20+ sensor, works fine.
  2. Hello. Im trying to configure w1-gpio bus on Armbian. There are default parametrs set: /sys/bus/w1/devices/w1_bus_master w1_master_timeout = 10 w1_master_timeout_us = 0 How to change them? Is this possible or require recompilation of w1-gpio module?
  3. Hello there. I have problems with connecting device with 1-wire protocol. Device: DHT11 Temperature-Humidity Sensor - It is Arduino version with pullup on the board. Board: Orange Pi Zero LTS (H2+) System: Linux orangepizero 5.10.21-sunxi #21.02.3 SMP Mon Mar 8 00:28:04 UTC 2021 armv7l armv7l armv7l GNU/Linux Based on instructions im preformed some steps: 1) Through armbian-config im enabled w1-gpio 2) Installed gpio app to get info about ports: +-----+-----+----------+------+--Orange Pi Zero--+------+----------+-----+-----+ | H2+ | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | H2+ | +-----+-----+----------+------+---+----++----+---+------+----------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 12 | 8 | SDA.0 | ALT3 | 0 | 3 || 4 | | | 5V | | | | 11 | 9 | SCL.0 | ALT3 | 0 | 5 || 6 | | | 0v | | | | 6 | 7 | GPIO.7 | ALT3 | 0 | 7 || 8 | 0 | ALT3 | TxD3 | 15 | 198 | | | | 0v | | | 9 || 10 | 0 | ALT3 | RxD3 | 16 | 199 | | 1 | 0 | RxD2 | ALT3 | 0 | 11 || 12 | 0 | ALT3 | GPIO.1 | 1 | 7 | | 0 | 2 | TxD2 | ALT3 | 0 | 13 || 14 | | | 0v | | | | 3 | 3 | CTS2 | ALT3 | 0 | 15 || 16 | 0 | ALT3 | GPIO.4 | 4 | 19 | | | | 3.3v | | | 17 || 18 | 0 | ALT3 | GPIO.5 | 5 | 18 | | 15 | 12 | MOSI | ALT3 | 0 | 19 || 20 | | | 0v | | | | 16 | 13 | MISO | ALT3 | 0 | 21 || 22 | 0 | ALT3 | RTS2 | 6 | 2 | | 14 | 14 | SCLK | ALT3 | 0 | 23 || 24 | 0 | ALT3 | CE0 | 10 | 13 | | | | 0v | | | 25 || 26 | 1 | IN | GPIO.11 | 11 | 10 | +-----+-----+----------+------+---+---LEDs---+---+------+----------+-----+-----+ | 17 | 30 | STAT-LED | OUT | 0 | 27 || 28 | | | PWR-LED | | | +-----+-----+----------+------+---+-----+----+---+------+----------+-----+-----+ | H2+ | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | H2+ | +-----+-----+----------+------+--Orange Pi Zero--+---+------+---------+-----+--+ 3) I have changed /boot/armbianEnv.txt verbosity=1 bootlogo=false console=serial disp_mode=1920x1080p60 overlay_prefix=sun8i-h3 overlays=usbhost2 usbhost3 w1-gpio rootdev=UUID=d522be3f-9ac0-489b-9d79-500c38e89c86 rootfstype=ext4 param_w1_pin=PA10 param_w1_pin_int_pullup=0 usbstoragequirks=0x2537:0x1066:u,0x2537:0x1068:u 4) Also changed CPU /etc/default/cpufrequtils ENABLE=true MIN_SPEED=1400000 MAX_SPEED=1400000 GOVERNOR=interactive As you can see, im using PA 10 port and i can see at "gpio readall" value of "V" sign, when im disconnecting wire from board - it is going to be zero, after reconnection it is again going to be 1. Thats showing thats im using correct port. Now im trying to analyze logs at dmesg, and i see this related information, in case loading WITH CONNECTED WIRE [ 12.182141] Driver for 1-wire Dallas network protocol. [ 12.199201] gpio-10 (onewire@0): enforced open drain please flag it properly in DT/ACPI DSDT/board file In case of DISCONNECTED WIRE LOG WILL BE: [ 12.182141] Driver for 1-wire Dallas network protocol. [ 12.199201] gpio-10 (onewire@0): enforced open drain please flag it properly in DT/ACPI DSDT/board file [ 614.571146] w1_master_driver w1_bus_master1: w1_search: max_slave_count 64 reached, will continue next search. [ 661.463966] w1_master_driver w1_bus_master1: Attaching one wire slave 00.800000000000 crc 8c [ 661.474854] w1_master_driver w1_bus_master1: Family 0 for 00.800000000000.8c is not registered. [ 720.081030] w1_master_driver w1_bus_master1: Attaching one wire slave 00.400000000000 crc 46 [ 720.091987] w1_master_driver w1_bus_master1: Family 0 for 00.400000000000.46 is not registered. [ 766.913878] w1_master_driver w1_bus_master1: Attaching one wire slave 00.c00000000000 crc ca [ 766.924868] w1_master_driver w1_bus_master1: Family 0 for 00.c00000000000.ca is not registered. [ 837.355159] w1_master_driver w1_bus_master1: Attaching one wire slave 00.200000000000 crc 23 [ 837.366059] w1_master_driver w1_bus_master1: Family 0 for 00.200000000000.23 is not registered. [ 895.996491] w1_master_driver w1_bus_master1: Attaching one wire slave 00.a00000000000 crc af If will connect WIRE again in this case, messages stopping appear. There are no any success with experimenting on changing GPIO port or Device (i have multiple boards and devices) or pullup Core debugging: After getting all experiments unsuccessful im going and check linux core on driver level. There are function thats making search of connected devices: https://github.com/analogdevicesinc/linux/blob/master/drivers/w1/w1.c /** * w1_search() - Performs a ROM Search & registers any devices found. * @dev: The master device to search * @search_type: W1_SEARCH to search all devices, or W1_ALARM_SEARCH * to return only devices in the alarmed state * @cb: Function to call when a device is found * * The 1-wire search is a simple binary tree search. * For each bit of the address, we read two bits and write one bit. * The bit written will put to sleep all devies that don't match that bit. * When the two reads differ, the direction choice is obvious. * When both bits are 0, we must choose a path to take. * When we can scan all 64 bits without having to choose a path, we are done. * * See "Application note 187 1-wire search algorithm" at www.maxim-ic.com * */ void w1_search(struct w1_master *dev, u8 search_type, w1_slave_found_callback cb) On this function im seeing thats search going until dev->max_slave_count will be reached and if no devices found we will see: dev_info(&dev->dev, "%s: max_slave_count %d reached, ""will continue next search.\n", __func__,dev->max_slave_count); Everything looks like correct, so we getting error in case of no devices found, but i see the problem thats on next iteration im getting this errors: [ 766.913878] w1_master_driver w1_bus_master1: Attaching one wire slave 00.c00000000000 crc ca [ 766.924868] w1_master_driver w1_bus_master1: Family 0 for 00.c00000000000.ca is not registered. Because this errors appear in case of this condition: if ( (triplet_ret & 0x03) != 0x03 ) { if ((desc_bit == last_zero) || (last_zero < 0)) { last_device = 1; dev->search_id = 0; } else { dev->search_id = rn; } desc_bit = last_zero; cb(dev, rn); } on callback function. Based on code research i see thats some "break" on data reading cycle fired or something, thats why im not getting error messages on dmesg in case or WIRE CONNECTED. But w1_master_attempts is increasing, so search cycles going fine Questions: 1) So core is found some device on empty port and trying to connect, how this possible? And why? 2) Why there are no logs in case of connected wire to port but problem with connection? I see debug logs there but i think i need to recompile core to check it. 3) How to make my 1-wire works?
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines