Ардуино и считыватель с 1-ware интерфейсом

RainMan
Offline
Зарегистрирован: 21.06.2011

При вет всем! 

По ходу возник такой вопрос. Устройства с 1-ware интерфейсом питаются фантомно. А как быть, когда у меня есть  12 вольтовый считыватель  Proximity брелков, с 1-ware интерфейсом, и ардуина с питанием 3,3 -5в. Ключики TM читаю с ардуины без проблем по 1-ware, а со считывателем мне не надо лепить какие-то согласующие цепи? Или считыватель  польностью эммулирует IButton (Touch Memory)?  

leshak
Offline
Зарегистрирован: 29.09.2011
RainMan
Offline
Зарегистрирован: 21.06.2011

спасибо за ссылочку, но кажется это не то. Мне не надо согласовывать логические уровни. 1-варе интерфейс подразумевает подачу питания "мастер" -устройством на "слейв" и обмен данными со слейвом по шине питания

gena
Offline
Зарегистрирован: 04.11.2012

  А я таки не понял, что Вы хотели узнать (это я автору топика).

 

leshak
Offline
Зарегистрирован: 29.09.2011

Использование устрост разного уровня - подразумевает необходимость согласовывающих цепей. Я дал вам ссылку где расписанно как согласовывать. Как вы без согласование, не важно по шине питания или нет, будете "обмениватся данными" между 12-ти вольтовым и 5-вольтовым устройством? Как только 12-ти вольтовое скажет "один", 5-ти вольтовое скажет "упс!!! пш....", а в обратую сторону 5-ти вольтовое скажет "адин", а 12-ти вольтовое подумает "что-то на ноль похоже".

Ну это все, конечно, догадки. Так как ссылок что же за зверь у вас "12 вольтовый считыватель  Proximity брелков" вы не дали. Даташита на него - нет. И сколько же вольтовый у него интрефейс - не известно (то что он сам питаетеся 12-ти вольтами может ничего не означать).

Более того, если верить http://www.1wire.org/Files/Articles/1-Wire-Design%20Guide%20v1.0.pdf , то 1-wire автоматом означает максимум 5-ти вольтовость. В этом случае "согласование" действительно не нужно, но... а причем тут тогда 12-ти вольтовость считывателя?

Да вообще, даже не очень ясно "кого к кому вы будете подключать" и чего вы хотите от этого считывателя добится. Что бы он эмулировал ключи? ИЛи ардуиной эмулировать ключ? Или каким-то образом настраивать его с помощью ардуины по 1-wire интерфейсу? Или читать с него какую-то статистику? Читать им ключи и отправлять считанное ардуине (подозреваю что это, но нужен даташит)?

RainMan
Offline
Зарегистрирован: 21.06.2011

Спасибо за потраченное время! Конечно как вы и предположили, 12В от которых питается считыватель скорее всего не играют никакой роли.

