![]() |
|
|
#1 | |
|
Senior Member
|
Набор функций для работы по протоколу 1-Wire.
Зависимости: coreutils-sleep. Архив содержит shell скрипт, который позволяет обмениваться данными с 1-Wire устройствами при помощи uart. Описание методики такой работы можно найти по ссылке [1]. Настройка /dev/ttyATH0: Цитата:
Код:
Reset() {
# Сброс параметров.
stty -F $tty 4:0:18b2:0:0:0:0:0:1:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0
# Настройка.
stty -F $tty raw 9600 cs8
# A single slave device running at minimum internal timing will change the response to 0xE0.
printf "\xF0" > $tty
echo "( => ) 0xF0"
dd if=$tty of=ans.dat count=1 2> /dev/null
echo -e "( <= ) `hexdump -ve '/1 "0x%02X"' ans.dat`"
}
Код:
WriteByte() {
# Настройка.
stty -F $tty raw 115200 cs8
n=$1
s=""
for i in `seq 8`; do
b="\xFF"
if [[ $(( $n & 1 )) = 0 ]] ; then b="\x00" ; fi
s=$s$b
n=$(( $n / 2 ))
done
printf $s > $tty
# Очищаем приёмный буфер.
( dd if=$tty of=ans.dat count=8 2> /dev/null ) & /usr/bin/sleep 10e-3; kill $!
}
Код:
ReadByte() {
# Настройка.
stty -F $tty raw 115200 cs8
r=0
s=""
for i in `seq 0 7`; do
printf "\xFF" > $tty
dd if=$tty of=ans.dat count=1 2> /dev/null
n=$(( 2 ** $i ))
b="0"
if [[ `hexdump -ve '/1 "%02X"' ans.dat` = FF ]]; then
r=$(( $r + $n ))
b="1"
fi
s=$b$s
done
echo "0b$s ($r)"
return $r
}
Литература: 1. Using a UART to Implement a 1-Wire Bus Master (pdf).
__________________
Россия навсегда! Последний раз редактировалось uni; 14.06.2014 в 04:54. |
|
|
|
|
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|
|