Тема: Разные алгоритмы .
Есть две диаграммы, они одинаковые за исключением регистров байт D1:D0 и D2:D3 но алгоритм работы очень разный , почему ?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
CANNY forum → Программируемые контроллеры CANNY 7.x (7, 7.2 duo, alfa, gamma, MGX) → Разные алгоритмы .
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Есть две диаграммы, они одинаковые за исключением регистров байт D1:D0 и D2:D3 но алгоритм работы очень разный , почему ?
И вот второй.
Не вставился скрин...
Могу предположить, что на месте блока #2 в обеих диаграммах подразумевался скорее Логическое И, а не Логическое ИЛИ.
Добрый вечер , спасибо за оперативность, если поставить логическое И тогда диод на выходе не светится а мигает примерно с частотой получаемых сообщений.
P.S. Пока тренируюсь с помощью CAN анализатора.
Используйте D-триггер для сохранения значений между моментами приема сообщений. См.: http://wiki.canny.ru/index.php?title=CA … 1.80.D1.8B
Все равно не получилось... если нужные мне байты находятся в разных регистрах то все работает отлично но если в одном то получаются косяки.
Пожалуйста, сформулируйте задачу более конкретно - какие биты в каких регистрах, и что именно по каким условиям делать.
Допустим в сообщении в нулевом байте информация об открытой левой двери, в первом об открытой правой, то есть если открытая или правая или левая то все работает корректно но если обе двери открыты то нет. Но если допустим информация об одной двери лежит в первом байте например а об другой в любом другом кроме нулевого (то есть в другом регистре ) то все работает без проблем.
Хмм... хотя тоже с проблемами... без проблем когда соседний байт в нулях. Если бы был вариант записи например 0х04ХХ, чтобы программа сравнивала только один байт с регистра или регистр содержал только один байт или я что то пропустил в руководстве?
Выделить один байт из регистра вам поможет блок Побитовое И. Посмотрите примеры здесь: http://forum.canny.ru/viewtopic.php?id=205
Да , но в таком случае диод будет загораться и при других значениях байта, то есть в которых на том же месте будет 1.
Например 0х04 = 0b00000100 и 0х05 = 0b00000101 и там и там третий бит 1 и диод горит.
Пожалуйста, сформулируйте задачу более конкретно - какие биты (байты?) какие значения должны содержать, в каких регистрах. Что именно по каким условиям делать? Опишите простыми словами, например: "при наличии в сообщениях с ID 0x123 в байтe D0 значения 04 одновременно с наличием в байте D3 значения 1А - держать светодиод включенным."
Например : при получении сообщения с ID 123 01 ХХ ХХ ХХ ХХ ХХ ХХ ХХ светодиод горит,
ID 123 ХХ 04 ХХ ХХ ХХ ХХ ХХ ХХ тоже горит , ID 123 01 04 ХХ ХХ ХХ ХХ ХХ ХХ снова горит,
а в остальных случаях нет, ХХ это любое значение от 00 до FF.
Например : при получении сообщения с ID 123 01 ХХ ХХ ХХ ХХ ХХ ХХ ХХ светодиод горит,
ID 123 ХХ 04 ХХ ХХ ХХ ХХ ХХ ХХ тоже горит , ID 123 01 04 ХХ ХХ ХХ ХХ ХХ ХХ снова горит,
а в остальных случаях нет, ХХ это любое значение от 00 до FF.
Вариант решения.
Спасибо работает. Теперь понял в чем была моя ошибка.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
CANNY forum → Программируемые контроллеры CANNY 7.x (7, 7.2 duo, alfa, gamma, MGX) → Разные алгоритмы .