Весь вопрос был в следующем.

 Есть хорошее наглядное пособие, (http://robocraft.ru/blog/arduino/118.html) где с помошью ардуины можно читать ключики ТouchМemory. Подаем на ключик землю и питание - в замен по шине питания обратно получаем его серийный номер. Все хорошо работает, причем ключик как известно не имее своего источника питания, а запитывается на момент считывания серийного номера от ардуины.

Теперь мне надо прочитать Proximity ключик. Для него продается куча считывателей, c напряжением питания 12в и интерфейсом 1-wire.  Контроллеры сетевого доступа могут напрямую считывать по шине  1-ware  как ТМ-ключики, так и проксимити-ключики (через считыватель с 1-ware интерфейсом) без каких либо переключений и перенастроек. Получается, что считыватель прокси-ключиков полностью эмулирует работу TM-ключика.  Вот и стает вопрос, можно ли к ардуине просто взять и подключить считыватель прокси-ключиков?

RainMan
Offline
Зарегистрирован: 21.06.2011

кстати сейчас замерял напряжение на 1-ware от считывателя - 4,7В

leshak
Offline
Зарегистрирован: 29.09.2011

Смотрите, вы намешали мухи и котлеты.

1-wire - это спецификация шины. Описание "как обмениватся командами", но... какие именно команды будут по ней передаватся - она ничего не говорит. Это как Serial/UART. Как байты кодируются-передаются - зафиксирвоанно, а уж что мы в Serial.print напишем - дело разработчика принимающего и передающего устройства.

Есть другая спецификация iButton. Вот она описывает именно "команды" шлеются по 1-wire в случае работы с таблетками-ключами. Это частный случай для чего может использоватся шина 1-wire. Один из возможных наборов команд.

Существует, к примеру, датчик температуры DS18B20 который тоже работает через 1-wire, но никакого отношения к ключам не имеет. У него совершенно другой набор команд/адресов. Кстати он имеет два варианта подключение - когда берет питание с шины и когда питание ему подается отдельно. Это к тому что использование 1-wire совсем не означает автоматом что устройство питается от нее же.

Далее. Ваш считыватель действительно может реализовывать интерфейс iButton и тогда читать его можно как описанно в вашей статье, но может имет и свой собственный интерфейс. Ваши контроллеры сетевого доступа (а это что за новый персонаж?) могут просто в себе реализовывать и iButton интерфейс и какой-то интерфейс считывателя. И никаких "переключений/перенастроек" для этого не требуется. На 1-wire шине может одновременно несколько разных устройств. Причем не обязательно однотипных (более того с разными - проще). Ваши контроллеры могут просто опросить шину. Нашли там iButoon устройсов - работают с ним, нашли считыватель - работают с ним понятными ему командами.

Итого: говорить про питание, какие интерфейсы реализует считыватель и т.п. не имея на него даташиты (документации) - можно только догадками. 

У вас есть три варианта действий:
1. Искать документацию (или готовую ардуино библиотеку для него)
2. На удачу подключать его и надеятся что он заработает как iButton устройство
3. Брать считывать, контроллер доступа и с помощью логического анализатора (или какого-нибудь 1-wire снифера, к примеру из той же ардуины соорудить)  смотреть как они общаются и заниматся ревер-инжинирингом их протокола.

Естественно первый вариант - наиболее феншуйный.

А еще, есть сильно подозрение что ваши Proxymity - это банальные RFID ридеры. Только дороже. Погуглите в это направление. Может там обычнй RFID справится, если только все не осложнено каким-нибудь хитропопым шифрованием.

 

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

кстати сейчас замерял напряжение на 1-ware от считывателя - 4,7В

Ну дык я же приводил ссылку на спецификацию где сказанно что это именно TTL уровни используются в этом протоколе. Вы подтвердили это :)

Хотя, конечно, тыкнуть тестером и убедится что ожидания оправдываются - весьма полезная привычка. Все правильно вы сделали :)

P.S. И да, 1-wire, не 1-ware. Может мешать при гуглении. wire - провод (eng).

RainMan
Offline
Зарегистрирован: 21.06.2011

так о банальных RFID ридерах и идет речь. Вы хотите сказать что этот ридер не иммитирует Ibutton когда подключается к контроллеры по 1-ware? Если нет, то можете ткнуть на информацию?

leshak
Offline
Зарегистрирован: 29.09.2011

 

RainMan пишет:

так о банальных RFID ридерах и идет речь. Вы хотите сказать что этот ридер не иммитирует Ibutton когда подключается к контроллеры по 1-ware? Если нет, то можете ткнуть на информацию?

Я понятия не имею про какой ЭТОТ РИДЕР идет речь. Вы где-то в своих постах видите ссылку на его описание? Или хотя-бы название/модель? Многие из них вообще по Serial работают и никаким iButton не пахнут в принципе. 

И вообще я ничего не хочу сказать. Я помоему достаточно ясно выразился что без документации - только гадать. А вы по прежнему хотите из меня вытащить какие-то увтреждения, что-бы я вас куда-то ткнул. Ну могу ткнуть если хотите http://bit.ly/Wl2U1s

И почему вдруго "про RFID" идет речь если выше вы везде Proximity говорили?

RainMan
Offline
Зарегистрирован: 21.06.2011

