как отсеять мусор из UART в реал-тайме?

Прошу помощи знающих

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#21

Сообщение ElectroMechaniC » 11.05.2018{, 10:14}

Как быть в таком случае?

Отправлено спустя 57 секунд:
У меня под этим ID , температура двигателя в 1м байте лежит!

Отправлено спустя 58 секунд:
Но температура то бог с ним! она и раз в секунду отображается норм! Можно её усреднить ко всему прочему!

Отправлено спустя 2 минуты :
А вот обороты и скорость не усреднишь! Они слишком динамичны!
Щас скину видео с чем я борюсь)))
Кстати с оборотами получилось разобраться, а со скоростью никак!
До 30ти км/ч как шёлковая стрелка! а после прыгает как бешеная!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

как отсеять мусор из UART в реал-тайме?

#22

Сообщение Sancho » 11.05.2018{, 10:19}

Возьми после сравнения и отправь полученный ID на дисплей - увидишь для начала что там приходит.
Потом измени сравнение со строк на цифры.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#23

Сообщение ElectroMechaniC » 11.05.2018{, 10:23}

Sancho, Спасибо!

Отправлено спустя 3 минуты 17 секунд:
Вот видео того что происходит со стрелкой спидометра! Ещё раз напомню что тахо я победил, со скоростью по тому же принципу не выходит![BBvideo=560,315] [/BBvideo]

Отправлено спустя 32 минуты 30 секунд:
У кого какие мысли? :wizard:
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

как отсеять мусор из UART в реал-тайме?

#24

Сообщение pan » 11.05.2018{, 11:02}

ElectroMechaniC писал(а):
11.05.2018{, 10:13}
прав! Скорее всего дело в самом преобразовании в строки!
я такого не говорил. речь шла о целесообразности преобразования

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#25

Сообщение ElectroMechaniC » 11.05.2018{, 11:10}

pan, ок! Согласен! Беру слова назад!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

как отсеять мусор из UART в реал-тайме?

#26

Сообщение pan » 11.05.2018{, 11:11}

сейчас посетила мысль.
у вас в проекте используются переменные unsigned long. а реально они какого размера? если int , то возможно из за этого мусор

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#27

Сообщение ElectroMechaniC » 11.05.2018{, 11:16}

pan, не особо большие! Я брал unsigned long. исключительно для того что бы не было отрицательных значений? Сейчас попробую перебить в INT
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

как отсеять мусор из UART в реал-тайме?

#28

Сообщение pan » 11.05.2018{, 11:19}

ElectroMechaniC писал(а):
11.05.2018{, 11:16}
что бы не было отрицательных значений
это определяется типом переменной а не её размером.
http://arduino-diy.com/arduino-tip-dannykh

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#29

Сообщение ElectroMechaniC » 11.05.2018{, 11:29}

pan, Вот я лошара! Век живи век учись! Сейчас попробую с INT! Спасибо!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

TheDevil
Рядовой
Сообщения: 1
Зарегистрирован: 08.05.2018{, 12:58}
Репутация: 0
Откуда: Московская область
Имя: Андрей

как отсеять мусор из UART в реал-тайме?

#30

Сообщение TheDevil » 11.05.2018{, 15:49}

ElectroMechaniC писал(а):
11.05.2018{, 10:13}
Только как от этого уйти?
Может стоит попробовать воспользоваться формулой?
Если байты 0 и 1

C = buf[0];
C = (C*256+buf[1])/8;

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#31

Сообщение ElectroMechaniC » 11.05.2018{, 15:52}

TheDevil, это для чего? для получения определённых байтов? или для преобразования? Можете подробнее объяснить?
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

как отсеять мусор из UART в реал-тайме?

#32

Сообщение pan » 11.05.2018{, 16:11}

ElectroMechaniC писал(а):
11.05.2018{, 09:20}
первый и второй байты по отдельности в .hex, после чего соединить в одно число .hex, a уже полученое 16е число преобразовать в .dec
потыкал в калькуляторе... чет фигня какая то.
может знающие подскажут. но по моему это безсмысленная операция.
соединить можно и байты. от конвертации в hex а потом обратно ни чего не изменится

Отправлено спустя 20 минут 20 секунд:
ради эксперимента можете проверить. пока всё оставить как есть, только соединение двух байт по другому попробовать
Вложения
TEST-int.flp
(242.67 КБ) 64 скачивания

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#33

Сообщение ElectroMechaniC » 11.05.2018{, 17:06}

