Vitat's homepage
29 Mar 2024, 12:13 *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: 21.03.08 Произведено обновление сайта/Site was updated
 
  Home   Forum   Help Search Login Register  

Pages: 1 [2]   Go Down
  Print  
Author Topic: Эксперименты с интерфейсом Honda - нид хелп  (Read 29736 times)
0 Members and 1 Guest are viewing this topic.
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #15 on: 22 Jun 2006, 10:43 »

Есть успехи кое-какие Smile
Удалось прочитать первые 3 байта, отправляемые HU при включении питания. Они вот какие: 0x08 0x08 0xFF. Следующие четыре бита, которые вроде бы должны быть 0x0F таковыми не являются Sad Пока точно не могу сказать, чему они равны - времени не хватило на то, чтобы это посмотреть. А что отправляет пионеровская голова при включении питания?

Тайминги при чтении у меня получились такие: 23-25мкс длительность hi в случае 1, и 35-37мкс длительность hi в случае 0.

На мои попытки отправки сообщений HU вообще никак не реагирует пока...

Ау, vS, может у тебя есть какая-то инфа по хондовской шине? Ты как-то говорил, что вопрос в разработке. Где бы взять хондовский ченйджер на недельку, чтобы поэкспериментировать с реальным работающим девайсом? Ни у кого нет в Москве? Smile
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #16 on: 22 Jun 2006, 15:58 »

Вот лог обычного включения моей магнитолы с чейнджером. Лог снимался, когда я изучал протокол.

Code:
ACC is OFF (IP-Bus is empty)
ACC ON
Source CD ON
ACC OFF

START
08 0 08 1 FF 1 ?? 50 50 00 FF 00 00 00 Parity Error D5
88 0 68 1 00 1 CD 01 10
88 0 08 1 06 1 HU A1
88 0 08 1 06 1 HU 01 51 00 00 01 02 14 07 06
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU 40 53 00 00 06 01 00 00 F6 77 05 00
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 10 10 06 00 37 01 00 81 41 00 00 40 F6 4A 03 03 01
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 08 1 06 1 HU 40 5B 80 00 06 09 00 00 04
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 10 10 06 00 34 00 40 04
88 0 08 1 06 1 HU A1
08 0 08 1 FF 1 ?? 40 5E 00 FF 08 00 F0 Parity Error CB
08 0 08 1 FF 1 ?? 10 5F 80 00 FF 0D 00 00 Parity Error 32
08 0 08 1 FF 1 ?? 40 5A 00 FF 0C 00 F1 Parity Error CC
08 0 08 1 FF 1 ?? 10 5B 80 00 FF 09 00 00 Parity Error 2A
88 0 08 1 06 1 HU 00 5B 80
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU 40 5B C0 00 06 09 00 00 06
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 10 10 06 00 20 00 40 06
88 0 08 1 06 1 HU A1
88 0 08 1 06 1 HU 40 5A 00 06 08 00 02 00
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 10 10 06 00 23 01 00 81 41 00 07
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 10 10 06 00 34 07 40 02
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 07 16 01 12 01 FF FF 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 50 10 06 00 20 07 02
88 0 08 1 06 1 HU 50 5A 01 06 20 00 1A 01 01
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 07 19 01 01 12 46 27 10 00 58 20 00 01
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 11 10 06 00 20 07 30 00
88 0 08 1 06 1 HU 50 5A 00 06 08 00 39 00 00 01 00 00
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 00 20 07 39 00 00 01 00 00 02 00 00 00 00 00 00 00 00 00 00
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 10 10 06 00 23 01 00 83 41 00 07
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 10 10 06 00 23 01 00 83 41 00 04
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 00 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 01 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 08 1 06 1 HU 00 53 C0
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU 70 52 00 06 00 00 02 00
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 02 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 03 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 04 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 05 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 06 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 08 1 06 1 HU 70 52 00 06 00 00 02 00
88 0 68 1 00 1 CD A1
88 0 08 1 06 1 HU 00 53 C0
88 0 68 1 00 1 CD A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 07 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 08 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 09 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 00 10
88 0 08 1 06 1 HU A1
88 0 68 1 00 1 CD 61 10 06 01 20 04 16 01 12 01 00 10 02 00 FF 00 00 00 C0 48
88 0 08 1 06 1 HU A1
8 0 08 1 06 1 HU A1
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #17 on: 22 Jun 2006, 16:49 »

ООО!!! Похоже вроде на то, что я вижу. Первая строка сразу после START - это как раз то, что шлет голова в момент включения? И это видимо не стандартное сообщение, т.к. parity error в этом случае. отлично, буду дальше воевать. опять появилась надежда, что там все же обычный ip-bus.

