1

Тема: LIN

Добрый день! Прошу помощи. Задача простая, необходимо получить из LIN шины 2 команды от нажатия 2х кнопок.
С LINом ни разу не работал, поэтому масса вопросов.
   Монитором CAN/LIN видно по какому ID происходят изменения. Почитав подобные темы и составил свою схему. Но ни чего не вышло. В ID0034 при нажатии первой кнопки в D1 устанавливается 43, при нажатии второй 13.
   Объясните пожалуйста, где ошибся.

Вложений в сообщении

Иконка вложения LIN.cfd 1.12 кб, скачивался 49 раз, последний раз 2019-09-17 

2 (17-09-2019 14:51:19 отредактировано ЭллипсАвто)

Re: LIN

grantik.s пишет:

Добрый день! Прошу помощи. Задача простая, необходимо получить из LIN шины 2 команды от нажатия 2х кнопок.
С LINом ни разу не работал, поэтому масса вопросов.
   Монитором CAN/LIN видно по какому ID происходят изменения. Почитав подобные темы и составил свою схему. Но ни чего не вышло. В ID0034 при нажатии первой кнопки в D1 устанавливается 43, при нажатии второй 13.
   Объясните пожалуйста, где ошибся.

Замените блоки №4 и№ 5 "побитовое И" на блоки "равенство". Для вкл/выкл светодиодов нужно или 1 (вкл) или 0 (выкл). На выходе из "побитовое и" вы этого не получаете, соответственно светодиоды не зажигаються

3

Re: LIN

ЭллипсАвто пишет:

...соответственно светодиоды не зажигаються

Светодиоды включались бы и при записи в их регистры значений больше 0, т.е. при совпадении любого из битов полученных данных с каким-либо битом константой, с которой происходит сравнение (например, если D1 будет равен 3), но нужно не забывать о приоритете зеленого светодиода - он будет включаться даже тогда, когда условия включения светодиодов будут выполняться одновременно.
Если использовать сравнение константы с регистром полученных данных целиком, то нужно учесть, что контролируется значение байта D1, а значение D0 может быть при этом не равно 0. Лучше выделить нужный байт и проводить сравнение уже с ним (LIN1.cfd).
Также может оказаться, что состояние одной кнопки отражается значением бита 4 байта D1, а состояние другой - битом 6 байта D1 (биты 0 и 1 всегда равны 1) (LIN1a.cfd).
Также убедитесь, что выбран правильный стандарт LIN (1.3 или 2.0) и что на линии присутствует подтяжка к плюсу.

Вложений в сообщении

Иконка вложения LIN1.cfd 1.24 кб, скачивался 36 раз, последний раз 2019-09-17 

Иконка вложения LIN1a.cfd 1.24 кб, скачивался 33 раз, последний раз 2019-09-17 

4

Re: LIN

Денис, CANNY пишет:
ЭллипсАвто пишет:

...соответственно светодиоды не зажигаються

Светодиоды включались бы и при записи в их регистры значений больше 0,

Да. Совсем забыл что на семерке так. Отвык немного.
Как всегда вариантов решения может быть множество.
Я чаще всего использую маску, что бы потом не запутаться со сдвигами)))

Вложений в сообщении

Иконка вложения lin2.png 46.58 кб, скачивался 13 раз, последний раз 2019-09-17 

5

Re: LIN

ЭллипсАвто, спасибо что откликнулись.
Денис, Вам как всегда респект за подробное объяснение. На самом деле так и получалось, всегда горел зеленый светодиод, потому что в D1 всегда висит значение 03 и при нажатии  кнопок 0 меняется на 1 или 4.