так RFID считыватели и считывают Proximity-карточки и  Proximity-брелки. Вот нашел статью (http://we.easyelectronics.ru/howwork/rfid-chast-1-rider.html), как раз про мой случай. Только не понятно как считыватель подключать к ардуине. В какое место влепить сопротивление ? Подключил считыватель к ардуине напряммую, без сопротивления, и питание соответственно не брал с ардуины, т.к напряжение ест ьна выходах 1-ware считывателя (как в статье  http://robocraft.ru/blog/arduino/118.html)  - не работает.

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

так RFID считыватели и считывают Proximity-карточки и  Proximity-брелки. Вот нашел статью

Не знаю, мне гугл перво ссылкой выдал

http://www.ehow.com/facts_7412912_difference-between-proximity-id-rfid_....

Из которой видно что это родственные, но различные технологии (и в чем-то конкрурирущющи)

RainMan пишет:

(http://we.easyelectronics.ru/howwork/rfid-chast-1-rider.html), как раз про мой случай.

Только не понятно как считыватель подключать к ардуине. В какое место влепить сопротивление ? Подключил считыватель к ардуине напряммую, без сопротивления, и питание соответственно не брал с ардуины,

Если у вас действительно такое же ридер как в статье - то ничего не нужно. Все резисторы/обвязка уже имеетеся.

Только соеденить линию данных и земли. Напрямую. Дальше он прикидывается iButton (вот этот конкретный, это не значит что ВСЕ ридеры поступают точно так же).

RainMan пишет:

т.к напряжение ест ьна выходах 1-ware считывателя (как в статье  http://robocraft.ru/blog/arduino/118.html)  - не работает.

Значит либо ридер у вас другой, либо RFID и Proximity не одно и тоже. А еще, судя по коментам, карточки могу с ридером по разным протоколам общатся. И не все ридеры понимают все карточки.

RainMan
Offline
Зарегистрирован: 21.06.2011

http://irs.ua/product/pr_01  это ссылка на считыватель. Там написано, что по интерфейсу 1-ware считыватель иммитирует TouchMemory. Но при прямом подключении к ардуине не работает:( Таблетки ардуина читает, а со считывателя не хочет. Может все-таки надо воткнуть сопротивление куда-нибудь?

leshak
Offline
Зарегистрирован: 29.09.2011

Ну если напрямую не сказанно (и не удается нагуглить более подробную документацию), то можно предположить что встроенного резистора нет. А по спецификации 1-wire должен быть (читали описание шины?). Только лепить его нужно не "куда-нибудь", а куда нужно. А нужно подтянуть линию данных к питанию. То есть к 5v дуины. Вообщем как на схеме из статьи про iButton.  Раз он "прикидывается кнопкой", то  логично что и схема должна быть такая же.

Разве что резистор, можно попытатся взять побольше. 4.7K более традиционный номинал. До 10K используют (если провода не сильно длинные).

Ну и убедится, прежде чем читать дуиной, что он сами брелки читает. У него же есть световая индикация и пищик (чуть не умер, с этого слова ;) Может вы пытаетесь выжать из него "волшебное слово" которое он сам не знает.

RainMan
Offline
Зарегистрирован: 21.06.2011

да читает брелки. Только что через вейганд-26 подключил к ардуине - все читает, но хочется через 1-ware. Поиграюсь с сопротивлением

RainMan
Offline
Зарегистрирован: 21.06.2011

подтянул к питанию +5в дуины шину данных от считывателя- без результатно:( может еще будут предложения по согласованию?

leshak
Offline
Зарегистрирован: 29.09.2011

А что означает "без результатно", что оно при этом пишет в Serial?

Перепроверите подключение. Data, там с Data0 не перепутали? Бывает банальное "контакты плохие" или "рядом блок питания лежит и наводки дает".

А сами Data0,Data1 во время теста 1-wire отключали от дуины?

Эх, найти бы на него datasheet (мне не удалось, а то что на сайте - отписка краткая). У некоторых других ридеров, к примеру, что-бы включить 1-wire нужно Wegand0 и Wegand1 замкнуть между собой до включения. Но... стремно такое пробовать "по аналогии" без прямого указания в документации.

По хорошему, если у вас есть этот самый "контроллер сетевого доступа" - было-бы не плохо с ним протестить. Что-бы узнать "в коде/ардуине" у нас проблемы, или все-таки в самом ридере.

Если с ним заработает, то можно попытатся взять какой-нибудь логический анализатор (или из ардуины соорудить) и попытся посмотреть "что там происходит" на шине.

RainMan
Offline
Зарегистрирован: 21.06.2011

этот считыватель - разработка авторов этого сайта. Так никто естественно даташиты выкладывать не будет. Когда подключаюсь к выводу DATA,  DATA0 и  DATA1 - не задействованы. Насчет закорачивания DATA0 и DATA1 -врядли, пр подключении к контроллеру по 1-варе ничего не надо коротить. И по ходу эти считыватели типа универсальные, т.е должны без проблем подключаться к контроллерам сетевого доступа других разработчиков. Да и в описании написано конкретно - считыватель при работе по 1-варе прикидывается таблеткой TouchMemory. Почему не работает - не пойму. 

С контроллером по 1-варе он работает - проверено

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

этот считыватель - разработка авторов этого сайта. Так никто естественно даташиты выкладывать не будет.

Это как раз "не естественно". Вы путаете "schema", разводку платы  и "datasheet".

Последнее - это просто подробная документация (я не краткий userguide). И его выкладывает любой уважающий себя производитель любого устройства (если не поленился его написать). Раз авторы известны - то можно попытатся с ними списатся и просто попросить его.

RainMan пишет:

Насчет закорачивания DATA0 и DATA1 -врядли, пр подключении к контроллеру по 1-варе ничего не надо коротить. И по ходу эти считыватели типа универсальные, т.е должны без проблем подключаться к контроллерам сетевого доступа других разработчиков. Да и в описании написано конкретно - считыватель при работе по 1-варе прикидывается таблеткой TouchMemory. Почему не работает - не пойму. 

Сам интерфей 1-wire действительно не требует никаких "корочений". Универсальный и проч.... Он вообще ничего не знает про существование DATA0 и DATA1. Но... вот сам считыватель является конкретным устройством. И разработчики могли вложить в него любую логику. Например такую что активен одновременно только один интерфейс. А другой нужно "включать". Например вот 

http://sector-sb.ru/catalog/kontrol_dostupa/scud_parsec/schityvateli_par...

 

RainMan пишет:

С контроллером по 1-варе он работает - проверено

Я правильно вас понял что связка

таблетка->1-wire->arduino - работает
считыватель->1-wire->какой-то-покупной-контроллер - работает

А связь
считыватель->1-wire->arduino - не работает

Верно?

Если да, то....

1. Все-таки, в чем же именно проявляется "не работает", что пишется при этом в терминал?
2. Опишите как вы подключаете в случае с таблетки и считывателя. 
3. Какие скетч и библиотеку вы используете? Если вы во взятый скетч вносили любые, самые незначительные изменения (подцепили на другой пин и проч.) - укажите их. А еще лучше - покажите тут скетч который вы используете.
4. Попробуйте дать на арудину внешние питание, а не от USB. Частенько бывает что бьешься с магическими глюками, а потом выяняется что "не хватало питания".
5. Укажите какую именно ардуину вы используете.

 

RainMan
Offline
Зарегистрирован: 21.06.2011

1) скетч взят вот отсюда http://robocraft.ru/blog/arduino/118.html. Ели подключить вместо таблетки считыватель  в терминал выдает  - No more addresses. Если подключить таблетку то выдает ее серийный номер.

2) Считыватель  к ардуине подключю так:

   А)земля ардуины - земля считывателя,  пин 10 ардуины - Data считывателя.

   или

    Б)  так же как в варианте А,  только +5в  ардуины подаю  через сопротивление 2-3кОм на 10 пин ардуины. Как на рисунке по ссылке выше. 