pan, спасибо! Попробую! Отпишусь! Кстати с int фокус не прокатил! Всё работет конечно, но блин эта еденичка и троечка, будь они не ладны! Единственное понимаю - что облегчил жизнь контроллеру!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

как отсеять мусор из UART в реал-тайме?

#34

Сообщение Sancho » 11.05.2018{, 17:07}

Hex - шестнадцатиричная система счисления, только и всего.
0х40 = 64
0xFF = 255
двухбайтный hex:
0x0040 = 64
0x00FF = 255
0xFFFF = 65535 для unsig
Контролеру вообще фиолетово, что сравнивать, он сравнивает побитно!
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#35

Сообщение ElectroMechaniC » 11.05.2018{, 17:09}

А по поводу калькулятора, я и сам сидел-переводил! Не выходит аленькай цвятечек! Реальные показания только воо по такому запутанному алгоритму выводить получается!

Отправлено спустя 2 минуты 58 секунд:
Я вот убей не пойму! Плата с оборотами работает распрекрасно! Хотя изначально тоже дёргалась! Пока условий не понавешал! Чем же отличается аналогичное действие со скоростью? Даже пробовал отдельно скорость компилировать без оборотов! Всё равно дёргается!

Отправлено спустя 10 минут 10 секунд:
Sancho, вот я и получаю двухбайтное число методом объединения строк, перевожу его в dec. И т.д.
Может байты не полные приходят? Заметил ещё ! Может совпадение:
Когда передача нормальная, без мусора, то и диод rx на уне моргает ровненько, быстренько, практически горит постоянно! Но только скачёк на 1 или на 3 , и диод тоже как будто немного паузу делает, тухнет! Может там delay какой нибудь проскакивает? Иди сдвиг значений? Приходит например пол байта))) я в этом не особо! Так что не умничаю! Что скажете?
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 590
Откуда: Ярославль.
Имя: Александр
Контактная информация:

как отсеять мусор из UART в реал-тайме?

#36

Сообщение Sancho » 11.05.2018{, 17:22}

ElectroMechaniC,
Просто для пробы, для начала.

Отправлено спустя 4 минуты 44 секунды:
352h = 852 dec
Вложения
Test_Speed_v1.flp
(225.96 КБ) 62 скачивания
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

как отсеять мусор из UART в реал-тайме?

#37

Сообщение pan » 11.05.2018{, 22:15}

ElectroMechaniC писал(а):
11.05.2018{, 17:22}
Когда передача нормальная, без мусора, то и диод rx на уне моргает ровненько, быстренько, практически горит постоянно! Но только скачёк на 1 или на 3 , и диод тоже как будто немного паузу делает, тухнет
так может дело всетаки не в цифрах, а в передаче данных. помеха или отваливается что то.

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#38

Сообщение ElectroMechaniC » 11.05.2018{, 22:26}

pan, помеха или отваливается что то.
Нет! Я уже сотню раз эту схему проверял! Сначала на проводах, затем платки вытравил, типа шины сделал, упростил везде всё! Пропаял! И у меня когда обрыв в любом месте то данные зависают на пару секунд, а потом прога говорит типа не конект!

Отправлено спустя 1 минуту :
Спецом пробовал кратковременно выключать и быстро включать! Не то всё! Сам голову сломал уже!
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Almer
Рядовой
Сообщения: 12
Зарегистрирован: 13.02.2018{, 07:21}
Репутация: 1
Имя: Александр

как отсеять мусор из UART в реал-тайме?

#39

Сообщение Almer » 11.05.2018{, 23:02}

А может время чтения посылки из кана не совпадает с её отправкой? Получается читать нечего? Короче таймауты не совпадают...

Аватара пользователя
ElectroMechaniC
Сержант
Сообщения: 230
Зарегистрирован: 21.09.2016{, 06:50}
Репутация: 1
Откуда: Донецк
Имя: Юрий

как отсеять мусор из UART в реал-тайме?

#40

Сообщение ElectroMechaniC » 12.05.2018{, 07:53}

Almer, это наиболее правдоподобный вариант! Вот как забабахать синхронизацию? Сам над этой мыслью колдую! Нужна чёткая привязка по времени и тригер типа байт пришёл-пишем, байт не полный, пропускаем, ждём полного! Там же куча интерфейсов и скоростей задействована! Может где то и не совпадают тайминги!
Есть идеи как это проверить?
:newrus: Все в руках человека. Поэтому всегда мойте руки перед и зад! :victory:
:smile225: :smile469: :smile427:

Ответить

Вернуться в «Спросить у знатоков»