Vitat's homepage

General => MP3 => Topic started by: skvortsov on 30 May 2006, 23:35



Title: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 30 May 2006, 23:35
Сегодня подключился к интерфейсу магнитолы Honda Jazz. Схему собрал на ATMega162. В качестве компаратора использовал встроенный в мегу. Прошивку пока сделал простейшую - она "слушает" шину и логгирует через RS-232 длительность импульсов 0 и 1. В итоге получил я вот что:
1) сначала на выходе компаратора имеет 1
2) потом с разной периодичностью (где-то раз в секунду, но интервал скачет) на компараторе появляется 0 на 3 мкс.
3) после ресета моей схемы почему-то до первого 0-го импульса проходит несколько секунд (явно больше последующей периодичности импульсов). отсюда первый вопрос - откуда "голова" знает, что моя схема ресетилась?

Если я правильно понимаю, то в пионеровском IP-Bus голова сама инициирует передачи и первые 3 байта с адресом посылает не дожидаясь никакого ответа от чейнджера. В моем случае получается, что голова посылает только 0 бит периодически а дальше передачи нет.

Дальше я попробовал сделать следующее, сразу после смены первого 0 на 1 я открываю транзистор на 3 мкс (тот, который на схеме без CAN driver'а). После этого голова начинает передавать какую-то непонятную последовательность нулей и единиц. Прикладываю ее в виде лога. В нем в каждой строке сначала идет значение компаратора (32 - это единица, 0 - это 0), потом длительность этого состояния (в 1/8 мкс (засекал по таймеру, запущенному без прескейлера, скорость чипа 8МГц)). Я пока логики в этой последовательности никакой не усматриваю :( Если есть у кого-то какие-то идеи - с радостью выслушаю...

Сергей.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 30 May 2006, 23:52
Сейчас еще смотрел на записанный лог. Вот какое свойство заметил:
1 (на компараторе) всегда бывает либо длительностью 24, либо 41 (24+17). 0 бывает разной длительности. Минимальная - 24. Все остальные длительности больше 24 на число, кратное 17 (41, 58, 75, 92 и т.д.). Максимальная длительность нуля в логе 551 (24 + 31*17). т.е. можно считать, что длительностей нуля разных 32 (5 битов)...

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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat on 31 May 2006, 13:09
Вникать пока нету времени. Но скажу, что инициализацию начинает чейнджер. Голова иногда умеет что-то посылать кому-то без подключенного чейнджера.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 31 May 2006, 13:53
Да, кажется я начинаю понимать... Я не до конца понял логику работы эмулятора. Меня сбило с толку условие в самом начале цикла
if (INPUT_IS_SET) ... Я думал, что как раз мы сначала ждем, пока нам голова что-то скажет. Буду лучше разбираться в коде эмулятора.

А какую команду первой посылает эмулятор?
В блоке, начинающемся с if (SendOK == true)
в начале работы первые три if вроде как не должны выполняться, пока голова нам ничего не посылала, а последний выполнится, после того как сработает обработчик таймера через 2 секунды и выставит Event = EV_STATUS. Получается, что первой командой будет STATUS?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: brokly on 31 May 2006, 15:07
По таймингам очень похоже на этот самый IE-BUS. Голова при включении обязанна послать свой хидер, что бы засветиться, мол есть ведущий. Дальше ведомые сообщают о себе. А просто тупо пионеровский ченьджер не пробывал цеплять ?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 31 May 2006, 15:16
По таймингам очень похоже на этот самый IE-BUS. Голова при включении обязанна послать свой хидер, что бы засветиться, мол есть ведущий. Дальше ведомые сообщают о себе. А просто тупо пионеровский ченьджер не пробывал цеплять ?
Ты имеешь ввиду IP-BUS? Пионеровского чейнджера нет (кстати, может есть у кого в москве ненужный на недельку поэкспериментировать, за пиво? :) ). кстати, надо действительно попробовать выключить магнитолу и засечь, что она шлет после включения. Я этого честно говоря не пробовал. Она у меня всегда работала.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: vS on 31 May 2006, 15:24
Сергей
а хондовский ченжер у тебя есть, или что ты "слушал" ?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 31 May 2006, 15:31
Сергей
а хондовский ченжер у тебя есть, или что ты "слушал" ?
Так в этом-то и проблема, что чейнджера у меня никакого нет. "слушал", что "голова" говорит :) что-то, как видно, мне даже удалось услышать. я исходил из предположения, что говорить начинает голова, поэтому и надеялся что-нибудь услышать на шине, к которой ничего не подключено. теперь оказывается, что "говорить" вроде как чейнджер должен начинать... попробую еще и с этой стороны зайти. может что-нибудь другое в ответ "услышу" :)


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 01 Jun 2006, 10:15
Есть у меня подозрение, что вообще все неправильно я "наслушал". только сейчас понял, что у меня в цикле "слушания" был вставлен и логгинг через UART. а он же на 9600 бод тормозной и по идее должен был занимать кучу времени по сравнению с таймингами шины... Я привык к web-программированию, где временем, затрачиваемым на логгирование можно и пренебречь :)

