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

LTAscetik
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1565
Страница 268 из 532

Автор:  Pingvin [ 11 май 2013, 07:55 ]
Заголовок сообщения:  Re: LTAscetik

Извиняюсь, перебью интересную дискуссию...

Подумал, а если передавать данные "бинарной строкой"?
То есть
Код:
01110010101110\r\n


Повязка будет предельно "тупой" - получила по ИК нолик - отправила по BT нолик. Получила "1" - передала "1".
Как только зафиксировано окончание приема пакета по таймауту - передаем возврат коретки - \r.
Без всякого анализа содержимого пакета.

И ещё - разделение по разным контроллерам приема ИК пакета и формирование "выстрела" позволит по иному реализовать прием ИК пакета в повязке, ибо больше нет нужды генерировать прерывания с удвоенной частотой несущей TSOP (f0).
Поэтому пусть таймер считает микросекунды и генериться будут только прерывания по переполнению счетчика таймера.
А в прерывания INT0 можно по спаду обнулять счетчик таймера, а по фронту проверять, сколько микросекунд длился импульс (проверив при этом, не было ли переполнения счетчика).
Передачу по UART можно сделать так, как было первоначально реализовано, но плохо работало из-за частых прерываний таймера, генерирующих "выстрел".
То есть передача символов из буффера по UART будет происходить полностью через прерывания UART-а.

Зы А ещё у нас сегодня снег выпал! :lol:

Автор:  LTagKirov [ 11 май 2013, 09:48 ]
Заголовок сообщения:  Re: LTAscetik

Pingvin писал(а):
Повязка будет предельно "тупой" - получила по ИК нолик - отправила по BT нолик. Получила "1" - передала "1".Без всякого анализа содержимого пакета.


Так и надо, ещё позаботится чтобы работало в обе стороны. Оцифровывать надо с дискретизацией около 100мкс или ещё быстрее.


DanGion писал(а):
А при учете, что Полигон передает свой протокол "в открытую" то и факта "кражи интелектуальной собственности" не установить.


Разрешение официальное нужно для хороших отношений к пользователям самоделок на официальных мероприятиях, а для избежания ответственности - трудности вообще нет.

Автор:  Pacifist [ 11 май 2013, 10:15 ]
Заголовок сообщения:  Re: LTAscetik

Pingvin писал(а):
Извиняюсь, перебью интересную дискуссию...

Подумал, а если передавать данные "бинарной строкой"?
То есть
Код:
01110010101110\r\n

.....

Хороший вариант. А еще можно передавать дополнительные символы : H - получен маркер начала пакета , E - ошибка при приеме , T - таймаут приема бита.
Тогда правильно принятый пакет будет выглядеть так
Код:
H01110010101110T

А на приемной стороне контроллер ждет символа "Н", и пока он не пришел все остальное игнорирует. А когда получен Н - сдвигает биты в буфере (заодно и считает их количество). Если во время приема пришел символ "Е" - то снова переходит в режим ожидания, если пришел "Т" - то передать в обработку.

Автор:  Pingvin [ 11 май 2013, 16:33 ]
Заголовок сообщения:  Re: LTAscetik

Pacifist писал(а):
Pingvin писал(а):
Извиняюсь, перебью интересную дискуссию...

Подумал, а если передавать данные "бинарной строкой"?
То есть
Код:
01110010101110\r\n

.....

Хороший вариант. А еще можно передавать дополнительные символы : H - получен маркер начала пакета , E - ошибка при приеме , T - таймаут приема бита.
Тогда правильно принятый пакет будет выглядеть так
Код:
H01110010101110T

А на приемной стороне контроллер ждет символа "Н", и пока он не пришел все остальное игнорирует. А когда получен Н - сдвигает биты в буфере (заодно и считает их количество). Если во время приема пришел символ "Е" - то снова переходит в режим ожидания, если пришел "Т" - то передать в обработку.


Ну как будто мозг мне просканировали! :lol:
Только при получении символа ошибки "Е" воспроизведем звук "пуля рядом просвистела".

Тут что интересного получается - можно не дожидаться, пока будет принят весь ИК пакет целиком, а начинать передачу по БТ как только старт-бит принят.