Теблетку к ардуине подключаю как на ссылке выше

4) ну тут врядли кроме самой ардуины больше ничего не висит в нагрузке. А внешнее питание конечно попробоват можно

5)Mega2560

Больше всего в этой истории меняы смущает то, что со стороны считывателя на выходе DATA постоянно присутствует напряжение  около 5В, чего нельзы сказать о таблетке. Может в этом направлении надо копать? В считывателе не предусмотрено переключение между вейгандом и 1-варе, думаю, что они работают параллельно

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

Больше всего в этой истории меняы смущает то, что со стороны считывателя на выходе DATA постоянно присутствует напряжение  около 5В, чего нельзы сказать о таблетке. Может в этом направлении надо копать? В считывателе не предусмотрено переключение между вейгандом и 1-варе, думаю, что они работают параллельно

Это можно означать, что резистор подтягивающий к 5v уже встроен в сам считыватель (как в статье с easyelectronics) и самому добавлять его - не нужно.

Тут бы конечно, очень помого какой-то логический анализатор или осцилограф, что-бы посмотреть "что там на шине происходит" и "в чем разница". Если под руками есть вторая ардуна - можно из нее соорудить простейший.

Возможно встроенный подтягивающий - слишком сильный (тогда добавлением своего - мы еще больше усугубляем пробелему) и у ардуины не хватает сил "придавить" линию к земле (или слишком медленно придавливается).

Можно попытатся поигратся: Data пин дуины подергать "вверх вниз", а другим пином в этот момент смотреть за какое время линия становится в ноль и востанавливается. Посмотреть сколько времени это занимает с таблеткой и сколько занимаете падение, востановление.

Еще можете просто покрутить в loop (и выводить что он возвращает) ds.reset(). Возвращает он, хоть иногда, при работе со считывателем единицу?

Что-то типа:

loop(){
  if(ds.reset()){
    Serial.println("BINGO");
  };
}

 

RainMan
Offline
Зарегистрирован: 21.06.2011

есть и логический анализатор вот - такой Saleae есть и вторая дуина, вопрос извечный - время. Хотя это хороший повод освоить анализатор, я его только получил. 

leshak
Offline
Зарегистрирован: 29.09.2011

Ну "время" - любое хобби требует времени :)  Если нужно что-бы "просто работало", то купить готовый и дело с концом. Это и быстрее, а часто и дешевле.

Вторая дуина: ну простейший анализотор. Хотя-бы увидеть меняется там что-нибудь на data-линии или и нет, можно вот примерно таким скетчем увидеть:

 

#define PIN 2

byte prevState=1;
unsigned long lastChangeTime=0;
void setup(){
  Serial.begin(57600);
  pinMode(PIN,INPUT); // не обязательно, просто что-бы виднее было
  Serial.println("listening....");
  lastChangeTime=millis();
}

void loop(){
  byte state=digitalRead(PIN);
  
  if(prevState!=state){ // произошло изменение
    unsigned long changeTime=millis();
    
    // выводим текущие состояние и сколько времени прошло с прошлого изменения
    Serial.print(state);
    Serial.print("=");
    Serial.println(changeTime-lastChangeTime,DEC);
    
    lastChangeTime=changeTime; // запомнили когда было последние изменение
  }
  
  prevState=state;
  
}

Подсоединяем DATA линию к D2 второй дуины (без всяких резисторов), соединям земли, пускаем - пробуем читать. По идее он должен выводить сколько времени держится 0 и 1 на линии.

Хотя, если разберетесь с анализатором, то думаю там еще все проще и наглядней будет видно :)

RainMan
Offline
Зарегистрирован: 21.06.2011

leshak пишет:

Ну "время" - любое хобби требует времени :)  Если нужно что-бы "просто работало", то купить готовый и дело с концом. Это и быстрее, а часто и дешевле.

 

Ну на то оно и хобби, чтобы на него тратить время. Просто дома идет настоящее сражение за него. Если час в день удается выкроить на хобби, то это уже много:)

RainMan
Offline
Зарегистрирован: 21.06.2011

водщем без логического анализатора не разобрался бы. Та библиотека что у меня есть работает так  с ключиком ТМ (по диаграммам анализатора):

1) контроллер (ведущий) генерирует сигнал "ресет" с какойто периодичностью 

2) если считать ключик ТМ (ведомый), то ключик выдает  - "приветствие" после очередного "ресет" от контроллера

3)ведущий отправляет команду SEARCH ROM (ПОИСК ПЗУ) код FOh

4)ведмый выдает  Family Code section from ROM=1

5) ведмый выдает  ROM CODE section from ROM=XXXXXX  (6 байт серийого номера ключика)

 

а контроллер СКД работает со считывателем Proximity таким образом (по диаграммам анализатора):

1) контроллер (ведущий) генерирует сигнал "ресет" с какойто периодичностью 

2) если приложить ключ к считывателю(ведомый), то считыватель выдает сигнал - "приветствие" после очередного "ресет" от контроллера

3)контроллер посылает READ ROM command =33h

4)ведмый отвает Family Code section from ROM=1

5) ведмый отвает ROM CODE section from ROM=XXXXXX  (6 байт серийого номера ключика)

 

когда подключаю считывател проху к ардуине с происходит следующее (по диаграммам):

1)ардуина (ведущий) генерирует сигнал "ресет" с какойто периодичностью 

2)если приложить ключ к считывателю(ведомый), то считыватель выдает сигнал - "приветствие" после очередного "ресет" от контроллера

3)ведущий отправляет команду SEARCH ROM (ПОИСК ПЗУ) код FOh

4) считыватель Прокси - молчит

Все это наводит на мысль, что прокси-считыватель не понимает комманду SEARCH ROM (ПОИСК ПЗУ) код FOh, а прикидывается "таблеткой" в упрощенном варианте.

 И действительно приложив ключик к Прокси считывателю, получаем приветствия от считывателя, отправляем считывателю  запрос  -  READ ROM command =33h.   Дальше даю комманду считать 9 байт.

первый считанный байт = 1 это  Family Code section from ROM=1, отальные 8 байт - бред. Я уже незнаю, что и делать. 

 

leshak
Offline
Зарегистрирован: 29.09.2011

Первое что приходить в голову:

loop(){
  if(ds.reset()){
    ds.write(0x33h)
  }
  delay(20); // не уверен в необходимости
}

 

То есть попытатся максимально вопсроизвести поведение " контроллер СКД работает со считывателем Proximity таким образом" в пунктах 1-3, дальше если анализатор покажет что и дальше все идет по тому же сценарию (видны ответы такие как в 4-5, тогда пытатся их читать)

 

RainMan
Offline
Зарегистрирован: 21.06.2011

leshak пишет:

Первое что приходить в голову:



loop(){
  if(ds.reset()){
    ds.write(0x33h)
  }
  delay(20); // не уверен в необходимости
}

 

То есть попытатся максимально вопсроизвести поведение " контроллер СКД работает со считывателем Proximity таким образом" в пунктах 1-3, дальше если анализатор покажет что и дальше все идет по тому же сценарию (видны ответы такие как в 4-5, тогда пытатся их читать)

 

вобщем сделал как вы сказали. Вот код

 

if ( ds.reset()) {
    ds.write(0x33);
    for( i = 0; i < 8; i++) addr[i]=ds.read();
   for( i = 0; i < 8; i++) {Serial.print(addr[i],DEC);
   Serial.print(" ");}
   Serial.println();

 }

На анализаторе видно как считался сначала код Family=1, а потом 6 байт номер ключика - 11107850., потом СRC=7

Но на экране высвечивается-  1 10 126 169 0 0 0 7

Чтобы это могло быть? Кстати библиотека при чтении ключика из примера http://robocraft.ru/blog/arduino/118.html не использует функцию read(). Может функция коряво написана?

tsostik
Offline
Зарегистрирован: 28.02.2013

RainMan пишет:

На анализаторе видно как считался сначала код Family=1, а потом 6 байт номер ключика - 11107850., потом СRC=7

Но на экране высвечивается-  1 10 126 169 0 0 0 7

Чтобы это могло быть? Кстати библиотека при чтении ключика из примера http://robocraft.ru/blog/arduino/118.html не использует функцию read(). Может функция коряво написана?

1 - Family

10 - младший байт номера ключа (0x0A)

126 - второй байт номера ключа (0x7E)

169 - третий байт номера ключа (0xA9)

Три нуля - три старших байта

7 - CRC

Объединяем номер ключав одно число, получаем 0xA97E0A или как раз 11107850 в десятичной системе.

 

leshak
Offline
Зарегистрирован: 29.09.2011

Для начала прикрепленная тема форума :) Вставка программного кода в тему/комментарий

RainMan пишет:

На анализаторе видно как считался сначала код Family=1, а потом 6 байт номер ключика - 11107850., потом СRC=7

