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.7echo "1" > PIO.0
Облом...
Более внимательная зачитка даташита установила отсутствие сопростивления 10к между RESET и VCC, после установки которого запись состояния портов стала возможной.
адаптация даташита для подключения DS2408 к raspberry Pi
Ilya L. / 2016