Посчитал маленько, интересно получается.
Скорость UART 9600 кБит/c
На оправку одного байта требуется (вместе со служебными символами) 10 бит.
То есть время оправки одного символа (1/9600)*10=1,04 миллисекунды.
Прием по ИК одного бита длится не менее 1200 микросекунд (вместе с паузой), то есть чуть больше 1 миллисекунды - 1,2 если точно.
То есть пока идет прием второго бита из ИК пакета можно (теоретически) успеть передать по БТ значение первого, и так далее.

Ну и мусор (пока не принят старт-бит) можно и на повязке отсеивать.

Автор:  Pingvin [ 11 май 2013, 20:29 ]
Заголовок сообщения:  Re: LTAscetik

Ещё WiFi модуль

MRF24WB0MA

Изображение
Изображение

Автор:  Pingvin [ 12 май 2013, 08:59 ]
Заголовок сообщения:  Re: LTAscetik

А как быть с прерываниями UART?
Ведь они не должны мешать передаче ИК пакета.
Запрещать их на время выстрела?
А не потеряем символы?
Кто в курсе, как работает аппаратный UART на Atmega - есть какой-никакой приемный буфер?
Или не успел забрать символ до прихода следующего - все, потерял?

Или разрешить прерывания таймера в прерывании UART? :?

Так что в варианте "не универсальной" повязки (данные с повязки получает контроллер тага) желательно минимизировать трафик (как минимум во время игры).
В "универсальной" (когда по дополнительному контроллеру и с той и с другой стороны) - нет вопросов.

Я чего подумал - в протоколе в выстреле передается 14 бит данных.
В двух байтах -16 бит.
А давайте ка используем первый бит байта для его нумерации.
То есть у первого байта первый бит = 0, у второго = 1.
И мы их не спутаем! :)
А повязке нужно будет только упаковать принятый "выстрел" должным образом в два байта и передать.
Таг словит эти байты, найдет первый и вытащит 14 бит данных.

Ещё раз уточню, что речь о "не универсальной" повязке.

Автор:  Hold [ 12 май 2013, 10:08 ]
Заголовок сообщения:  Re: LTAscetik

кто вам мешает поставить STM32 и вовсю пользовать DMA? никаких проблем с отправкой данных - кинул контролеру DMA адрес переменной/буфер, и забыл об этом. DMA сам все передаст.

Автор:  Pingvin [ 12 май 2013, 10:15 ]
Заголовок сообщения:  Re: LTAscetik

Hold писал(а):
кто вам мешает поставить STM32 и вовсю пользовать DMA? никаких проблем с отправкой данных - кинул контролеру DMA адрес переменной/буфер, и забыл об этом. DMA сам все передаст.

Дойдем и до STM32 - всему свое время.
Переход на новый, принципиально другой камень - это может и год занять до рабочего прототипа.
А тут железо готово, только в прошивку функционал добавить.
Так что задача сейчас другая стоит - наиболее эффективно использовать то, что уже есть.

Автор:  Hold [ 12 май 2013, 10:20 ]
Заголовок сообщения:  Re: LTAscetik

есть долго работали с AVR - перейти на stm32 займет не более недели-двух. Даташиты внятные, камень мощный. Сам на него пересел по работе, только из-за кучи интерфейсов и навороченного DMA. Ну да ладно.

Автор:  Pingvin [ 12 май 2013, 10:22 ]
Заголовок сообщения:  Re: LTAscetik

Hold писал(а):
есть долго работали с AVR - перейти на stm32 займет не более недели-двух. Даташиты внятные, камень мощный. Сам на него пересел по работе, только из-за кучи интерфейсов и навороченного DMA. Ну да ладно.

Да кто спорит то?
Хотя про две недели это вы хватанули! :lol:
А печатку развести и изготовить (заказать в производство)?
Делать только будут 14 дней.
А код портировать?
А со средой разработки и программаторами разобраться?
Заказать ещё надо этот программатор...
Не менее полугода до первого теста! :(

А с тем, что уже практически готово, что сделать - в долгий ящик задвинуть?
Когда результат можно уже через неделю-другую иметь? :?
Да и печатки заводские есть в немалом количестве...

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