www.open-tager.ru

открытый лазертаг форум
Текущее время: 22 ноя 2024, 20:56

Часовой пояс: UTC + 3 часа [ Летнее время ]


Реклама

Правила форума


В разделе запрещены - обсуждение оборудования не поддерживающего открытых протоколов, реклама и ссылки на готовые продукты лазертага, обсуждение политики производителей и самих производителей. Виден всем.



Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
СообщениеДобавлено: 11 фев 2013, 13:36 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
не хочу засорять тему ненужными спорами и доказательствами. Кто в курсе дела, поймет о чем я хотел сказать )


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 фев 2013, 15:00 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 27 ноя 2011, 00:22
Сообщений: 1569
Откуда: Україна
Может пригодится для оформления алгоритмов такая програмка под АВР:
Изображение

http://algrom.net/

_________________
Нет предела совершенству, но ресурсы заканчиваются быстро.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 мар 2014, 20:59 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 01 мар 2014, 15:38
Сообщений: 69
2 LTagKirov
LTagKirov писал(а):
вот вариант использованый мной, работает простым опросом с частотой от 2кгц(реже неработает), до 10..15КГц (быстрее нет смысла) Частота опроса фиксированная, по ней измеряются длительности импульсов пауз
PS. Прошивку себе уже написал ;) К сожалению пока немогу выложить исходники (писал на заказ), только кусочки :geek:

т.е. как я понял, общий принцип такой:
1.по спаду на ножке, идущей к TSOP, запускается таймер
2.каждые 100-400 мкс (в зависимости от настроек таймера) анализируется и записывается состояние этой ножки
3.обработка полученного пакета команды/пули (при отсутствии ошибок)
Вложение:
example.PNG
example.PNG [ 1.17 KiB | Просмотров: 10831 ]

Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:
- допуском/погрешностью?
- расчетом кратности периода опроса и первоначальным смещением?
Синяя точка - первый спад/запуск таймера
Спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 мар 2014, 21:07 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Ansat писал(а):
Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:


всё проще
1. таймер работает всегда, без каких либо внешних прерываний
2. точки идут чаще чем у вас нарисовано

вообще алгоритм приведён куском - просто скопипастить и пользоваться 8-)

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


Последний раз редактировалось LTagKirov 10 мар 2014, 21:12, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 мар 2014, 21:11 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Ansat писал(а):
2 LTagKirov
LTagKirov писал(а):
вот вариант использованый мной, работает простым опросом с частотой от 2кгц(реже неработает), до 10..15КГц (быстрее нет смысла) Частота опроса фиксированная, по ней измеряются длительности импульсов пауз
PS. Прошивку себе уже написал ;) К сожалению пока немогу выложить исходники (писал на заказ), только кусочки :geek:

т.е. как я понял, общий принцип такой:
1.по спаду на ножке, идущей к TSOP, запускается таймер
2.каждые 100-400 мкс (в зависимости от настроек таймера) анализируется и записывается состояние этой ножки
3.обработка полученного пакета команды/пули (при отсутствии ошибок)
Вложение:
example.PNG

Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:
- допуском/погрешностью?
- расчетом кратности периода опроса и первоначальным смещением?
Синяя точка - первый спад/запуск таймера
Спасибо.

Немного не так.
По спаду запускается таймер, который с каждым "тиком" увеличивает переменную - счетчик длительности сигнала низкого уровня (переменная обнуляется в прерывании, сгенерированным спадом).
Когда приходит фронт, мы сравниваем длительность низкоуровневого сигнала и с учетом погрешности делаем вывод, что это - старт бит, бит, соответствующий единице или соответствующий нулю или помеха.
Тут же обнуляем переменную счетчик длительности сигнала высокого уровня и таймер её так же увеличивает на 1 с каждым тиком.
С приходом следующего спада анализируем длительность высокоуровневого сигнала и проверяем с учетом погрешности, соответствует ли она длительности паузы между передаваемыми битами.
Затем снова обнуляем счетчик низкоуровневого и все по новой, до тех пор, пока не зафиксируем отсутствие спадов и фронтов некоторое время - то есть фиксируем таймаут.
Надеюсь не сильно путанно изложил?

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 мар 2014, 21:13 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
LTagKirov писал(а):
Ansat писал(а):
Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:


всё проще
1. таймер работает всегда, без каких либо внешних прерываний
2. точки идут чаще чем у вас нарисовано

вообще алгоритм приведён куском - просто скопипастить и пользоваться 8-)


В крайних версиях таймер все таки вырубается если нет приема или передачи пакета.

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 мар 2014, 21:17 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 12 авг 2011, 16:55
Сообщений: 7514
Откуда: Барнаул, Алтайский край (не путать с республикой Алтай) :-)
Прошу пардона - встрял, не разобравшись кому вопрос адресован. :oops: :roll:

_________________
Ваше оружие становиться значительно эффективней, если его снять с предохранителя!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2014, 01:02 
Не в сети
Новосел
Аватар пользователя

Зарегистрирован: 01 мар 2014, 15:38
Сообщений: 69
2 Pingvin
Pingvin писал(а):
Немного не так.
По спаду запускается таймер, который с каждым "тиком" увеличивает переменную - счетчик длительности сигнала низкого уровня (переменная обнуляется в прерывании, сгенерированным спадом).
Когда приходит фронт, мы сравниваем длительность низкоуровневого сигнала и с учетом погрешности делаем вывод, что это - старт бит, бит, соответствующий единице или соответствующий нулю или помеха.
Тут же обнуляем переменную счетчик длительности сигнала высокого уровня и таймер её так же увеличивает на 1 с каждым тиком.
С приходом следующего спада анализируем длительность высокоуровневого сигнала и проверяем с учетом погрешности, соответствует ли она длительности паузы между передаваемыми битами.
Затем снова обнуляем счетчик низкоуровневого и все по новой, до тех пор, пока не зафиксируем отсутствие спадов и фронтов некоторое время - то есть фиксируем таймаут.
Надеюсь не сильно путанно изложил?

Спасибо.
Ваше описание вполне понятно и ценно для меня - именно к такому пониманию и пришел, копаясь в прошивке LTAscetik :)
В LTAscetik идет тотальный подсчет составляющих пачки команды/пули, а LTagKirov предложил метод "контрольной выборки" (мое самоназвание метода :lol: ).
Мне показалось, что идея неплохая :)


2 LTagKirov
LTagKirov писал(а):
вообще алгоритм приведён куском - просто скопипастить и пользоваться 8-)

Это не мой путь :lol:
Моя текущая цель понять "как это работает" и на программном уровне, и на уровне "железа". :geek:
Поэтому пока осознано хочу написать небольшой "велосипед", ибо очень тяжело учиться по чужому коду.
Соответственно и вопрос: что будет добавлено в буфер/накопленный пакет
Код:
ir_data
в случае с "красной точкой"?
Спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2014, 12:26 
Не в сети
Аксакал форума

Зарегистрирован: 29 авг 2011, 11:08
Сообщений: 1849
Ansat писал(а):
Моя текущая цель понять "как это работает" и на программном уровне, и на уровне "железа". :geek:

Соответственно и вопрос: что будет добавлено в буфер/накопленный пакет
Код:
ir_data
в случае с "красной точкой"? Спасибо.


Ничего небудет добавлено, приведённый мной алгоритм пропустит этот переход, измерит длину "паузы", обнаружит что она больше таймаута и отметит событие "плохой пакет". В вашем рисунке основная ошибка/задумка: на один входной импульс приходит меньше двух отсчётов. Другими словами у вас частота дискретизации выбрана равной частоте измеряемых импульсов. А должно быть больше, по теории минимум в два раза. Например в так всеми любимом RS232, при аппаратной реализации используется три импульса захвата на каждый бит и мажоритарное принятие решения о полученом бите. В варианте на атмеге8(168), при частоте опроса 10кгц, на 600мкс майлс импульс приходится 6 сосчитанных импульсов, дополнительно задложено +/-2 на измерительную погрешность/помхи. При минимально допустимой для майлс частоте опроса 2Кгц(больше частоты импульсов майлс всего на 20%), на импульс 600мкс будет приходить 1 счётный импульс, на 1200мкс 2 испульса, тоже работает но уже нет запаса на помехи, и могут возникнуть ситуации как у вас на картинке.


Небольшой ликбез 8-)
[url]http://ru.wikipedia.org/wiki/Частота_Найквиста[/url]
[url]http://ru.wikipedia.org/wiki/Теорема_Котельникова[/url]


ЗЫ. Приведённый алгоритм приёма по выборкам, не завязан на аппаратные устройства микроконтроллера (прерывания, регистры захвата и тд), без проблем портируется и работает на STM32 ;)

_________________
"За 2 месяца максимум можно чертёж сделать, еще за 3 фундамент." (c) Номернабис


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 мар 2014, 14:29 
Не в сети
Аксакал форума
Аватар пользователя

Зарегистрирован: 15 окт 2012, 12:24
Сообщений: 1246
помоему все эти вещи достоверны только для аналоговых сигналов, причем с обязательным условием - 100%-ое восстановление исходного сигнала по дискретной копии без потерь. Лазертаг немного иное приложение. И хотя детектирование несущей и подчиняется частным случаям этих правил, восстанавливать форму сигнала нам вовсе не требуется. ;)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 62 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB