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

Концепция "оптимальной" прошивки.
http://www.open-tager.ru/forum/viewtopic.php?f=5&t=1894
Страница 6 из 7

Автор:  mail_robot [ 11 фев 2013, 13:36 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

не хочу засорять тему ненужными спорами и доказательствами. Кто в курсе дела, поймет о чем я хотел сказать )

Автор:  Pacifist [ 11 фев 2013, 15:00 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

Может пригодится для оформления алгоритмов такая програмка под АВР:
Изображение

http://algrom.net/

Автор:  Ansat [ 10 мар 2014, 20:59 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

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

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

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

Автор:  LTagKirov [ 10 мар 2014, 21:07 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

Ansat писал(а):
Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:


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

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

Автор:  Pingvin [ 10 мар 2014, 21:11 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

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

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

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

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

Автор:  Pingvin [ 10 мар 2014, 21:13 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

LTagKirov писал(а):
Ansat писал(а):
Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается:


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

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


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

Автор:  Pingvin [ 10 мар 2014, 21:17 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

Прошу пардона - встрял, не разобравшись кому вопрос адресован. :oops: :roll:

Автор:  Ansat [ 11 мар 2014, 01:02 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

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

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


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

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

Автор:  LTagKirov [ 11 мар 2014, 12:26 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

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 ;)

Автор:  mail_robot [ 11 мар 2014, 14:29 ]
Заголовок сообщения:  Re: Концепция "оптимальной" прошивки.

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

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