А как вообще в таком случае правильно логгировать? сначала буферизировать в память лог, а потом его скидывать в UART?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat on 01 Jun 2006, 10:35
Поставь 115200, а без буфера никуда.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 02 Jun 2006, 00:28
На данный момент имею вот что:
1) как только подключаю эмулятор к шине на компараторе (меговском, ЛМ339 никак не впаяю :() сразу начинает скакать то 0 то 1. при чем, даже если подкючить только один провод (плюсовой, например). вольтметр показывает напряжение 0 между BUS+ и BUS-.
2) отправка сообщения зависает в бесконечном цикле
3) чтение сообщений вообще не работает (видимо благодаря пункту 1, т.к. на входе мы имеем полную чушь :()

Есть вопросы по коду эмулятора:
1) timer0_source(CK64); //update every 1us
при скорости 14.5МГц и делителе 64 разьве мы получаем 1мкс??? Или комментарий уже не актуален?
2) как кодируются биты 0 и 1 на шине? 0 это длинный high, потом короткий low, а единица - high low одинаковой длительности? каковы длительности этих импульсов в микросекундах (на сайте http://mictronics.de/?page=cdc_proto#Pioneer есть данные про 33 и 7 мкс для 0 и 20 и 20 мкс для 1).
3) правильно ли я понимаю, что в схеме применен инвертирующий режим работы компаратора? т.е. когда + больше -, то на выходе имеем 0, ну и 1 в противном случае?
3) что такое high на шине? это когда BUS+ больше BUS-? т.е. на выходе инвертирующего компаратора мы имеем 0, что означает выполнение условия INPUT_IS_CLEAR?
4) для чего все же нужен диод между транзистором и шиной?

и еще мне не понятно, куда делись те нулевые импульсы по 3 мкс с периодичностью около секунды, которые я наблюдал позавчера... сегодня я почему-то ничего подобного увидеть не смог. только хаотическое изменение 0 на 1...


заранее большое (нет, даже огромное! :)) спасибо за помощь!

Сергей


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat on 06 Jun 2006, 00:46
На данный момент имею вот что:
1) как только подключаю эмулятор к шине на компараторе (меговском, ЛМ339 никак не впаяю :() сразу начинает скакать то 0 то 1. при чем, даже если подкючить только один провод (плюсовой, например). вольтметр показывает напряжение 0 между BUS+ и BUS-.
2) отправка сообщения зависает в бесконечном цикле
3) чтение сообщений вообще не работает (видимо благодаря пункту 1, т.к. на входе мы имеем полную чушь :()
Резистор 10к между bus+ и землей поставь если не стоит.

Есть вопросы по коду эмулятора:
1) timer0_source(CK64); //update every 1us
при скорости 14.5МГц и делителе 64 разьве мы получаем 1мкс??? Или комментарий уже не актуален?
2) как кодируются биты 0 и 1 на шине? 0 это длинный high, потом короткий low, а единица - high low одинаковой длительности? каковы длительности этих импульсов в микросекундах (на сайте http://mictronics.de/?page=cdc_proto#Pioneer есть данные про 33 и 7 мкс для 0 и 20 и 20 мкс для 1).
3) правильно ли я понимаю, что в схеме применен инвертирующий режим работы компаратора? т.е. когда + больше -, то на выходе имеем 0, ну и 1 в противном случае?
3) что такое high на шине? это когда BUS+ больше BUS-? т.е. на выходе инвертирующего компаратора мы имеем 0, что означает выполнение условия INPUT_IS_CLEAR?
4) для чего все же нужен диод между транзистором и шиной?
1. Наверно не актуален. Не помню уже. :D
2. Так и есть.
3. Вроде да.
4. У Hitachi спроси. Я тупо срисовал внутреннюю структуру микросхемы с небольшими изменениями. Собрал, проверил - работает.

и еще мне не понятно, куда делись те нулевые импульсы по 3 мкс с периодичностью около секунды, которые я наблюдал позавчера... сегодня я почему-то ничего подобного увидеть не смог. только хаотическое изменение 0 на 1...
Здесь есть экстрасенсы? ;-)


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 06 Jun 2006, 10:16
Резистор 10к между bus+ и землей поставь если не стоит.
1. Наверно не актуален. Не помню уже. :D
2. Так и есть.
3. Вроде да.
4. У Hitachi спроси. Я тупо срисовал внутреннюю структуру микросхемы с небольшими изменениями. Собрал, проверил - работает.
Здесь есть экстрасенсы? ;-)
Резистор 10к есть. Пока к шине не подключен эмулятор - на компараторе устойчивое значение, т.к. есть небольшая разница напряжений. Но как только подключаю к шине, то напряжение между + и - становится 0 и  компаратор начинает "гулять". Померял, кстати, сопротивление между BUS+ и BUS- - 68 Ом. Так что по физике это явно IP-BUS.

