Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > CyberWrt

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.06.2014, 11:23   #1
uni
Senior Member
 
Аватар для uni
 
Регистрация: 29.10.2013
Адрес: Екатеринбург, Нижневартовск, Энергодар
Возраст: 43
Сообщений: 573
Вес репутации: 599
uni has a spectacular aura aboutuni has a spectacular aura about
Отправить сообщение для uni с помощью ICQ
По умолчанию CyberWrt модуль "1-Wire"

Набор функций для работы по протоколу 1-Wire.

Зависимости: coreutils-sleep.

Архив содержит shell скрипт, который позволяет обмениваться данными с 1-Wire устройствами при помощи uart. Описание методики такой работы можно найти по ссылке [1].

Настройка /dev/ttyATH0:
Цитата:
Нашел универсальное решение (это касается последних ревизий, начиная с r36992).

1. Пишем в консоли или забиваем в rc.local одну команду:
Цитата:
echo 0 > /proc/sys/kernel/printk
(действие будет моментальное)

Если мы хотим, чтобы "транслирование лога в консоль" отключилась чуть раньше, то вместо вышеописанного, можно воспользоватся файлом /etc/sysctl.conf, добавив в него следующую строку :
Цитата:
kernel.printk = 0 4 1 7
(вступит в действие после перезагрузки)

Отключение затрагивает только консоль взаимодействующую с физическим портом (первое значение из 4х цифр), т.е. dmsg будет работать как положено. Подробнее...

2. Теперь необходимо отключить запрос консоли через UART (обычно, когда нажимаем Enter в UART консоли - открывается консоль роутера), чтобы отключить эту функцию, необходимо в /etc/inittab, закомментировать последнюю строку :
Цитата:
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
#::askconsole:/bin/ash --login
(вступит в действие после перезагрузки)

Удачи!
Функция Reset
Код:
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
Код:
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
Код:
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
}
Внимание. Будьте аккуратны с устройствами, которые могут переключать интерфейс. Например, DS1821, который может переходить в режим термостата и обратно. Вы можете ввести его в режим термостата, а вот обратное сделать не просто. Чтобы случайно не использовать такие возможности не экспериментируйте с произвольными посылками, их вариантами, а следуйте документации на прибор.

Литература:

1. Using a UART to Implement a 1-Wire Bus Master (pdf).
Миниатюры
Нажмите на изображение для увеличения
Название: 2014-06-13 15-13-04 1-Wire – Yandex.png
Просмотров: 354
Размер:	31.9 Кб
ID:	1766  
Вложения
Тип файла: zip onewire-0.1.5277.25411.zip (27.6 Кб, 195 просмотров)
__________________
Россия навсегда!

Последний раз редактировалось uni; 14.06.2014 в 04:54.
uni вне форума   Ответить с цитированием
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:44. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика