Например TDA7294

Форум РадиоКот • Просмотр темы - DS1990A
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт мар 05, 2026 01:45:49

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 26 ]  1,  
Автор Сообщение
 Заголовок сообщения: DS1990A
СообщениеДобавлено: Чт ноя 12, 2009 16:27:23 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
Всем привет!!!
Кто знает как можно прочитать ds1990a по команде F0h ?
огромная просьба не давать ссылки на сайты типа http://www.maxim-ic.com и прочие - всё это лажа!

Я понял принцип чтения по команде F0h и сам могу объяснить кому угодно, но мне необходимо написать программу на Visual Basic-ке для чтения ROM ds1990a по команде F0h. И ещё просьба - команду 33h не предлагать - я этой командой уже всё прочитал, она работает на ура!

Если у кого-то уже есть готовый пример работы ds1990a через com порт, поделитесь пожалуйста!

Кстати о птичках - с недавних пор домофоны стали читать таблетку не по 33h а именно по F0h!!!!!!!!!!!!! чтобы исключить клоны и прочие эмуляторы там всякие!


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 12, 2009 17:09:23 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 22
Зарегистрирован: Чт мар 05, 2009 05:31:16
Сообщений: 622
Откуда: г. Кемерово
Рейтинг сообщения: 0
Очень странно, что сайт производителя - лажа :) Первоисточник так сказать... :)

Не получается возможно потому, что команда 0Fh, а не F0h ? :)

Не поленился, попробовал, все чудно читается.... На VB и через ком порт....


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 12, 2009 17:10:30 
Вымогатель припоя
Аватар пользователя

Карма: 4
Рейтинг сообщений: 22
Зарегистрирован: Чт мар 05, 2009 05:31:16
Сообщений: 622
Откуда: г. Кемерово
Рейтинг сообщения: 0
Читал вот этим http://autobills.ru/1w_read_VB6.html


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 09:42:01 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
Alexey1969 писал(а):
Читал вот этим http://autobills.ru/1w_read_VB6.html



Ой народ, ну мяу-ё-маё а, ну ёлки-палки - ну этот проект читает по команде 33h и по 0Fh - это аналогичные команды! Речь идёт о побитном чтении! ПО Б-И-Т-Н-О-М! андестенд ми?

Работает по следующему принципу - даём сброс, даём команду F0h даём два такта и входной буфер com порта заполняется следующими значениями: 1 0 - это значит, что в ROM находится единица, сразу же выдаём таблетке единицу в качестве подтверждения, если получили 0 1 - значит, что в ROM находится 0, опять выдаём подтверждение, но уже не 1 а 0, если получили 1 1 - это значит, что устройство не ответило, отвалилось, сгорело, сгорел com порт и т.д. и т.п., если получили 0 0, это значит, что мы очень хитрые и подключили на шину два устройства и они оба ответили... и всё это 64 раза - получаем 8 байт информации ROM!!! - Так работают современные домофоны, таким образом они отсеивают клоны и эмуляторы!!!

P.S. Почему меня все считают тормозом перестройки???


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 14:01:15 
Прорезались зубы

Зарегистрирован: Пт ноя 16, 2007 13:52:44
Сообщений: 231
Откуда: Рига, Латвия
Рейтинг сообщения: 0
А возникли сложности переделать данную Вам программу под нужный вам протокол ??
Прочитал статейку, понял всё довольнотаки легко :)
В протоколы обмена не вникал, с удовольствием готов помочь.
Если можете разъясните разницу принципов чтения (алгоритмов), есть идеи по переделки существующей программы..


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 14:50:44 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
Pe3ucTop писал(а):
А возникли сложности переделать данную Вам программу под нужный вам протокол ??
Прочитал статейку, понял всё довольнотаки легко :)
В протоколы обмена не вникал, с удовольствием готов помочь.
Если можете разъясните разницу принципов чтения (алгоритмов), есть идеи по переделки существующей программы..




Сложности возникли сразу же!
Существующая программа http://autobills.ru/1w_read_VB6.html читает ds1990a по команде 33h - хорошо читает! Качественно! Красиво! И код красивый и оптимизирован до безобразия. Дело не в этом - вся беда в том, что я прекрасно понимаю как дать команду F0h и как потом прочитать побитно НО чего-то не получается... а именно вот что: Даю сброс, даю команду F0h, даю два такта инструкцией Call DSOutBit (True), затем жду когда что нибудь свалится во входной буфер mscDevCount > 1, ну и к примеру получаю два бита 1 и 0 - отвечаю таблетке 1 Call DSOutBit (True) и повторяю всё это 64 раза - всё было бы хорошо, НО! 1-я пара бит = 1 0, вторая = 1 0 и после 2-й пары бит я получаю 1 1 - а это означает, что устройство не ответило, потому что сгорело или отвалилось - но это всё чушь, устройство на месте и всё с ним в полном порядке! Вот в чём может быть затык?

Если у кого нибудь есть адаптер и кому интересно могу скинуть проект, над которым я мучаюсь - если интересно конечно...


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:08:44 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Существующая программа http://autobills.ru/1w_read_VB6.html читает ds1990a по команде 33h - хорошо читает!

Ну если устраивает, переделай Function DSInByte() в аналогичную функцию которая читает и возвращает только два бита (там только циклы укоротить) и на базе DSoutByte функцию передающую один бит. а дальше дело только техники и пиротехники: читаем 2 бита, посылаем 1, читаем 2, посылаем 1. Сам я с бейсиками не дружу - готового решения не дам.
А, вот где, возможно, ошибка:
Цитата:
Даю сброс, даю команду F0h, даю два такта инструкцией Call DSOutBit (True), затем жду когда что нибудь свалится во входной буфер mscDevCount > 1
Внимательнее изучайте диаграмму - после F0 читаются 2 бита, а потом мастер посылает один бит указывая по какому дереву пойдет поиск дальше.


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:21:46 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Cyrix писал(а):
Ой народ, ну мяу-ё-маё а, ну ёлки-палки - ну этот проект читает по команде 33h и по 0Fh - это аналогичные команды! Речь идёт о побитном чтении! ПО Б-И-Т-Н-О-М! андестенд ми?
речь идет об ответе на команду SEARCH_ROM - команде, которая позволяет обнаружить адреса всех одновременно подключенных 1-wire девайсов. у меня на сайте есть моя утилитка, которая позволяет через СОМ-порт выполнять поиск 1-wire девайсов. можете найти ее и скачать - будет как раз (говоря по-вашему) побитное чтение.

хотя я не понимаю - адрес-то один и тот же, вам оно зачем? что так, что эдак - считаете одно и то же...

кстати, в апноуте от производителя есть полный исходник на Си алгоритма поиска адресов - просто возьмите 1 в 1 его и откомпилируйте - и будет работать :)

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:25:08 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
uldemir писал(а):
Цитата:
Внимательнее изучайте диаграмму - после F0 читаются 2 бита, а потом мастер посылает один бит указывая по какому дереву пойдет поиск дальше.


Не-не... если попытаться что-то прочитать сразу же после команды F0h то в буфере будет "ничего не будет" и система подвиснет ожидая эти самые два бита. После F0h надо насильно дать два такта в ds1990a, чтобы она (ds1990a) в свою очередь выдала эти два бита, а уж потом читать из буфера и подтверждать первый бит.... как-то так.


жду мастера-сенсея по Visual Basic :(


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:33:39 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
ARV писал(а):
у меня на сайте есть моя утилитка, которая позволяет через СОМ-порт выполнять поиск 1-wire девайсов. можете найти ее и скачать - будет как раз (говоря по-вашему) побитное чтение.


Это где это???

ARV писал(а):
хотя я не понимаю - адрес-то один и тот же, вам оно зачем? что так, что эдак - считаете одно и то же...


Домофоны читают ключ именно по F0h, таким образом они отсеивают клоны и эмуляторы, я хочу сделать полный эмулятор ds1990a.

ARV писал(а):
кстати, в апноуте от производителя есть полный исходник на Си алгоритма поиска адресов - просто возьмите 1 в 1 его и откомпилируйте - и будет работать :)


Не могу сообразить как оттуда перебросить в Visual Basic, так-как совершенно незнаю Си.


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:43:32 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2122
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18482
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Cyrix писал(а):
Это где это???
это здесь
Cyrix писал(а):
Домофоны читают ключ именно по F0h, таким образом они отсеивают клоны и эмуляторы, я хочу сделать полный эмулятор ds1990a.
я мог бы вам помочь, если бы вы работали с Си: я давно сделал библиотеку для поддержки slave-устройств 1-wire, которые умеют реагировать на команды поиска. совсем недавно (вчера) MOLCHEC протестировал ее и собрал с ее помощью свой какой-то девайс страшно нужный ему. но раз вы любите ВижуалВасика - увы...
Cyrix писал(а):
Не могу сообразить как оттуда перебросить в Visual Basic, так-как совершенно незнаю Си.
могу порекомендовать осваивать Си. хотя даже зачатков навыков программиста достаточно, чтобы разобраться в алгоритме и "тупо" переформатировать операторы. я это делал для Pascal (Delphi) - просто заменяя {} на Begin End и операторы = на :=, & на AND и так далее.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 20:43:55 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Cyrix писал(а):
uldemir писал(а):
Цитата:
Внимательнее изучайте диаграмму - после F0 читаются 2 бита, а потом мастер посылает один бит указывая по какому дереву пойдет поиск дальше.


Не-не... если попытаться что-то прочитать сразу же после команды F0h то в буфере будет "ничего не будет" и система подвиснет ожидая эти самые два бита. После F0h надо насильно дать два такта в ds1990a, чтобы она (ds1990a) в свою очередь выдала эти два бита, а уж потом читать из буфера и подтверждать первый бит.... как-то так.


