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. Прошивку себе уже написал К сожалению пока немогу выложить исходники (писал на заказ), только кусочки т.е. как я понял, общий принцип такой: 1.по спаду на ножке, идущей к TSOP, запускается таймер 2.каждые 100-400 мкс (в зависимости от настроек таймера) анализируется и записывается состояние этой ножки 3.обработка полученного пакета команды/пули (при отсутствии ошибок) Вложение: example.PNG [ 1.17 KiB | Просмотров: 9712 ] Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается: - допуском/погрешностью? - расчетом кратности периода опроса и первоначальным смещением? Синяя точка - первый спад/запуск таймера Спасибо. |
Автор: | LTagKirov [ 10 мар 2014, 21:07 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
Ansat писал(а): Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается: всё проще 1. таймер работает всегда, без каких либо внешних прерываний 2. точки идут чаще чем у вас нарисовано вообще алгоритм приведён куском - просто скопипастить и пользоваться |
Автор: | Pingvin [ 10 мар 2014, 21:11 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
Ansat писал(а): 2 LTagKirov LTagKirov писал(а): вот вариант использованый мной, работает простым опросом с частотой от 2кгц(реже неработает), до 10..15КГц (быстрее нет смысла) Частота опроса фиксированная, по ней измеряются длительности импульсов пауз PS. Прошивку себе уже написал К сожалению пока немогу выложить исходники (писал на заказ), только кусочки т.е. как я понял, общий принцип такой: 1.по спаду на ножке, идущей к TSOP, запускается таймер 2.каждые 100-400 мкс (в зависимости от настроек таймера) анализируется и записывается состояние этой ножки 3.обработка полученного пакета команды/пули (при отсутствии ошибок) Вложение: example.PNG Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается: - допуском/погрешностью? - расчетом кратности периода опроса и первоначальным смещением? Синяя точка - первый спад/запуск таймера Спасибо. Немного не так. По спаду запускается таймер, который с каждым "тиком" увеличивает переменную - счетчик длительности сигнала низкого уровня (переменная обнуляется в прерывании, сгенерированным спадом). Когда приходит фронт, мы сравниваем длительность низкоуровневого сигнала и с учетом погрешности делаем вывод, что это - старт бит, бит, соответствующий единице или соответствующий нулю или помеха. Тут же обнуляем переменную счетчик длительности сигнала высокого уровня и таймер её так же увеличивает на 1 с каждым тиком. С приходом следующего спада анализируем длительность высокоуровневого сигнала и проверяем с учетом погрешности, соответствует ли она длительности паузы между передаваемыми битами. Затем снова обнуляем счетчик низкоуровневого и все по новой, до тех пор, пока не зафиксируем отсутствие спадов и фронтов некоторое время - то есть фиксируем таймаут. Надеюсь не сильно путанно изложил? |
Автор: | Pingvin [ 10 мар 2014, 21:13 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
LTagKirov писал(а): Ansat писал(а): Прошу Вас, пояснить, при возможности: если в очередной момент опроса ножки произойдет смена состояния (на рисунке выше красные точки), то это решается: всё проще 1. таймер работает всегда, без каких либо внешних прерываний 2. точки идут чаще чем у вас нарисовано вообще алгоритм приведён куском - просто скопипастить и пользоваться В крайних версиях таймер все таки вырубается если нет приема или передачи пакета. |
Автор: | Pingvin [ 10 мар 2014, 21:17 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
Прошу пардона - встрял, не разобравшись кому вопрос адресован. |
Автор: | Ansat [ 11 мар 2014, 01:02 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
2 Pingvin Pingvin писал(а): Немного не так. По спаду запускается таймер, который с каждым "тиком" увеличивает переменную - счетчик длительности сигнала низкого уровня (переменная обнуляется в прерывании, сгенерированным спадом). Когда приходит фронт, мы сравниваем длительность низкоуровневого сигнала и с учетом погрешности делаем вывод, что это - старт бит, бит, соответствующий единице или соответствующий нулю или помеха. Тут же обнуляем переменную счетчик длительности сигнала высокого уровня и таймер её так же увеличивает на 1 с каждым тиком. С приходом следующего спада анализируем длительность высокоуровневого сигнала и проверяем с учетом погрешности, соответствует ли она длительности паузы между передаваемыми битами. Затем снова обнуляем счетчик низкоуровневого и все по новой, до тех пор, пока не зафиксируем отсутствие спадов и фронтов некоторое время - то есть фиксируем таймаут. Надеюсь не сильно путанно изложил? Спасибо. Ваше описание вполне понятно и ценно для меня - именно к такому пониманию и пришел, копаясь в прошивке LTAscetik В LTAscetik идет тотальный подсчет составляющих пачки команды/пули, а LTagKirov предложил метод "контрольной выборки" (мое самоназвание метода ). Мне показалось, что идея неплохая 2 LTagKirov LTagKirov писал(а): вообще алгоритм приведён куском - просто скопипастить и пользоваться Это не мой путь Моя текущая цель понять "как это работает" и на программном уровне, и на уровне "железа". Поэтому пока осознано хочу написать небольшой "велосипед", ибо очень тяжело учиться по чужому коду. Соответственно и вопрос: что будет добавлено в буфер/накопленный пакет Код: ir_data в случае с "красной точкой"? Спасибо. |
Автор: | LTagKirov [ 11 мар 2014, 12:26 ] |
Заголовок сообщения: | Re: Концепция "оптимальной" прошивки. |
Ansat писал(а): Моя текущая цель понять "как это работает" и на программном уровне, и на уровне "железа". Соответственно и вопрос: что будет добавлено в буфер/накопленный пакет Код: ir_data в случае с "красной точкой"? Спасибо.Ничего небудет добавлено, приведённый мной алгоритм пропустит этот переход, измерит длину "паузы", обнаружит что она больше таймаута и отметит событие "плохой пакет". В вашем рисунке основная ошибка/задумка: на один входной импульс приходит меньше двух отсчётов. Другими словами у вас частота дискретизации выбрана равной частоте измеряемых импульсов. А должно быть больше, по теории минимум в два раза. Например в так всеми любимом RS232, при аппаратной реализации используется три импульса захвата на каждый бит и мажоритарное принятие решения о полученом бите. В варианте на атмеге8(168), при частоте опроса 10кгц, на 600мкс майлс импульс приходится 6 сосчитанных импульсов, дополнительно задложено +/-2 на измерительную погрешность/помхи. При минимально допустимой для майлс частоте опроса 2Кгц(больше частоты импульсов майлс всего на 20%), на импульс 600мкс будет приходить 1 счётный импульс, на 1200мкс 2 испульса, тоже работает но уже нет запаса на помехи, и могут возникнуть ситуации как у вас на картинке. Небольшой ликбез [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/ |