Цитата:
Сообщение от Disgraced
Достал Ардуино Уно, испробовал кучу разных библиотек, результат нулевой.
По прежнему не хочет инициализировать шину.
Похоже проблема в шилде.
Bersenev не могли бы вы дать схему по которой собирали свою щилду?
|
Привет!
Тоже вмешаюсь в разговор. Не так давно мутил проектик для своей ауди. Тоже весь мозг сломал по поводу can сниффилки. Купил шилд и ардуину - не мог подружить. Что только не делал. И кварц менял и трансивер... После 2 недель пыток пришла мысль о том, что шилд мертв. Шилд, кстати, был такой-же, как у тебя... Покупал я его в России. Было безумно жалко денег на новый шилд. Порылся на алиекспрессе и нашел дешманские варики. И купил сразу по 5 штук

Ардуина нано
http://ru.aliexpress.com/item/Nano-3...659109175.html 151руб штучка
CAN шилд
http://ru.aliexpress.com/item/5pcs-l...259606078.html 200рублей штучка.
С этим всем заработало почти сразу... Вот мои комменты:
0. Если ни с какими либами шилд не хочет инициализироваться - либо мертв шилд, либо не корректное подключение...
1. Перед включением еще раз проверяем провода. В моем случае ардуина питалась от USB, а шилд от ардуины. Соединяем MOSI, MISO, SCK, +5 и землю. Любой не задействованный DigitalPin в качестве CS для модуля (его же и в скетче указываем). INT по началу можно вообще не использовать.
2. Для общения с машиной нужно только 2 провода CanH и CanL. Общая земля с машиной не нужна. Скорее всего от общей земли с машиной у меня умер трансивер на первом шилде. Если попутать H и L - ничего страшного не будет. Шилд инициализнется, но данных не будет.
3. Важно выбрать нужную либу - если кварц на 8мгц - нужна соответствующая либа. Почти все либы в нете на 16мгц. Просто замена кварца на 16мгц не приносила результатов. Если кварц не совпадает с либой, то инициализация все равно проходит успешно... только данных нет никаких... или в шину начинает что-то срать - аж блоки теряются.
4. В некоторых либах фильтры изначально настроены так, чтобы ничего не принимать (нужно глядеть код либы). В этом случае инициализируем их, чтобы принимать все:
CAN.init_Mask(0, 0);
CAN.init_Filt(0, 0, 0);
CAN.init_Mask(1, 0);
CAN.init_Filt(1, 1, 0);
5. И самое важное. В некоторых автомобилях (к примеру у меня в AUDI) на диагностическом разъеме (ODB) нет вообще ничего и работает он в режиме запрос-ответ. Т.е. если у диаг шины ничего не спросить - то будет тишина. Поэтому нужно вкурить место подключения. У меня 4 различные шины (моторная, комфорт, инфотеймент и диагностическая). Нужно понимать, что не во всех шинах есть вся информация... И скорости у шин могут быть разные. У меня часть 100, часть 500...
Если интересно, то могу прислать фотку с подключением, либу и скетч...