Страница 2 из 3

Прием данных по UART

Добавлено: 13.07.2017{, 09:46}
rw6cm
stapmoff писал(а):Всему виной была вот эта строчкаfor (n = 0; n <= 7; n++) // рассчитываем crc8
тут была 8
Быстрей всего так for (n = 0; n < 8; n++), это тоже самое

Прием данных по UART

Добавлено: 13.07.2017{, 12:42}
stapmoff
rw6cm писал(а):У вас есть пакет который должен проходить, (правильный)?
Да

Добавлено (13.07.2017, 12:42)
---------------------------------------------
Только что написали их компании кто придумал этот протокол. Подтвердили что не правильно считается контрольная сумма, но а как тогда при приеме запроса мой слэйф правильно читает сумму, вот загадка

Прием данных по UART

Добавлено: 13.07.2017{, 12:52}
stapmoff
Вот правильные пакеты

блин повторно скинул

Добавлено (13.07.2017, 12:52)
---------------------------------------------
Странно, сейчас принудительно вписал ему правильную контрольную сумму и все равно мастер не видит. Или так не прокатит))

Прием данных по UART

Добавлено: 14.07.2017{, 06:20}
rw6cm
stapmoff писал(а):Вот правильные пакеты
Все верно, это алгоритм
CRC-8/MAXIM
Нужен правильный сдвиг регистров, из его данных:
Check = 0xA1,    Poly = 0x31,  Init = 0x00,   RefIn = true,   RefOut = true,   XorOut = 0x00.
Честно сказать для меня пока это "вынос мозга" (на понимание трачу уйму времени)
Думаю нужна "подсказка зала" или "звонок другу" ))

Прием данных по UART

Добавлено: 14.07.2017{, 07:31}
stapmoff
rw6cm писал(а):Все верно, это алгоритмCRC-8/MAXIM
Да, так точно именно он.

Добавлено (14.07.2017, 07:31)
---------------------------------------------
Добился правильного расчета суммы, ошибка была в расстановке байт. Поменял местами и вуаля, но все равно мастер не видит слэйф))))    

Прием данных по UART

Добавлено: 14.07.2017{, 07:31}
stapmoff
Вот проэкт

Прием данных по UART

Добавлено: 14.07.2017{, 07:44}
stapmoff
Может теперь дело в интервалах передачи?

Прием данных по UART

Добавлено: 14.07.2017{, 08:14}
Dev1

Прием данных по UART

Добавлено: 14.07.2017{, 09:31}
rw6cm
Dev1 писал(а):Описание протокола обмена
какая хорошая инфа, почему бы ее в начале темы не выложить, кучу время экономили бы ))
Dev1 писал(а):Может теперь дело в интервалах передачи?
Похоже здесь с типом данных не увязка.  byte -> hex -> string
Понимает ли он,
может все это одним блоком с одним типом, чтоб не путаться.
В символьном режиме, по описанию, вообще по другому все.

Прием данных по UART

Добавлено: 14.07.2017{, 09:36}
pan
rw6cm писал(а):Похоже здесь с типом данных не увязка.
поддерживаю. я тож самое писал

Прием данных по UART

Добавлено: 14.07.2017{, 09:44}
Dev1
rw6cm писал(а):какая хорошая инфа, почему бы ее в начале темы не выложить, кучу время экономили бы ))
Это к автору, описать протокол нужно было с самого начала  
rw6cm писал(а):Цитата Dev1 ()Может теперь дело в интервалах передачи?
Не я писал 

Прием данных по UART

Добавлено: 14.07.2017{, 10:30}
stapmoff
В символьном режиме работать не будет, так как мастер шлет команду 06h, а это значит однократная выдача данных в hex. Я тоже подумываю о том, что посылка скорее всего должна быть разбита по байтно, а не строкой. Только вот как это сделать пока ума не приложу?

Добавлено (14.07.2017, 10:21)
---------------------------------------------
Может сделать у блока 9 выходов типа байт? Или лучше саму отправку в юарт сделать в самом блоке?

Добавлено (14.07.2017, 10:30)
---------------------------------------------
Ну короче узнал я у разработчиков протокола. Сказали отправка должна быть по байтно.

Прием данных по UART

Добавлено: 14.07.2017{, 10:32}
Dev1
Описание протокола обменаПротокол поддерживает два типа протокола обмена: в бинарном (HEX) виде и в символьном виде
(передачей ASCII-последовательностей). Для работы рекомендуется использовать бинарный
протокол обмена.
После подачи питания на датчик уровня топлива Omnicomm LLS и перед подачей первой команды
запроса необходимо выждать время не менее 100 мс.
При работе с датчиками Omnicomm LLS, находящимися в режиме slave, после отправки команды
запроса необходимо дождаться ответа от датчика. Время задержки ответа зависит от скорости
обмена и типа протокола обмена (не более 100 мс).
Данные, между датчиком и внешним устройством передаются в виде сообщений, передающихся
пакетами байт. Передача каждого байта начинается СТАРТ битом, а завершается СТОП
битом (Рисунок 1). Данные передаются младшим байтом вперёд.
Интервал между последующими байтами в пакете (Тт) должен быть меньше длительности
передачи 35 бит или меньше 1 мс (если 35/скорость<1 мс).
Тбайт – время передачи одного байта информации;
Тт – интервал между последовательными байтами в пакете.
Окончанием пакета байт считается, если последующий байт не приходит в течение времени (Тп),
превышающего максимальный интервал (Тт) + 1 мс.

Прием данных по UART

Добавлено: 14.07.2017{, 10:38}
stapmoff
Dev1, да это читал 1000 раз

Прием данных по UART

Добавлено: 14.07.2017{, 10:49}
rw6cm
Dev1 писал(а):Не я писал
Это укоз кривой, который раз замечаю, цитирую одного а ник лепит другого ))
stapmoff писал(а):Или лучше саму отправку в юарт сделать в самом блоке?
Думаю наилучший вариант.

Прием данных по UART

Добавлено: 14.07.2017{, 14:55}
stapmoff
rw6cm, поможете реализовать?

Добавлено (14.07.2017, 14:55)
---------------------------------------------
Заработало        УРА! Дело еще было в мах485, вернее перепутал пины на разрешение приема и передачи. Всем спасибо за подсказки, всего вам доброго!

Прием данных по UART

Добавлено: 14.07.2017{, 14:56}
rw6cm

Прием данных по UART

Добавлено: 14.07.2017{, 14:59}
pan

Прием данных по UART

Добавлено: 14.07.2017{, 20:18}
stapmoff
Как понимать ваш смайл?

Добавлено (14.07.2017, 20:18)
---------------------------------------------
pan, А?

Прием данных по UART

Добавлено: 14.07.2017{, 20:21}
pan
вы столько промучились а дело было в железе.