|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
Младший и старший байт и запись 16 битных чисел на ардуино28.12.2017, 11:40. Показов 30228. Ответов 41
Метки нет (Все метки)
Доброе утро коллеги!
Изучаю протокол один, и тут нужно : 1) Записать данные с помощью младшего и старшего байта. 2)Все данные в структуре должны быть в 16-ричной форме. Отсюда вытекает вопрос, подскажите на примере , как превратить число определенное , например в диапозоне от 0 до 1000 в младший и старший байт. Так же ни когда не работал с 16-ричной системой (программирование учил по учебникам, поэтому я нуб), подскажите как правильно на ардуинке писать в структуру такие данные, так как протокол это требует. Заранее спасибо!
0
|
|
| 28.12.2017, 11:40 | |
|
Ответы с готовыми решениями:
41
Функция: изменить старший байт числа на заданное значение, не изменяя младший байт Скетч для ардуино: разделить на младший и старший бит Как получить младший байт и его старший бит |
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 17:50 [ТС] | |
|
Вы думаете все таки купить свисток USB -RS485 ? А на ардуинке как настроить параметры uart? на винде там WinAPi структуру заполнить надо определенную если мне память не изменяет, а на Qt библиотека есть, а вот на ардуинке хз)))
Адрес можно поменять, стоит по умолчанию 1.
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||
| 28.12.2017, 17:59 | |||
|
Если соответствующих конструкторов нет, то придется курить даташит на контроллер. Благо, там примитивная AVR-ка стоит. Свисток купите - пригодится еще не раз
0
|
|||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|||||||
| 29.12.2017, 11:30 [ТС] | |||||||
Ничего не изменилось) Добавлено через 4 минуты А как понять, может он вообще мертвый? В доках что то не найду ничего, что он отправляет постоянно..... Добавлено через 45 секунд А последовательность отправлять как строку? Тупо скопировать и отправить?
0
|
|||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
||||
| 29.12.2017, 14:36 | ||||
|
ПОпробуйте последовательность из главы 5 - она наверняка правильная. Это защитит нас от того, что мы в коде где-то накосячили Мож есть форумы по этой приблуде. Кто-то юзал уже, наверняка. Добавлено через 1 минуту Банальный вопрос.. А питание этого своего блока вы включили? ))))))))))))))))))) Добавлено через 3 минуты RX-TX блока не перепутали? RX ардуины на TX блока и наоборот (кстати, TX блока можно на комп завести) Добавлено через 32 секунды Попробуйте RX-TX местами поменять - может там обозначение какое дибильное Добавлено через 16 секунд Но лучше схему посмотреть
0
|
||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||||||||||||
| 12.01.2018, 11:42 [ТС] | ||||||||||||||||
|
Китайские друзья отправили мне исходники своей программы которая работает с данным контроллером. Написана она на Qt,
вот код структуры и работы с ней:
Добавлено через 2 минуты Кстати если кто знает, как в Code Blocks отображать китайские комментарии?)) Добавлено через 29 минут Кому интересно, вот весь файл под Qt : https://yadi.sk/d/Jxgfrwl43RPT6h
0
|
||||||||||||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 12.01.2018, 12:44 | |
|
Первое, что бросается в глаза, это то, что команды чтения и записи у них имеют другие коды.
По поводу коментариев - смотрите настройки кодировки Добавлено через 38 секунд Или предварительно исходники прогоните через какой-то промежуточный редактор и поменяйте кодировку в нем.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|||||||||||
| 18.01.2018, 12:14 [ТС] | |||||||||||
|
Адаптировал китайский код пож ардуинку, все равно контроллер неотвечает(
Разобрал его, посмотрел, все подключино правильно. Посмотрите пожалуйста что не так( Пока пытаюсь добиться от него что он что нибудь читал.
Сомнения вызывает вот эта функция:
0
|
|||||||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
||||||
| 18.01.2018, 13:11 | ||||||
|
А китайцы вам готовую скомпилированную прогу могут дать?
Или может их код скомпилировать получится? Добавлено через 8 минут Функцию лучше переписать так:
Весь код не проверял Добавлено через 3 минуты Вам бы тему в микроконтроллеры перенести. Там больше вероятность, что подскажут..
0
|
||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 18.01.2018, 15:50 [ТС] | |
|
Я все ни как не куплю свисток на Rs485(, поэтому проверить ее нет возможности. Так то она собирается.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 22.01.2018, 10:18 [ТС] | ||||||
|
Короче пошли пакеты от контроллера, но почему то они не стабильно приходят. Я грешу на таймер. Подскажите реализацию корректную на таймер , а то MsTimer2 че то не хорошо работает.
Тут например:
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
||||||
| 22.01.2018, 12:48 | ||||||
|
MsTimer2 - хардварный. Он не может нехорошо работать.
Объявите totalSec как volatile. Должно помочь. Компиль просто не знает, что переменная обрабатывается в прерывании и упростил код. Этим объявлением мы ему говорим, что переменная может поменяться неизвестным для него способом и нехрен ее упрощать.
0
|
||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 22.01.2018, 13:34 [ТС] | ||||||
|
Теперь пишет что не объявлена totalSek = 0; в других функциях.....
Добавлено через 3 минуты Ааа.. все..туплю Добавлено через 4 минуты Не хочет все равно( Добавлено через 1 минуту MsTimer2::set не вызывает функцию просто( Добавлено через 19 минут MsTimer2 не работает с Mega2650. Для Atmega2560 или Teensy надо использовать FlexiTimer2. Поменял, заработало)) Отлично! А теперь прошу Вас еще о небольшой помощи) Можете перевести проверку контрольной суммы? В описании: PV+ SV+MV&alarm status + parameter read/write+check code В программе :
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 22.01.2018, 13:58 | |
|
ну, довольно странно, что сумма 16-битная, а считают они как 8-битную. И в одном месте у них остаток, а в другом деление. Вообще бред какой-то. Но если у них это работает... То возможно в описании что-то не то. Надо тестировать оба варианта. Ваш и их. Какой заведется.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 22.01.2018, 14:22 [ТС] | ||||||
|
Ну их точне не работает, так как на этом месте как раз ни один пакет проверку не проходит....
Добавлено через 1 минуту Пардон, вот формула проверки : Is the remainder acquired after calculating the formula: PV+SV+( Alarm status×256+MV)+ parameter read/written + ADDR Добавлено через 14 минут Да, я и не заметил, Вы хотите сказать что должно быть так:
PV+SV+( Alarm status×256+MV)+ parameter read/written + ADDR Получается так: Get2Byte(stAnsFrm.u8HiPV,stAnsFrm.u8LoPV )+Get2Byte(stAnsFrm.u8HiSV,stAnsFrm.u8Lo SV)+(stAnsFrm.u8ALm*256+stAnsFrm.u8MV)+8 2+1
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 22.01.2018, 16:21 | |
|
Да, похоже на то. Коды команд все-таки те, что в руководстве или китайские?
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 22.01.2018, 16:44 [ТС] | |
|
В руководстве, в китайской программе они их почему то на 2 умножили.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|||||||||||
| 27.01.2018, 14:05 [ТС] | |||||||||||
|
огромное спасибо за помощь! Все получилось!
Ардуинка принимает и отправляет данные на этот чернов контроллер. Ноооо.... Возникла проблема, которая очень неприятная. Раньше у меня другая ардуинка общалась с нано и включала-выключала клапан охлаждения, а нано отправляла температуру охлаждения на мегу. Общалась так же по 485 , находится далеко от компьютера. И все было хорошо, до того момента, как я не обьеденил два скейтча в один(общение с нано и с китайским контроллером). Причем проблемы начались у нано. Т,е, толи Мега после слияния не отправляет данные(но читает, температура с нано приходит), толи нано не читает что ей отправляеют. Понимаю что код уже стал объемный, выложу как было до и как стало после. Может что увидите, потому что без охлаждения, смысл теряет вся эта конструкция....(((( Скейт на нано, ничего не менялось:
0
|
|||||||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 27.01.2018, 14:07 [ТС] | ||||||
|
Скейтч после:
Я на финишной прямой....решив эту проблему напишу отчет подробный))) но надо ее решить, смысл был в автоматизации охлаждения, а он сейчас не фурычит(((((
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||||||||||||||
| 29.01.2018, 11:45 | |||||||||||||||||||
|
К тому же, возвращать -1 или какое-то любое значение, отличное от нуля при ошибке в этой функции нет смысла. она возвращает тип bool.
+ не увидел, где вы это используете в конечном варианте
0
|
|||||||||||||||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|||||||||||||||||||||
| 31.01.2018, 16:58 [ТС] | |||||||||||||||||||||
|
По поводу
Спасибо Вам большое за помощь! Все работает вроде! Очень круто, потому что на работе экономит часа 2-3 времени в день) На Qt программу тоже сделал, тоже все ок. Только я не предвидел что нужно будет отсылась не в byte температуру, а в dyble, чтобы дробное число отображало ( я хочу чтобы на компе рисовался график реакции в реальном времени). Для этого мне лучше как переделать структуру так:
0
|
|||||||||||||||||||||
| 31.01.2018, 16:58 | |
|
Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. Асемблер AVR Stydio. Найти сумму чисел 9701 и 32. Младший байт результата умножить на 4. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации:
1. Вернуть возможность использования знаков | 1 l I;. . .
|
|
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С.
Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
|
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию?
Фраза «Любая достаточно развитая технология неотличима от магии». . .
|
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль?
Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
|
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология.
«Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
|