![]() |
![]() |
#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) | |
|
|