www.open-tager.ru
http://www.open-tager.ru/forum/

Умный датчик. Smart sensor.
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=4949
Страница 5 из 17

Автор:  Pingvin [ 28 дек 2016, 09:58 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

К вопросу о надежности UART TTL - терзают меня смутные сомнения... :?
Как бы при длине шлейфа метр-другой не повалились ошибки приема. :|
Может драйвер RS485 поставим?
Тогда 500м я вам гарантирую! ;) :)

Автор:  Alexies [ 28 дек 2016, 09:58 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Pacifist писал(а):
Абсолютно не затасканная, к примеру - Synchronous Serial Port

Никогда о таком сокращении не слышал в литературе. Википедия тоже, в общем-то. Только Server-to-Server Protocol и Serial SCSI Protocol, но это не очень популярные понятия, и из другой области. https://en.wikipedia.org/wiki/SSP

Автор:  Alexies [ 28 дек 2016, 10:01 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Pingvin писал(а):
К вопросу о надежности UART TTL - терзают меня смутные сомнения... :?
Как бы при длине шлейфа метр-другой не повалились ошибки приема. :|

А отчего они должны появиться? Шина-то асинхронная. На невысокой скорости, например, 115200 b/s, можно очень длинный кабель класть. А на большей - придется поднимать частоту МК, и не будет хватать стабильности внутреннего тактирующего RC-генератора.

Автор:  Pingvin [ 28 дек 2016, 10:04 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Alexies писал(а):
Pingvin писал(а):
К вопросу о надежности UART TTL - терзают меня смутные сомнения... :?
Как бы при длине шлейфа метр-другой не повалились ошибки приема. :|

А отчего они должны появиться? Шина-то асинхронная. На невысокой скорости, например, 115200 b/s, можно очень длинный кабель класть. А на большей - придется поднимать частоту МК, и не будет хватать стабильности внутреннего тактирующего RC-генератора.

У меня с SPI проблемы начинаются при длине шины между датчиками более полуметра.

Это же не rs232, а TTL уровень.
Проверять надо...

И от статики никакой защиты.

Предлагаю таки частоту тактирования поднять до 24 МГц

Автор:  Pingvin [ 28 дек 2016, 10:11 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Цитата:
У меня на 250 кБод на двух проводах от витой пары при длине провода каких то 30 см работало с ошибками, пока MAX485 не поставил. Правда там у меня было 5-вольтовый к 3 - вольтовому, но суть дела не меняет. Так что без драйверов - никуда.


http://www.microchip.su/showthread.php?t=7474

Автор:  Alexies [ 28 дек 2016, 10:35 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Pingvin писал(а):
Цитата:
У меня на 250 кБод на двух проводах от витой пары при длине провода каких то 30 см работало с ошибками, пока MAX485 не поставил. Правда там у меня было 5-вольтовый к 3 - вольтовому, но суть дела не меняет. Так что без драйверов - никуда.

http://www.microchip.su/showthread.php?t=7474

Надо попробовать. Не думаю, что будут проблемы. На худой конец, можно понизить скорость. Даже 9600 хватит на всё. Меня больше смущает другое обстоятельство: каждый чип будет подтягивать шину к +3.3. Если их будет с десяток, это может стать проблемой. Может ли STM32 не подтягивать вовсе в режиме UART - не понятно.

Автор:  Pingvin [ 28 дек 2016, 10:44 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Ну давайте драйвер воткнём rs485. ;)
Шлейф из 255 датчиков длиной до 1500м будет работать "на ура"! ;) :)

Вложения:
max485.png
max485.png [ 43.28 KiB | Просмотров: 9580 ]

Автор:  Alexies [ 28 дек 2016, 11:16 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Pingvin писал(а):
Ну давайте драйвер воткнём rs485. ;)
Шлейф из 255 датчиков длиной до 1500м будет работать "на ура"! ;) :)

Ага, только это дифференциальная пара, 2 провода. Проще сразу брать I2C.

Вот только что для проверки воткнул между платой и USB-UART адаптером по полудуплексной линии провод метров в 5, ничего не поменялось, все работает. Скорость 115200.

Автор:  Pingvin [ 29 дек 2016, 09:05 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Рано радовался - так до конца этот навороченный Таймер 1 не победил.
Начал разные цвета прогонять - хрень какая то получилась.

Пересадил я RGB диодик на базовый таймер 3.
Вроде все пучком.
https://youtu.be/W_ekcYagpiw
Прием пакета придется перенести на другой таймер.

Автор:  Alexies [ 31 дек 2016, 14:05 ]
Заголовок сообщения:  Re: Умный датчик. Smart sensor.

Потихоньку запиливаю пионер-friendly библиотеку для взаимодействия со смарт-сенсором. Пока не готово, но дело идет.

Вынес её в отдельный репозиторий: https://github.com/DAlexis/lasertag-ssp . Это нужно для того, чтобы облегчить использование библиотеки в разных проектах (лично я буду использовать как минимум в двух: Smart sensor и Caustic system).
Git поддерживает подмодули (submodules) - это кода один репозиторий включается в другой в виде директории. Таким образом, не нужно содержать одинаковые файлы в разных репозиториях и потом, при изменении, лихорадочно всё синхронизировать руками. В общем, кто не знаком с этим - вот инфа: https://git-scm.com/book/ru/v1/%D0%98%D ... 0%BB%D0%B8 . Подмодули - это фишка git, а не github, так что если ваш закрытый-засекреченный репозиторий лежит, например, на bitbucket.org, всё равно можно использовать подмодули с github.

Я проектирую библиотеку так, что она не тянула с собой никаких зависимостей: ни HAL, ни SPL ей не нужен. Она не завязана на какую-то конкретную реализацию ИК-приемника или систему управления светодиодами, то есть подойдет для любого проекта. Она даже не знает, через какую шину всё работает. В случае чего можно будет переключиться на другой вид связи. Привязка к "внешнему миру" происходит через драйвер: https://github.com/DAlexis/lasertag-ssp ... p-driver.h .
Часть смарт-сенсора почти готова, часть "мастер-устройства" (повязки) в процессе.
Пионер-friendly потому, что количество функций, выведенных наружу, минимально и их назначение довольно очевидно.

Для отладки с компьютера решил писать эмулятор на C++. Он не готов, работа в процессе. Для работы с последовательным портом и для других асинхронных операций я использовал Boost Asio - всем, кто пишет на C++, рекомендую освоить, это мощнейший инструмент для работы с любыми видами связи. Код будущего эмулятора тут: https://github.com/DAlexis/lasertag-sma ... /master-pc


Интерфейс протокола сводится к следующим командам от повязки к сенсору:
- Запросить данные, принятные ИК-приемником. На эту команду сенсор отвечает.
- Передать ИК-пакет
- Добавить задание для "анимации". Подразумевается следующее: у повязки есть RGB-диод и вибромотор. Одно "задание" означает: через столько-то миллисекунд после предыдущего задания значения R, G, B каналов и состояние вибромотора должны стать такими-то. Между двумя состояниями значения R, G, B автоматически линейно меняются. Задания образуют очередь. Таким образом можно реализовать практически любую цветовую анимацию, и у смарт-сенсора нет никаких "пресетов" изначально. То есть, по идее, его не понадобится перепрошивать никогда.


Pingvin писал(а):
onegray писал(а):
Наверное вы MOE для 1-го таймера забыли включить.

Нашел в ref man
Код:
TIMy->BDTR |= TIM_BDTR_MOE;


Pingvin писал(а):
Рано радовался - так до конца этот навороченный Таймер 1 не победил.
Начал разные цвета прогонять - хрень какая то получилась.

Вот именно поэтому я стараюсь пользоваться HAL, а не устаревшим SPL. Такие вещи, как инициализация каналов таймеров для разных нужд ещё ни разу не подводили, причем для чипов разных серий. Эта магическая операция с битом TIM_BDTR_MOE где-то в недрах HAL успешно делается, я смотрел.

ЗЫ: Вот в самый неподходящий момент подводит железо. Помер китайский USB-UART преобразователь на FT232RL, поэтому приходится писать код вслепую. Сегодня будет новый.

ЗЗЫ: Всех с наступающим новым годом! :) :)

Страница 5 из 17 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/