Допустим нам нужно из кан шины получать сигнал дверного концевика и что-то делать когда при этом. Покажем как это сделать с помощью нашего устройства.
В качестве стенда у нас блок BCM от какого-то Ниссана. Наш кан девайс сейчас в режиме кан-хакера. Иммитируем открывание передней правой двери замыкая вход дверного концевика на массу.
К примеру у нас задача включать подсветку при открывании двери (конечно это оверинжиниринг и так усложнять никто не станет, это просто для примера).
Как видим первый байт в пакете с ID 0x60D меняется с 0x00 на 0x10 (b00010000) при открывании двери. При этом при открытии второй передней двери первый байт будет 0x08 (b00001000), а при открытых обоих дверях будет 0x18. Далее покажем как настроить выход только по одной двери (нам нужен только один бит из первого байта 0x10 = b00010000).
Настройка Кан-хакер лайт
В первом меню двумя крайними кнопками выбираем нужный режим работы, если скорость вашей кан шины 500 можно переходить сразу в режим хакера, скорость 500 стоит по умолчанию. Если же вы хотите переключиться на другую скорость переведите курсор на настройки (setting).
Длинное нажатие четвёртой кнопки перекинет вас в следующее меню, здесь выбираем can speed и снова длинное нажатие четвёртой кнопки.
И крайними кнопками выбираем нужную скорость. Далее возвращаемся в первое меню (длинное нажатие первой кнопки).
И переходим в режим кан-хакер (длинное нажатие четвёртой кнопки).
И начался приём пакетов, крайними кнопками выбираем нужный пакет, этот BCM шлёт четыре пакета, нам нужен ID 60D. Крайними кнопками переходим к нужному.
Далее, длинным нажанием на кнопку 4 переходим в режим редактирования этого сообщения.
Здесь видим таймаут сообщения — 100ms. С помощью крайних кнопок выбираем байт для редактирования. И с помощью 2 и 3 кнопок устанавливаем первый байт в 0x10 (короткое нажатие кнопки 3 увеличивает значение на 0x01, длинное на 0x10, кнопка 2 уменьшает)
Далее ещё раз длинное нажатие кнопки 4.
Здесь кнопками 2 и 3 можем выбрать количество байт в сообщении, оставляем как есть — 8. Ещё раз нажимаем кнопку 4 и попадаем в режим выбора таймаута.
Так как передавать это сообщение нам не нужно, оставляем как есть. Следующим длинным нажатием кнопки 4 попадаем в режим выбора ячейки, выбираем любую из трёх и сохраняем сообщение в ячейку.
Когда сообщение сохранено кнопками 2 и 3 выбираем режим *M. Тут есть два режима, фильтр (*F) и маска (*M). В режиме *F будет срабатывать только сообщение с первым байтом 0x10, но не сработает при 0x18 и других. А нам нужен только один бит, поэтому устанавливаем режим *M, в этом случае все остальные биты просто игнорируются, отслеживается только нужный нам.
Далее длинное нажатие кнопки 1, возвращаемся в первое меню и идём теперь в setting -> working mode.
Здесь нам нужно настроить взаимодействие ячеек, входа и выхода. У нас содержимое первой ячейки будет входом, выходом будет аналоговый выход, к которому сейчас подключен светодиод. Длинное нажатие кнопки 4 на первой строке и появится окошко выбора входа, выбираем #1, длинное нажатие кнопки 4 сохранит значение. Выходим из строки input (длинное нажатие кнопки 1). Тоже самое проделываем в сторке output, только выбираем #O (аналоговый выход). Итог будет таким.
Если что-то выбрано неправильно выбираем просто (. ), все данные в строке будут удалены.
На этом настройка закончена, длинным нажатием 1 возвращаемся в первое меню, выбираем пункт RUN и как всегда длинное нажатие 4 кнопки.
Теперь при открывании двери включается светодиод, при этом остальные биты в первом байте никак не влияют на работу.
Настройка сохранилась в энергонезависимой памяти и теперь всегда режим RUNNING включается при подаче питания. Чтобы выйти из режима RUNNING как обычно длинное нажатие кнопки 1 перекидывает в первое меню где можно что-то подредактировать если нужно. Если нужно запустить устройство без загрузки данных из энергонезависимой памяти, удерживаем кнопку 1 при подачи питания.
В следующих статьях попробуем усложнить алгоритм работы.