жду мастера-сенсея по Visual Basic :(

Сенсея по вижуалу здесь может не оказаться. Но не понимаю в чем проблема? Там же все сделано тупо - через ком-порт, в полнючем соответствии с далласовской апнотой.
Код:
Private Function DSInTwoBit() As Byte 'подпрограмма ввода 2 бит
    Dim Buf() As Byte
    Dim By As Byte
    mscDev.InBufferCount = 0 'очищаем входной буфер
    For I% = 0 To 1
        Call DSOutBit(True)
    Next I%
    TMInTime# = Now + TimeSerial(0, 0, 1) / 18 ' 1/18 секунды на ответ
    Do 'ждем когда на вход что нибудь придет, с учетом тайм-аута
    Loop Until (mscDev.InBufferCount > 1) Or (TMInTime# < Now)
    'проверяем, весь ли байт пришел
    If mscDev.InBufferCount <= 1 Then
        'байт не целиком, подставляем пучтой символ и выходим
        mscDev.InBufferCount = 0    'обнуляем буфер
        DSInByte = &HFF
        Exit Function
    End If
    Buf = mscDev.Input   'читаем буфер
        For I% = 0 To 1
            If Buf(I%) = &HFF Then
                By = By + 2 ^ I%
            End If
        Next I%
    DSInByte = By
End Function

Примерно так. Функция будет возвращать 0,1,2 или 3.


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 21:41:04 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
огромное спасибо uldemir! но к сожалению после 2-й пары бит от устройста я получаю 1 1 - тоесть устройство сгорело, отвалилось или com порт сгорел, естественно ничего из перечисленного не происходит.
Тоесть первая пара 1 0, вторая пара 1 0, а третья пара бит 1 1 - уже всё перепробовал, незнаю даже в чём может быть дело...


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 21:43:36 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
ARV писал(а):
[... но раз вы любите ВижуалВасика - увы...
могу порекомендовать осваивать Си. хотя даже зачатков навыков программиста достаточно, чтобы разобраться в алгоритме и "тупо" переформатировать операторы. я это делал для Pascal (Delphi) - просто заменяя {} на Begin End и операторы = на :=, & на AND и так далее.



Быть может Вы и правы, возможно мне просто нужно начать изучать Си


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 13, 2009 22:06:29 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Cyrix писал(а):
огромное спасибо uldemir! но к сожалению после 2-й пары бит от устройста я получаю 1 1 - тоесть устройство сгорело, отвалилось или com порт сгорел, естественно ничего из перечисленного не происходит.
Тоесть первая пара 1 0, вторая пара 1 0, а третья пара бит 1 1 - уже всё перепробовал, незнаю даже в чём может быть дело...

А после первой пары бит ты посылаешь подтверждение кого хочешь иметь?
Если тебе пришло 0, 1 - значит есть устройство с 0 в данном бите, то мастер должен послать "0", и читать следующие 2 бита. Если пошлёшь "1", то таблетка подумает, что ее это не касается и отсохнет - вот тогда и получишь "11". Помоему так: Если DSInTwoBit возвращает 1 - надо послать 1, Если 2 - то посылаем 0, Если 0 - у нас развилка: в зависимости от посланного выберется одна или другая ветвь, ну а если 3 - сам знаешь - приехали.
Хм. Мне даже понравилось. Мож тоже поставить вижуал?


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 14, 2009 19:32:04 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
uldemir писал(а):
Хм. Мне даже понравилось. Мож тоже поставить вижуал?



ну конечно же после первой пары бит я посылаю 1 и после второй пары бит тоже посылаю 1 и если бы мне приходило 0 1 я бы посылал 0, но мне приходит 1 0...

мистика какя-то... :shock:

кстати специалистов по Си - целая куча, а вот так чтобы взять и написать что нибудь на Visual Basic - так все попрятались! :evil:


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 14, 2009 19:55:32 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
Код:
Dim R(128)
    Dim Buf() As Byte
    Dim By As Byte
   
Text1.Text = ""
    Call DSReset                              'выдаем сброс
    Call DSOutByte(&HF0)                   'команда на поиск ПЗУ таблетки
         
         
        R(0) = DSInTwoBit
         
         If R(0) = 1 Then Call DSOutBit(True)
         If R(0) = 2 Then Call DSOutBit(False)
         If R(0) = 3 Then MsgBox "отвалилась!"

        R(1) = DSInTwoBit
         
         If R(1) = 1 Then Call DSOutBit(True)
         If R(1) = 2 Then Call DSOutBit(False)
         If R(1) = 3 Then MsgBox "отвалилась!"

        R(2) = DSInTwoBit
         
         If R(2) = 1 Then Call DSOutBit(True)
         If R(2) = 2 Then Call DSOutBit(False)
         If R(2) = 3 Then MsgBox "отвалилась!"


   
  For bt = 0 To 2
  Debug.Print R(bt);
  Next bt


первый ответ 1, второй ответ 1, третий ответ - сообщение "отвалилась!"

что я не так делаю?


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 14, 2009 20:59:25 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Cyrix писал(а):
ну конечно же после первой пары бит я посылаю 1 и после второй пары бит тоже посылаю 1 и если бы мне приходило 0 1 я бы посылал 0, но мне приходит 1 0...
Wrong! Если посмотреть в конце учебника ответы, то тебе первая пара должна быть 1 0, а вторая 0 1. Если мне склероз не изменяет, то первый идет байт family code (01h) начиная с младшего бита. am i right?


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 14, 2009 21:19:12 
Нашел транзистор. Понюхал.
Аватар пользователя

Зарегистрирован: Пт июн 22, 2007 15:17:23
Сообщений: 159
Откуда: Россия г.Мурманск
Рейтинг сообщения: 0
uldemir писал(а):
Cyrix писал(а):
ну конечно же после первой пары бит я посылаю 1 и после второй пары бит тоже посылаю 1 и если бы мне приходило 0 1 я бы посылал 0, но мне приходит 1 0...
Wrong! Если посмотреть в конце учебника ответы, то тебе первая пара должна быть 1 0, а вторая 0 1. Если мне склероз не изменяет, то первый идет байт family code (01h) начиная с младшего бита. am i right?


Да Вы правы на 100% я этот феномен сразу же обнаружил! Сначала идёт фамильный код устройства а это 00000001, тоесть я должен получать такие пары 1 0, 0 1, 0 1, 0 1.... и так до 8-мого бита, а я получаю неизвестно что - 1 0, 1 0 и 1 1 - крандец какой-то! :shock: что-же это за такое а? может в церковь сходить???


Вернуться наверх
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 14, 2009 21:21:00 
Друг Кота
Аватар пользователя

Карма: 50
Рейтинг сообщений: 1400
Зарегистрирован: Пт авг 28, 2009 21:34:30
Сообщений: 7347
Откуда: 845-й км.
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
На уровне моего понимания к коду претензий нет.
Но попробуй добавить контрольные распечатки к каждому действию. И если есть осциллограф, пробник, посмотри - проскакивают ли импульсы. Не стесняйся вставлять паузы - 1-wire допускает. Кстати, можно ли endif не ставить в таком синтаксисе? Я знаю, что бейсик не C, но все же?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  1,  

Часовой пояс: UTC + 3 часа


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y