можешь чуть-чуть расшифровать формат лога? что значат 0 и 1 после значений первых 3-х байтов? CD/HU - это источник сообщения?

и еще вопрос - я пытался делать отправку сообщения, но ничего вообще не получилось пока. Я схему собрал в итоге точно такую, как ты предлагаешь. Когда открываю транзистор, то на BUS+ напряжение около 4.8 вольт. и на BUS- по-моему тоже поднимается с 2.5 до 4 с чем-то. это нормально? Разница получается около 0.6В по-моему.
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #18 on: 22 Jun 2006, 17:01 »

А часто HU шлет команды, начинающиеся с 08 08 FF? И что они означают?
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #19 on: 23 Jun 2006, 01:09 »

Первая строка сразу после START - это как раз то, что шлет голова в момент включения?
Да.

можешь чуть-чуть расшифровать формат лога? что значат 0 и 1 после значений первых 3-х байтов? CD/HU - это источник сообщения?
Догадайся.
Адрес устройства - длиной в 27 бит. Я тогда не придумал ничего лучшего как разбить его на 3 байта с одним битом после каждого.

и еще вопрос - я пытался делать отправку сообщения, но ничего вообще не получилось пока. Я схему собрал в итоге точно такую, как ты предлагаешь. Когда открываю транзистор, то на BUS+ напряжение около 4.8 вольт. и на BUS- по-моему тоже поднимается с 2.5 до 4 с чем-то. это нормально? Разница получается около 0.6В по-моему.
Главное - разница между линиями.
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #20 on: 23 Jun 2006, 10:25 »

Адрес устройства - длиной в 27 бит. Я тогда не придумал ничего лучшего как разбить его на 3 байта с одним битом после каждого.
Т.е. по сути это 3 байта и по одному биту после каждого байта, которые обычно являются битами четности, а в данном случае таковыми не являются? А после первых трех байт самого первого сообщения (при включении) я должен посылать acknowledge?

У меня все пока затормозилось на отправке сообщения. Не видит голова моих посылок. Есть какие-нибудь идеи, что можно проверить? Тайминги пробовал менять. Пока не помогло. А вообще я их поставил по аналогии с таймингами первых трех байт, посылаемых HU. По идее надо бы попробовать вскрыть голову и проверить уровень на выходе драйвера шины при разной разнице напряжений на шине.
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #21 on: 23 Jun 2006, 11:26 »

Посмотрел сейчас еще раз даташит на драйвер HA12187. Там указано, что для high на шине разница напряжений обычная 80мВ, максимальная 120мВ. А для low указан только минимум - 20мВ. Может быть так, что при слишком большой разнице (0.6В) драйвер не считает, что это high?
Logged
Vitat
Administrator
Full Member
*****
Gender: Male
Posts: 338


11507314
View Profile
« Reply #22 on: 24 Jun 2006, 00:51 »

Т.е. по сути это 3 байта и по одному биту после каждого байта, которые обычно являются битами четности, а в данном случае таковыми не являются? А после первых трех байт самого первого сообщения (при включении) я должен посылать acknowledge?

У меня все пока затормозилось на отправке сообщения. Не видит голова моих посылок. Есть какие-нибудь идеи, что можно проверить? Тайминги пробовал менять. Пока не помогло. А вообще я их поставил по аналогии с таймингами первых трех байт, посылаемых HU. По идее надо бы попробовать вскрыть голову и проверить уровень на выходе драйвера шины при разной разнице напряжений на шине.
Это не 3 байта по одному биту после. Это 27 бит! Мне проще было представить как 3 байта. На самом деле это не так. Не ленись и почитай описание на IE-Bus, там описано все.
Посылать ack ты не должен, это сообщение не для чейнджера. Посмотри мои исходники. Я за тебя делать ничего не собираюсь. Я сейчас занят совершенно другим. А протокол ковырял больше года назад и уже многое не помню.

Посмотрел сейчас еще раз даташит на драйвер HA12187. Там указано, что для high на шине разница напряжений обычная 80мВ, максимальная 120мВ. А для low указан только минимум - 20мВ. Может быть так, что при слишком большой разнице (0.6В) драйвер не считает, что это high?
Нет. Разница потенциалов либо есть, либо нет. Единственное, если она слишком большая, то на большом расстоянии кабеля будут большие завалы фронтов и т.п.
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #23 on: 30 Jun 2006, 11:55 »

Отправку/получение сделал. все работает. теперь все остановилось на том, что на команду 0x01 0x10 голова отвечает 0x80, вместо ожидаемого 0xA1, после чего замолкает. Ожидаемой инициализации не происходит...
Logged
brokly
Member
***
Posts: 82