Буду дальше экспериментировать, как время появится. пока этого самого времени нет. Ну а по поводу экстрасенсов - это так, мысли вслух были :)


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 06 Jun 2006, 10:44
Кстати, у меня в даташите на хитачи HA12187 вот какая схема нарисована (приаттачено).
Какой элемент обозначается двумя пересекающимися окружностями? Источник тока?
Эта схема, похоже, дергает как +, так и -


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 06 Jun 2006, 13:59
to Vitat:
Глядя на хитачевскую схему нарисовал что-то такое (приаттачено). Как думаешь, работоспособный вариант?

P.S. только Q2, наверное, надо поменять на NPN и управлять им через отдельный выход придется видимо


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 22 Jun 2006, 10:43
Есть успехи кое-какие :)
Удалось прочитать первые 3 байта, отправляемые HU при включении питания. Они вот какие: 0x08 0x08 0xFF. Следующие четыре бита, которые вроде бы должны быть 0x0F таковыми не являются :( Пока точно не могу сказать, чему они равны - времени не хватило на то, чтобы это посмотреть. А что отправляет пионеровская голова при включении питания?

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

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

Ау, vS, может у тебя есть какая-то инфа по хондовской шине? Ты как-то говорил, что вопрос в разработке. Где бы взять хондовский ченйджер на недельку, чтобы поэкспериментировать с реальным работающим девайсом? Ни у кого нет в Москве? :)


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat 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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov 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В по-моему.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 22 Jun 2006, 17:01
А часто HU шлет команды, начинающиеся с 08 08 FF? И что они означают?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat on 23 Jun 2006, 01:09
Первая строка сразу после START - это как раз то, что шлет голова в момент включения?
Да.

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

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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 23 Jun 2006, 10:25
Адрес устройства - длиной в 27 бит. Я тогда не придумал ничего лучшего как разбить его на 3 байта с одним битом после каждого.
Т.е. по сути это 3 байта и по одному биту после каждого байта, которые обычно являются битами четности, а в данном случае таковыми не являются? А после первых трех байт самого первого сообщения (при включении) я должен посылать acknowledge?

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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 23 Jun 2006, 11:26
Посмотрел сейчас еще раз даташит на драйвер HA12187. Там указано, что для high на шине разница напряжений обычная 80мВ, максимальная 120мВ. А для low указан только минимум - 20мВ. Может быть так, что при слишком большой разнице (0.6В) драйвер не считает, что это high?


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: Vitat on 24 Jun 2006, 00:51
Т.е. по сути это 3 байта и по одному биту после каждого байта, которые обычно являются битами четности, а в данном случае таковыми не являются? А после первых трех байт самого первого сообщения (при включении) я должен посылать acknowledge?

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

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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 30 Jun 2006, 11:55
Отправку/получение сделал. все работает. теперь все остановилось на том, что на команду 0x01 0x10 голова отвечает 0x80, вместо ожидаемого 0xA1, после чего замолкает. Ожидаемой инициализации не происходит...


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: brokly on 13 Jul 2006, 13:42
Дело в том, что контрольная сумма в конце посылки считается с учетом этих 32 раздрядных адресов. Как -  не помню, где то тут писал в форуме. Так вот если посылка приходит с неправильно посчитанной суммой, то голова стремиться просигналить хардверный ресет, логер будет видеть как раз 0х80, а на самом деле в конце этого бита идет длинный нулевой уровень. Вощем примерно так , если я ничего не перепутал, давно с этим разбирался....


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 13 Jul 2006, 18:45
Дело в том, что контрольная сумма в конце посылки считается с учетом этих 32 раздрядных адресов. Как -  не помню, где то тут писал в форуме. Так вот если посылка приходит с неправильно посчитанной суммой, то голова стремиться просигналить хардверный ресет, логер будет видеть как раз 0х80, а на самом деле в конце этого бита идет длинный нулевой уровень. Вощем примерно так , если я ничего не перепутал, давно с этим разбирался....

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


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: brokly 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, тело пакета кажись пустое, то есть вообще нет в нем ничего и КС то же нет. Все это есть в моем коде, нужно его усиленно ковырять.


Title: Re: Эксперименты с интерфейсом Honda - нид хелп
Post by: skvortsov on 17 Jul 2006, 12:42
вот спасибо огромное! твои исходники скачал. буду изучать