|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
Младший и старший байт и запись 16 битных чисел на ардуино28.12.2017, 11:40. Показов 29477. Ответов 41
Метки нет (Все метки)
Доброе утро коллеги!
Изучаю протокол один, и тут нужно : 1) Записать данные с помощью младшего и старшего байта. 2)Все данные в структуре должны быть в 16-ричной форме. Отсюда вытекает вопрос, подскажите на примере , как превратить число определенное , например в диапозоне от 0 до 1000 в младший и старший байт. Так же ни когда не работал с 16-ричной системой (программирование учил по учебникам, поэтому я нуб), подскажите как правильно на ардуинке писать в структуру такие данные, так как протокол это требует. Заранее спасибо!
0
|
|
| 28.12.2017, 11:40 | |
|
Ответы с готовыми решениями:
41
Функция: изменить старший байт числа на заданное значение, не изменяя младший байт Скетч для ардуино: разделить на младший и старший бит Как получить младший байт и его старший бит |
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||||||
| 28.12.2017, 11:46 | |||||||||||
Сообщение было отмечено MaximusL как решение
Решение
Если не изменяет память, для этого там предусмотрены cпециальные макросы:
Но можно и самому наколхозить:
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 11:53 [ТС] | |
|
Так, с эти разобрались.
Теперь еще вопрос: Как подсчитать контрольную сумму? Формула: Parameter code to be written ×256 + 67+ parameter to be written + ADDR Parameter code to be written = 00H Parameter to be written - (из описания) Parameter to be written: are specified using 16 binary system. ADDR = 1 Че то ничего не получается. Например с даннми которые хочу записать=999 Младший байт=3, Старший байт =231 Контрольную сумму считаю так:0*256+67+999+1 ?????
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 28.12.2017, 11:56 | |
|
Сылочку можно на функцию? Что-то не вкурю из ваших описаний, чего они там хотят.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 11:59 [ТС] | |
|
Пожалуйста : https://yadi.sk/i/ifrEqsR-3QzYD4
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 28.12.2017, 12:07 | |
|
Ну, вроде так, только там приписочка, что чек-сумма при записи сначала пишется младший байт, потом старший.
Попробуйте вот ту сумму, что у вас получилась, сначала записать LOW(summ), потом HIGH(summ) И вообще, перемененую summ объявить как short, т.е. 16-битной
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 28.12.2017, 12:13 [ТС] | ||||||
|
Прошу прощения, я можно поконкретнее ?))
Правильно я понял : 0*256+67+low byte+high_byte+1 ??? Добавлено через 59 секунд А структура у меня вот такая получилась:
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||||||
| 28.12.2017, 12:16 | |||||||||||
Сообщение было отмечено MaximusL как решение
Решение
summ = 0*256+67+999+1 = 1067;
LOW(summ) = 43; HIGH(summ) = 4; Добавлено через 1 минуту Есть специальные typedef-ы, из которых сразу видно размер:
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 12:19 [ТС] | |
|
Спасибо большое !!
И последний глупый вопрос, и буду кавырятся сам : как запихнуть в check_code (2 байта) корректно младший и старший?
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||
| 28.12.2017, 12:20 | |||||||
Сообщение было отмечено MaximusL как решение
Решение
Да, самое главное забыли! )))
Выравнивание надо убрать)
1
|
|||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 12:25 [ТС] | |
|
Это как и что это? )))))
Спасибо Вам большое за помощь, но попрошу по развернутее пожайлуста))))) Добавлено через 2 минуты Спасибо!!!!!
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 28.12.2017, 12:26 | |
|
Про выравнивание структур погуглите сами - материала полно.
Советую также написать функцию, которая, заполняла бы правильно структуру, а вы бы в нее только передавали параметры для записи. Структуры для чтения также стоит сделать упакованными. Иначе ваш протокол не будет работать
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
||||||
| 28.12.2017, 13:39 [ТС] | ||||||
|
Пока не хочет работать ... вот код:
0
|
||||||
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|||||||||||
| 28.12.2017, 17:05 | |||||||||||
Осциллограф-то есть ткнуться? по поводу
1
|
|||||||||||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 17:05 [ТС] | |
|
Осциллографа нет((.
Да, данные вообще не приходят, молчит коробка.
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
|
| 28.12.2017, 17:12 | |
|
Отправьте с одного порта ардуины на другой и посмотрите, что пришло
Или на комп отправьте Отредактировал там еще раз код Добавлено через 5 минут Хотя, если serial принудительно флашить, то задержку не надо делать - только мешать будет.
0
|
|
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 17:16 [ТС] | |
|
Если отправлять просто на Com порт обычным Serial то приходит так как и задумано. Ладно, я поставлю еще один преобразователь Rs485, замкну передачу на него и посмотрю. Если контроллер молчит, то я правильно понимаю что он ответит только когда прилетит к нему вменяемый пакет?
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
||
| 28.12.2017, 17:43 | ||
|
Все от реализации зависит. Либо молчать будет, либо ругнется, что была ошибка. Надо доку курить
Добавлено через 2 минуты Попробуйте на другой скорости. там еще 4800 есть и 19200. Мож скорость ему не нравится Добавлено через 3 минуты Посмотрите главу 5. Попробуйте настроить uart на 2 стоп бита и отправить последовательность
Добавлено через 1 минуту Какая там вообще дефолтная скорость по доке?
1
|
||
|
2 / 2 / 0
Регистрация: 12.05.2015
Сообщений: 155
|
|
| 28.12.2017, 17:43 [ТС] | |
|
по скорости в настройках самого контроллера стоит 9600. Ладно буду ковырятся на праздниках, забрать домой его придется на праздники....отпишусь
0
|
|
|
73 / 86 / 40
Регистрация: 02.11.2017
Сообщений: 379
|
||
| 28.12.2017, 17:46 | ||
|
А адрес у него где выставляется? перемычками какими? Может, адрес не правильно выставлен?
0
|
||
| 28.12.2017, 17:46 | |
|
Помогаю со студенческими работами здесь
20
Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. Асемблер AVR Stydio. Найти сумму чисел 9701 и 32. Младший байт результата умножить на 4. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|