View Profile
« Reply #24 on: 13 Jul 2006, 13:42 »

Дело в том, что контрольная сумма в конце посылки считается с учетом этих 32 раздрядных адресов. Как -  не помню, где то тут писал в форуме. Так вот если посылка приходит с неправильно посчитанной суммой, то голова стремиться просигналить хардверный ресет, логер будет видеть как раз 0х80, а на самом деле в конце этого бита идет длинный нулевой уровень. Вощем примерно так , если я ничего не перепутал, давно с этим разбирался....
Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #25 on: 13 Jul 2006, 18:45 »

Дело в том, что контрольная сумма в конце посылки считается с учетом этих 32 раздрядных адресов. Как -  не помню, где то тут писал в форуме. Так вот если посылка приходит с неправильно посчитанной суммой, то голова стремиться просигналить хардверный ресет, логер будет видеть как раз 0х80, а на самом деле в конце этого бита идет длинный нулевой уровень. Вощем примерно так , если я ничего не перепутал, давно с этим разбирался....

Просмотрел все твои посты на этом форуме - не нашел ничего на эту тему. Какие 32-разрядные адреса ты имеешь ввиду? Там вроде адреса 12-битные. По крайней мере так написано в нековском описании IE-BUS. Контрольную сумму считаю точно так, как это делается в коде эмулятора (сумма всех байтов начиная с четырехбитного 0xF). Очень буду признателен за информацию по этому вопросу. А то что-то мои изыскания пока зашли в тупик Sad А при хардверном ресете хедюнит посылает заголовок сообщения (broadcast bit, адреса)?
Logged
brokly
Member
***
Posts: 82


View Profile
« Reply #26 on: 16 Jul 2006, 20:41 »

Точно точно 12 битные !!!! А считается хитро , счаз попробую найти...
Нашел вот тут http://www.vitat.spb.ru/forum/index.php/topic,34.msg270.html#msg270

" Format packets
 St 1 000 1 XXXXXXXX P 000 1 YYYYYYYY P R 1111 p R ZZZZZZZZ p R DDDDDDDD p R .... DDDDDDDD p R SSSSSSSS p R 1
 St - start packet bit 200 ms
 1 - 20/20 ms
 0 - 30/10 ms
 R - sens connect bit
 XXXXXXXX - ID sender (IDSD)
 YYYYYYYY - ID receiver (IDRC)
 DDDDDDDD - data byte (DATA)
 ZZZZZZZZ - long packet
 SSSSSSSS - parity summ = (((IDSD + IDRC) >> RLF(4)) + ((IDSD + IDRC) RRF(4)) + 0xA0 + 0xF + LONG + DATA +... + DATA
 P - parity in header P = B0 xor B1 xor B2 xor B3 xor B4 xor B5 xor B6 xor B7 xor 1
 p - parity in data p = B0 xor B1 xor B2 xor B3 xor B4 xor B5 xor B6 xor B7"

Перевожу конт.сумма=[сумма(адрес_отправителя+адрес_получателя) сдвинутые ВПРАВО на 4 бита, то есть ПЕРВЫЕ 8 бит, из двенадцати получившихся после сложения адресов] + [сумма(адрес_отправителя+адрес_получателя) сдвинутые ВПРАВО на 4 бита, то есть ПОСЛЕДНИЕе 8 бит, из двенадцати получившихся после сложения адресов] + 0x0A + 0xF + [ 8 последних бит суммы всего пакета]. Не забываем что паритет адреса отправителя и получателя формируется сложением последних 8 бит методом исключающего или. Ну вот кажись так, если память не подводит, хотя мог ошибиться со вторым слагаемым из адресов это могло быть и 4 бита (BBBB000) от суммы адресов, вощем или поковыряй мой код или поэксперементируй.

При хардверном ресете ведущий посылает пакет в броадкаст адрес от себя в 0xfff , это можно прочитать в даташите на IE-BUS, тело пакета кажись пустое, то есть вообще нет в нем ничего и КС то же нет. Все это есть в моем коде, нужно его усиленно ковырять.
« Last Edit: 16 Jul 2006, 21:04 by brokly » Logged
skvortsov
Junior
**
Posts: 42


View Profile
« Reply #27 on: 17 Jul 2006, 12:42 »

вот спасибо огромное! твои исходники скачал. буду изучать
Logged
Pages: 1 [2]   Go Up
  Print  
 
Jump to:  

TinyPortal v1.0.5 beta 1© Bloc

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2015, Simple Machines Valid XHTML 1.0! Valid CSS!