Menu
Raspberry PI и 1-wire DS2408 via GPIO

Raspberry PI и 1-wire DS2408 via GPIO

..или как раскочегарить DS2408 (8 портов ввода/вывода для сетей 1-Wire) с целью увеличения количества GPIO.

.. и наступить на все грабли. +)

Изначально рассматривалось управление сетью 1-wire с помощью openwrt роутера GL.Inet. Но решил пока всё сделать на малине.

Согласно даташиту была собрано подключение DS2408 к малине и подлючение светодиода на P0.

Включил GPIO:

sudo modprobe w1-gpio
sudo modprobe w1-therm

Увиделась DS2408:

 $ ls /sys/bus/w1/drivers/w1_slave_driver
29-000000174f7c bind uevent unbind

$ ls /sys/bus/w1/drivers/w1_slave_driver/29-000000174f7c
activity cond_search_polarity id output status_control uevent
cond_search_mask driver name state subsystem

Попытка считать:

dd if=./output bs=1 count=1 | hexdump
0000000 00ff
0000001
1+0 записей получено
1+0 записей отправлено
скопирован 1 байт (1 B), 0,0277457 c, 0,0 kB/c

Попытка записать:

$ echo -e '\x00' |dd of=output bs=1 count=1
dd: ошибка записи «output»: Ошибка ввода/вывода
1+0 записей получено
0+0 записей отправлено
скопировано 0 байт (0 B), 0,0884402 c, 0,0 kB/c
$ echo -e '\xff' |dd of=output bs=1 count=1
1+0 записей получено
1+0 записей отправлено
скопирован 1 байт (1 B), 0,0485355 c, 0,0 kB/c

, которая не увенчалась успехом. Состояние портов оставалось прежним.

Выполнилнение

sudo chmod og=rw output

 тоже ни к чему не привело.

Отчаявшись, установил OWFS и fuse из репов распбериана. Им оказалась версия 2.9, которая не увидела мастера на порту GPIO. Пришлось залить версию 3.1 p1 и собрать:

./configure --enable-owfs

make
sudo make install

Make'ается всё это дело минут 20. Также не забывая установить sudo apt-get install libfuse-dev.

 Мастер на GPIO благополучно увиделся командой:

sudo owfs --w1 -m /mnt/1wire --allow_other --debug -F

 DS2408 тоже, но изменение состояния портов оставалось прежним .

ls /mnt/1wire/29.7C4F17000000
address latch.2 latch.BYTE PIO.2 PIO.BYTE sensed.1 sensed.ALL
alias latch.3 LCD_H PIO.3 por sensed.2 sensed.BYTE
crc8 latch.4 LCD_M PIO.4 power sensed.3 set_alarm
family latch.5 locator PIO.5 r_address sensed.4 strobe
id latch.6 out_of_testmode PIO.6 r_id sensed.5 type
latch.0 latch.7 PIO.0 PIO.7 r_locator sensed.6
latch.1 latch.ALL PIO.1 PIO.ALL sensed.0 sensed.7

echo "1" > PIO.0

Облом...

Более внимательная зачитка даташита установила отсутствие сопростивления 10к между RESET и VCC, после установки которого запись состояния портов стала возможной.

Rasspberry PI GPIO DS2408

 

 адаптация даташита для подключения DS2408 к raspberry Pi

 

 

 Ilya L. / 2016