насчет CD-CH1, наверное, его у меня не было раньше. кинул клич басоводам, вроде нету ни у кого.
Вид для печати
насчет CD-CH1, наверное, его у меня не было раньше. кинул клич басоводам, вроде нету ни у кого.
ak1976, приветствую.
возможно нашел твою проблему с регистрацией, по крайней мере, у меня нечто такое вылезло.
такая проблема: контроллер регистрируется в системе как ченжер, но потом в обмене данными не участвует. голова шлет для него данные, а через три минуты его отключает. при старте он у меня тоже не всегда регистрируется, похоже, он просто шлет запрос на регистрацию до того как голова готова его обработать. перетыкание питания сильно помогает, регистрируется и включается на лету. так что может просто добавить таймер, по которому повторять процедуру регистрации, раз уж нет записи протокола обмена ченжера.
А можешь глянуть на какие сообщения контроллер не отвечает.
В первоначальной версии прошивки делалось 5 попыток регистрации через 300 мс. По идее за 1,5 секунды голова уже должна включиться, но при этом не учитывалось состояние шины и команда могла послаться когда другое устройство посылало в шину сообщение.
В новой версии прошивки, я переместил регистрацию в основной цикл программы и теперь при регистрации контролируется состояние шины. Делается 10 попыток. Правда они идут подряд и вполне может быть, что они могут пройти пержде чем загрузиться голова. Хочу разобраться как так программируется таймер, чтобы и здесь сделать попытки регистрации через 300мс.
да, по моем, он вообще ни на какие не отвечает.
ща, схожу в машину за логами, забыл сразу забрать
300мс думаю многовато будет, там обмен значительно реже, раз секунд в 5, как бы не 10
в архиве 4 файла - 2 оригинала и 2 отфильтрованных, касательно адреса 360 и подозрений на его передачу, типа таких:
> 63 31 F3 00 3F 00 00 00 00 02
> 63 31 F3 00 3F 00 01 00 01 02
> 63 31 F3 00 3D 00 01 00 01 02
> 63 31 F3 00 39 00 01 00 01 02
> 63 31 F3 00 31 00 01 00 01 02
> 63 31 F3 00 21 00 01 00 01 02
> 63 31 F3 00 01 00 01 00 01 02
те что шли подряд, в смежных строках, те что перемежались с другими данными, те с разрывами строк
Это команды посылаемые контроллером после инициализации, на сколько я понял, в них описываются параметры чейджера, т.е. сколько дисков. треков и т.д.
Еще в логах видно, что голова (и не только она одна) часто посылает контролеру команды вида
Судя по этому тексту - это голова опрашивает параметры (типа кол-ва дисков) у чейнджера и нужно отвечать ей разновидностью вышеприведенных команд.Код:< d 120 360 04003163E0
< d 120 360 04003163E2
Есть вариант реализации этого на сайте http://flux242.blogspot.com/ исходники прошивки changer001.zip
в ней как раз описаны запросы
и ответы на нихКод:const rom byte stat_req1[] = { 0x4, 0x00, 0x31, 0x63, 0xE2 };
const rom byte stat_req2[] = { 0x4, 0x00, 0x25, 0x63, 0xE2 };
const rom byte stat_req3[] = { 0x4, 0x00, 0x31, 0x63, 0xE0 };
const rom byte stat_req4[] = { 0x4, 0x00, 0x58, 0x63, 0xE0 };
const rom byte stat_req5[] = { 0x4, 0x00, 0x58, 0x63, 0xE2 };
const rom byte stat_req6[] = { 0x4, 0x00, 0x58, 0x63, 0xE4 };
const rom byte stat_req7[] = { 0x4, 0x00, 0x31, 0x63, 0xE4 };
вот только не знаю насколько это необходимо для работы контроллера. В принципе все равно сколько там дисков голова находит. Главное, чтобы она команду на проигрывание давала.Код:const rom byte CMD_STAT_ANSW1[] = {0x1, 0x06, 0x00, 0x63, 0x31, 0xF2, 0x01, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0x00, 0x80 };
const rom byte CMD_STAT_ANSW2[] = {0x1, 0x06, 0x00, 0x63, 0x25, 0xF2, 0x00, 0x30, 0x00, 0x09, 0x00, 0x06, 0x00, 0x80 };
const rom byte CMD_STAT_ANSW3[] = {0x1, 0x06, 0x00, 0x63, 0x31, 0xF0, 0x06, 0x00 };
const rom byte CMD_STAT_ANSW4[] = {0x1, 0x06, 0x00, 0x63, 0x58, 0xF0, 0x01, 0x11, 0x10, 0x80, 0x01 };
const rom byte CMD_STAT_ANSW5[] = {0x1, 0x06, 0x00, 0x63, 0x58, 0xF2, 0x00, 0x30, 0x00, 0x09, 0x00, 0x06, 0x00, 0x80 };
const rom byte CMD_STAT_ANSW6[] = {0x1, 0x06, 0x00, 0x63, 0x58, 0xF4, 0x06, 0x00 };
const rom byte CMD_STAT_ANSW7[] = {0x1, 0x06, 0x00, 0x63, 0x31, 0xF4, 0x00, 0x1F, 0x00, 0x1F, 0x00, 0x1F, 0x02 };
вытащил исходники, по диагонали пробежался.
проблема в том, что голова что-то шлет ченжеру, а он разговор не поддерживает. надо чтоб хоть че-то отвечал. типа, есть у него диск.
а есть ссылка на среду разработки? правильной версии?
ты вообще не спишь, что ли
Я использую AVR Studio, у меня версия 4.14, но это вроде не принципиально.
Еще к ней нужен WinAVR обязательно версии 20040720
То что у него есть диск, контроллер говорит при инициализации. Единственно, может голова это не всегда успевает услышать.
Я сплю, но мало :)
Последние изменения:
Поборол у себя бутлоадер. Скачас с сайта и собрал свежую версию прошивки, а также программу для закачки. Все чудесным образом заработало. На всякий случай выкладываю все здесь
Вложение 4455
Поправил прошивку, в предыдущей версии забыл поставить загрузку конфига из eeprom, поэтому не адреса не запоминались после перезагрузки контроллера. А так смена адреса головы и чейджера работает. Проверил на тестовой голове. Только адрес нужно посылать в формате
S0120H - для головы
S0360G - для чейнджера
в предыдущем посте про смену адреса я ведущий ноль пропустил, поэтому поменять адрес и не получилось.
Вложение 4456
Мне пообщали принести настоящий чейджер, возможно получиться прочитать, что должен отвечать чейджер голове в разных ситуациях.
Поправил терминал. Теперь из него можно менять адрес головы и чейджера, посылать произвольные команды контроллеру (именно котроллеру, а не в шину как раньше. Команды в шину обрамлялись дополнительными символами и допустим поменять адрес головы из старого терминала нельзя было)
Ну и добавил возможнось отключаться от com-порта, чтобы временно не принимать он контроллера сообщения.
Вложение 4457
ну ты монстр. а у тебя контроллер хоть что-нибудь отвечает голове?
а то я слегка пробежался по коду, ниче такого сразу не нашел. но, правда очень слегда пробежался, не могу сесть позаниматься в эти дни
а, контроллер-то мож и отвечает, только в сом-порт ниче не пишет, я и не вижу
и насчет отваливания через три минуты, у тебя так или все время работает?
Доброго времени суток...
А что надо отвечать чейнджеру на эти команды:
1 160 360 F 04 00 25 63 E0
1 190 360 F 04 00 25 63 E2
1 190 360 F 04 00 25 63 E4
1 160 360 F 04 00 12 01 03
и что за это команды ??
Все что знал про эти команды, я описал чуть выше
Мне на следующей неделе должны дать чейджер, посмотрю чего он отвечает на них.
Принесли мне cd-чейнджер. (Максим спасибо, не поленился сиденье открутить, чтобы достать его).
Собрал я сегодня это все с головой в единый комплекс. Вот результаты первых испытаний.
Вложение 4514
Это лог обмена ченджера с головой.
Я включил ченджер, нажал на воспроизведение, понажимал все кнопки. Вошел в режим диагностики.
адрес у ченджера 240, логический адрес 43 (у адаптера 63)
В режиме диагностики на данной голове, адаптер отвечает также как ченджер и проходит тест. У меня в машине адаптер тест не проходит, вероятно голова еще шлет какие-то команды.
постараюсь в выходные поключить ченджер к машине и записать лог.
м-да, непросто будет догадаться, об чем они говорят. единственно, понятно, что ченжер периодически рассылает бродкасты со своим логическим адресом и отвечает голове, тоже с логическим адресом. негусто. мож, правда рассылать и отвечать чем попало, голова и проглотит
Добрый день.
Ак1976, спасибо за лог. Но у меня команды чуток отличаются, чем у тебя в логе.
Какой у тя мафон и чейнджер ???
Всё равно не нашёл ответов на команды:
1 160 360 F 04 00 25 63 E0
1 190 360 F 04 00 25 63 E4
есть подобные от ID 31 и 58, а от 25 нету..
А случаем не проскакивает в AVC шине данные одометра, а так же расход бензина? Уж очень хочется нормальный Трип комп сделать... Как сие словить? По идее думаю должно быть, так как бошка кажет и расход и километраж и тд тп?
На приусе скорее всего проскакивает. На остальных машинах, если трип в машине есть, то есть вероятность, что он и в шину данные шлет.
В теме про оригинальный адаптер было обсуждение какие коды шлет трип в шину и что они означают. Можно их за основу взять
Надо срочно собирать схемку и пытаться извлечь сие инфу :)
ak1976, у тебя там нет подвижек с обменом?
Собрал схемку, контролерка ожила (в терминале пишет AVClan при ресете) а вот обмена с машиной нет... Может CAN ресивер перегрел, нашел только в корпусе SO8, паять очень геморно... Какова роль светодиода? Мигает при обмене? Или загорается при активации ченжера+AZ-FM? У меня он вообще мертвый...
да, мигает при обмене. поначалу никак не мог понять, когда должен мигать, похоже, молчал
обмен с машиной: мож ошибся с полярностью TX+/-
ресивер там на компараторе собран
Пробовал по разному, и так и этак, если контакты соединить вместе, терминал пишет еще какой то код при старте, видимо то что посылает контролерка в шину... Тобишь по логике есть и прием и передача... Но в терминале тишина.... Как еще можно проверить работоспособность, кто что посоветует?
Все, заработало :)
Есть правда одно но, башка у меня 110, в системе не регистрируется дополнительный CD-чейнджер, а у штатного крышу сносит... :) Чую адреса у доп и у штатного совпадают...
И еще вопрос... У меня выплевываются данные вот такого вида:
< d 1C6 110 0700E55FD8000080
< b 178 FFF 095801DB000000000000
Интересно что есть что?
B или D - это что? Прием или передача?
Вторые два как я понял адрес девайса, и четвертый это данные?
Я тут отвлекся малость на другой проектик - arduino. Тут его тоже обсуждали. Заказал плату на freeduino.ru, а пока она едет собрал облегченную версию на основе metaboard, только печатку переделал, чтобы она была соместима с shield платами. Но это так лирическое отступление. Если чего получется хорошего на этой плате сделать - выложу и ее.
Сегодня собрал компьютер наконец, поправил немного прошивку.
Теперь в ней буфер на отправку в com-порт 350 байт, вместо 240 (больше просто не помещается, вот если бы контролер поменять на ATMega328, но ее пока в продаже тяжело найти) и сделал вывод при печати конфигурации количества потерянных байт, чтобы как-то судить насколько полный лог получился. В общем я готов к дальнейшим испытаниям. В среду сниму лог при работе чейнджера и своей головы, так же договорился с товарищем у которого Prius, снимим лог и с него, заодно посмотрим как ему RGB вход сделать.
мои поздравления. Судя по всему уже 3 собранные платы.
адрес головы и виртуального чейнджера можно поменять в терминале из этого поста, там же и последняя прошивка
Это все прием судя по знаку ""<"
b - это broadcast т.е. широковещательное сообщение, об этом говорит и адрес FFF
d - это direct т.е. адресное сообщение, в данном случаее какой-то шлюз шлет голове сообщение
07 и 09 - это длина сообщения
ну а дальше само сообщение.
Можно встречный вопрос, а как огранизовано подключение компа к голове? откуда RGB вход? У меня у друга тоже prius, правда без навигации, вот думаем как к нему компьютер подключить.
Можно встречный вопрос, а как огранизовано подключение компа к голове? откуда RGB вход? У меня у друга тоже prius, правда без навигации, вот думаем как к нему компьютер подключить.[/QUOTE]
У меня стоит штатная навигация, поэтому тут все просто, от нее RGB отрезал, к компу прилепил, чутка подшаманил частоты в повер стрипе :) Удобно включается БК штатной кнопкой включения навигации :)
У меня новая прошивка как то не понятно работает... При включении вместо AVClan пишет только AV, может так и задумано? На авто еще не проверял, только залил...
К стати не разобрался в терминале с фильтрами... Как ему указать чтоб убирал допустим все сообщения начинающиеся с "< b 178"
Пробовал это в фильтре с условием deny, вообще пусто... Видимо, не совсем разобрался в настройках... Как обозначить чтоб он дальнейшие символы не учитывал аля: "< b 178*" тобишь чтоб смотрел только на начало, а какой конец без разницы?
Без фильтра что то понять шансов нет, все летит с такой скоростью что не чего не понять... если писать лог, то синхронизировать во времени нажатие клавиши и время лога тоже крайне геморойно... :)
А можно новую прошивку с увеличенным буфером :)?
Должна писать AVCLan
нужно сделать
default_policy = permit
filter_000 = \<\sb\s178.*
где
\< - это я знак "<" экранировал, точно не помню, но он может спецсимволом быть в регулярных выражениях. Хуже не будет
\s - пробел
.* - любое количество любых символов
еще можно использовать
\w - любая буква или цифра
\d - любая цифра
\d* - 0 или больше цифр
\d+ - 1 или больше цифр
\d{2} - 2 цифры
вот она Вложение 4713
Спасибо за инфу!!!
С фильтрами разобрался :)
А вот доп ченжер так и не прописывается... Пробовал менять адреса отправляя с терминала команды, но результата нет... Не понятно, меняются они или нет, как опросить какие адреса на данный момент в контролерке? Хотя бы понять, выполняются ли команды...
Готов всячески содействовать в разработке адаптера на базе Ардуино.
Начнем со схемы драйвера шины, схема собирается на базе 5-вольтового малопотребляющего приемопередатчика диффиринциальной шины RS485 состоящего на микросхеме ADM485 или его аналогах.
ak1976 Сможешь проверить на Ардуино хватит ли производительности ?
Для чтения шины нужно попробовать проверить фунцию pulseIn
, а для передачи в шину функцию shiftOut
В терминале есть кнопка печати текущей конфигурации, ну или можно просто послать букву P адаптеру из гипертерминала.
Спасибо за схему, попробуем. Для начала просто подключим внешнюю навигацию, она и будет RGB вход активировать, потом подумаем по поводу эмуляции на адаптере. Я смотрю там еще и NTSC вход есть, его тоже какое-то устройство использует и активирует? Надо будет у LeonVS попросить лог снять при активации камеры или TV.
Так глядишь и активаторы для приуса сделаем открытые.
Интересная схема. Есть вопросы для обсуждения:
1. Чем плоха существующая схема на LM239N, PCA82C250
2. Выходы RX и TX мы соединяем с PB0 и PD7 соответственно? Для начала тогда можно просто к существующей схеме новый драйвер шины подключить (точнее мне проще будет кварц перепаять на 14,7456 МГц в своей metaboard) и проверить работу.
3. В принципе можно просто залить в arduino текущую прошивку, только поменяв ее с учетом частоты кварца 16МГц.
4. Производительности должно хватить, работает же текущий адаптер на ATMega8.
5. Проект я полагаю будет открытым?
VR это оплетка .
1- Эта схема проще и надежней . В коммерческом AVC-Lan реализовано именно по этой схеме
2- Все верно соединяем имено так , а кварцы тут не при чем данный драйвер преобразует сигналы шины в TTL уровни и наоборот
3- меня как раз интересует реализация обмена написаная на языке Processing/Wiring. Это будет удобнее и проще в отлаживании
4- Я имел ввиду про производительность если писать на языке Processing/Wiring
5- Естественно
1. Ясно, сегодня получил Freeduino 2009 и купил ADM485. Буду собирать sheild плату для AVCLan.
2. На частоту кварцев завязаны фунции delay_us и delay_ms. Вот немного про это http://www.softservice.com.pl/coroll...ic.php?p=13#13
3,4 Будем пробовать, по крайней мере реализовать снифер AVCLan. Меня в данном случае привлекает наличие FT232, с помощью которой можно установить обмен данными чуть ли не на скорости 3 мбит/с против 115 кбит/с в текущей версии с com-портом. Сейчас скорости порта не хватает, чтобы передать весь лог при интенсивном обмене в шине. По размеру прошивки. Тестовый пример с миганием светодиода на Wiring выдает прошивку в 896 байт, на C - 140. Конечно на крупных проектах разрыв должен быть поменьше. Текущая прошивка адаптера занимает 5 кбайт.
P.S. Вот наткнулся на реализацию без функций задержки, используется только таймер. Возможно ее будет проще переделать под Processing/Wiring
Попробую сделать вечером читалку на Ардуино. Вот только проверить не негде.
Скорость обмена будет ограничена скоростью обмена ATMEL с FTDI
Если использовать чип FT245R вот тогда скорость будет реактивной
Хм... В новой прошивке опрос и установка адресов головы и ченжера заработали :) Но результат тот же, при любых адресах доп ченжер не появляется, а у первого крыша едет... Причем "Едет" следующим образом без включения зажигания, все нормально отображается и играет, если включить зажигание, играть продолжает нормально, но треки диски и время хаотично скачут... В чем может быть трабла?
К стати вот лог для поиска камеры заднего хода, стоял на месте и 3 раза включил заднюю со следующей парковкой.
А здесь: http://www.softservice.com.pl/corolla/avc/ipod.php появилась нова схема, вообще без драйвера шины AVC, напрямую в Мегу. Может кто попробует?
Вот здесь тоже реализован вход через АЦП, но учитывая то что сигнал по шине передается в противофазе , да и быстродействие АЦП не высокое(требуется как минимум 7мкс), то я бы всетаки использовал ADM485 , проблем будет меньше