Я правильно вас понял что, с точки зрения анализатора на шине теперь все выглядит точно так же как и при работе с СКД? То есть осталось только "правильно прочитать ардуиной", а сам ключь уже отсылается верно.

leshak
Offline
Зарегистрирован: 29.09.2011

tsostik пишет:

Объединяем номер ключав одно число, получаем 0xA97E0A или как раз 11107850 в десятичной системе.

Ага. Значит рак на горе уже свистнул, только мы не сразу поняли это ;) Выходит задача уже решена :)

RainMan
Offline
Зарегистрирован: 21.06.2011

очевидно так. Нечеловеческими усилиями :):) Тем не менее победа. Да и другим будет урок. Всем спасибо!

PS: кстати сам дошел до этого. Дошло до того что начал анализировать осцилограмму, раскладывать по битам... Решил доложиться о прогрессе, а вы опередили

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

очевидно так. Нечеловеческими усилиями :):) Тем не менее победа.

Да ладно. Обычное вазявканье/выяснение. Многие думаю что работа программиста это "придумывать и писать код". Ан нет :), иногда до 80% времени занимает "ну почему же зараза не работает". Так что это был совершенно обычный процесс разработки.

А в вашем случае еще и практически "без шанса проиграть". Только руки не опускать и все. Условия практически тепличные.
1. Есть устройства которые работают и нужно просто "воспроизвести". То есть у вас 100% уверенность в железе и просто нужно сыграть в игру "найди отличия".
2. У вас есть анализатор.

А вот представте что СКД у вас нет. Работает ли вообще считыватель - не ведомо. Анализатора нет.
Тогда нужно брать вторую дуину и на ней сооружать примитивный анализатор (да и это тоже время). Причем неизвестные добавляются (нет гарантии что сколхозенный анализатор правильно работает). А могло быть еще печальней - и второй дуины нет. Только одна и считыватель. 
Тогда извращатся и ей же бытатся логгировать "что там на шине происходит...". И опять гадать "а не мешает ли это нормальной работе считывающего кода..."

И ничего... и в таких условиях "расковыриваются, ломают голову и догадываются...". Более того именно такие условия являются более привычными для самодельщиков. Когда нет проф. диагностического оборудования и кучи железа для эксперементов :)

RainMan пишет:

Да и другим будет урок. Всем спасибо!

"Ветер слева будет мне уроком: Я на срез выскакиваю боком."  (Гимн корабельных истебителей)

Ладно про других, а для вас урок в чем состоял-то?  ;)   Честно, не вижу я тут ничего "особо поучительного". Что помогло бы избежать подобных возявканий в будущем.

P.S. Надеюсь теперь понятно, почему вызвает нездоровый смех, когда где-то видишь от заказчика "да там все просто, для программиста на 15-ть минут работы". Забывают что написать правильно строчку коду может занять 2 недели и три банки кофе :) И это совсем не означает "плохой программист".

RainMan
Offline
Зарегистрирован: 21.06.2011

согласен с "тепличными условиями". Просто всему есть обьяснение.

Для опытного программиста это всего лищ очередная галочка, что мозги не усохли, квалификация в норме.  Как для меня - так с анализатором и протоколом 1-варе я столкнулся  первый раз в жизни... 

leshak
Offline
Зарегистрирован: 29.09.2011

RainMan пишет:

Для опытного программиста это всего лищ очередная галочка, что мозги не усохли, квалификация в норме.  Как для меня - так с анализатором и протоколом 1-варе я столкнулся  первый раз в жизни... 

Так эта ситуация "в первые в жизни" - это постоянное состояние. Что опытного, что нет. И программист никогда из него не выходит (если речь не про быдлокодера). В каждом новом проекте/следующем этапе есть новая библиотека, железка, API, протокол, методика, инструмент... Осваивать что-то новое - нужно постоянно. В этом и проклятие професии (с возрастом это трудней) и счастье. Поэтому, на определенном уровне развития для программиста становятся важны не конкретные знания, а привычки/методология как разбиратся с новыми проблемами.

Так что если надеетесь что "вот освоюсь и все пойдет как по маслу" - зря ;)