Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы

Как обнаружить нужное значение в последовательных данных

Непрочитано 19.02.2017, 14:33  
vladh
Почётный гражданин KAZUS.RUN
 
Регистрация: 03.12.2004
Сообщений: 1,311
Сказал спасибо: 353
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
vladh на пути к лучшему
По умолчанию Как обнаружить нужное значение в последовательных данных

Добрый день, форумчане. Может кто подскажет идею того как реализовать нижеописанную задачу. Я вот уже несколько дней размышляю но ничего толкового придумать не могу. А Задача состоит в следующем. Имеется канал по которому постоянно и непрерывно приходят последовательные данные. Необходимо в этих данных выявить время прихода такого куска(8 и более разрядов) данных, который бы соответствовал некоторому заданному значению. Частота с которой передаются данные 200-3000 Гц.
Реклама:

Последний раз редактировалось realid; 19.02.2017 в 15:02.
vladh вне форума  
Непрочитано 19.02.2017, 14:53  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: КАК ОБНАРУЖИТЬ НУЖНОЕ ЗНАЧЕНИЕ В ПОСЛЕДОВАТЕЛЬНЫХ ДАННЫХ

Время относительно чего? Астрономическое время (день, месяц, час, минута) или время от включения устройства, тоже в чем, в минутах, секундах или условных тиках?
В любом случае, имеем некий работающий счетчик времени, и следим за принимаемыми данными. Когда принятые данные равны ожидаемым, записываем текущее значение счетчика времени в отдельную переменную. Всё просто.
NewWriter вне форума  
Непрочитано 19.02.2017, 15:08  
vladh
Почётный гражданин KAZUS.RUN
 
Регистрация: 03.12.2004
Сообщений: 1,311
Сказал спасибо: 353
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: КАК ОБНАРУЖИТЬ НУЖНОЕ ЗНАЧЕНИЕ В ПОСЛЕДОВАТЕЛЬНЫХ ДАННЫХ

Сообщение от NewWriter Посмотреть сообщение
В любом случае, имеем некий работающий счетчик времени, и следим за принимаемыми данными. Когда принятые данные равны ожидаемым, записываем текущее значение счетчика времени в отдельную переменную. Всё просто.
По поводу времени - не важно. Пусть будет от времени включения аппарата. А вот как мне из непрерывного потока вычленить нужные данные? Непрерывный поток данных в моем случае такой поток, который внешне напоминает ШИМ-сигнал.

Последний раз редактировалось vladh; 19.02.2017 в 15:12.
vladh вне форума  
Непрочитано 19.02.2017, 15:11  
ForcePoint
Почётный гражданин KAZUS.RUN
 
Регистрация: 20.03.2007
Адрес: "Братское кольцо враждебности", т.е. ближайшее заМКАДье.
Сообщений: 7,459
Сказал спасибо: 3,227
Сказали Спасибо 3,513 раз(а) в 2,394 сообщении(ях)
ForcePoint на пути к лучшему
Вопрос Re: Как обнаружить нужное значение в последовательных данных

Ну а как ещё, кроме постоянного сравнения с заданной маской?
Как хотите? Аппаратно/программно, данные последовательные/параллельные (тип интерфейса)?
__________________
Экзорцист 40-го уровня.
ForcePoint вне форума  
Непрочитано 19.02.2017, 15:16  
tim1960
Почётный гражданин KAZUS.RUN
 
Аватар для tim1960
 
Регистрация: 26.12.2006
Адрес: С.-Пб.
Сообщений: 1,578
Сказал спасибо: 329
Сказали Спасибо 553 раз(а) в 352 сообщении(ях)
tim1960 на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Поставить сдвиговый регистр с параллельным выходом и с требуемой разрядностью и запустить на его последовательный вход свои данные. С параллельных выходов данные подать на схему сравнения с требуемым кодом. При совпадении формируется строб фиксации счетчика.
Как-то так !
P.S. Это если аппаратно...
__________________
"Счастье для всех, даром, и пусть никто не уйдет обиженный!" ©
tim1960 вне форума  
Сказали "Спасибо" tim1960
vladh (19.02.2017)
Непрочитано 19.02.2017, 15:18  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Следим за принимаемыми данными.
Допустим, нужно найти в потоке три последовательных байта 0х03, 0х47, 0xA5.
Каждый принятый байт проверяется на равенство первому искомому 0х03. Дождались? Окей, теперь ждем приема следующего байта, и он должен быть равен второму искомому 0х47. Не равен? Значит снова ждем принятого 0х03. А если был равен 0х47, тогда следующий принятый должен быть равен 0xA5. Равен? Окей, дождались чего хотели, фиксируем время приема первого (или последнего) байта. Не был равен? Снова повторяем ожидание первого искомого 0х03.

ЗЫ. Раз вопрос задан в разделе "Микроконтроллеры", полагаю, что именно на микроконтроллере предполагается делать?
Нет? на дискретной логике? уууу, задолбаться... сдвиговый регистр с параллельным входом, компаратор параллельного кода, мультиплексоры, двоичные счетчики... мдяяя

Последний раз редактировалось NewWriter; 19.02.2017 в 15:21.
NewWriter вне форума  
Непрочитано 19.02.2017, 15:20  
vladh
Почётный гражданин KAZUS.RUN
 
Регистрация: 03.12.2004
Сообщений: 1,311
Сказал спасибо: 353
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Сообщение от ForcePoint Посмотреть сообщение
Ну а как ещё, кроме постоянного сравнения с заданной маской?
Как хотите? Аппаратно/программно, данные последовательные/параллельные (тип интерфейса)?
Да, так и хочу - сравнивать с постоянной маской. Реализация решения задачи в настоящий момент любая, но вообще бы хотелось с помощью МК. Я уже писал данные последовательные. Вообще говоря эти данные получаются в результате АЦП некоего шумового сигнала.
vladh вне форума  
Непрочитано 19.02.2017, 15:24  
vladh
Почётный гражданин KAZUS.RUN
 
Регистрация: 03.12.2004
Сообщений: 1,311
Сказал спасибо: 353
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Сообщение от tim1960 Посмотреть сообщение
Поставить сдвиговый регистр с параллельным выходом и с требуемой разрядностью и запустить на его последовательный вход свои данные. С параллельных выходов данные подать на схему сравнения с требуемым кодом. При совпадении формируется строб фиксации счетчика.
Наверное это решение аппаратно будет лучшим! Я чего-то о таком варианте не подумал. Теперь это решение надо будет реализовать внутри МК.
vladh вне форума  
Непрочитано 19.02.2017, 15:25  
NewWriter
Почётный гражданин KAZUS.RUN
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,481
Сказал спасибо: 396
Сказали Спасибо 2,222 раз(а) в 1,317 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Сообщение от vladh Посмотреть сообщение
в результате АЦП некоего шумового сигнала
Тогда вероятность обнаружения именно в точности искомой последовательности - оооочень небольшая. Шумовой сигнал, он потому и шумовой, что вероятность получить именно конкретную последовательность конкретных значений - ноль целых хрен десятых. И чем длиннее искомая цепочка, тем меньше вероятность.
Вот какая вероятность того, что например младшие биты АЦП будут именно 0х03 0х47 0хA5 друг за другом?
Я так понял, вы хотите в шумовом сигнале обнаружить например синусоиду? Гиблое дело таким методом...

Другими методами надо, другими. Цифровая обработка сигналов - цифровые фильтры и тп. Там много математики. Поток принимается в буфер, и с буфером идет работа, вычисления

Последний раз редактировалось NewWriter; 19.02.2017 в 15:32.
NewWriter вне форума  
Непрочитано 19.02.2017, 15:31  
vladh
Почётный гражданин KAZUS.RUN
 
Регистрация: 03.12.2004
Сообщений: 1,311
Сказал спасибо: 353
Сказали Спасибо 76 раз(а) в 33 сообщении(ях)
vladh на пути к лучшему
По умолчанию Re: Как обнаружить нужное значение в последовательных данных

Сообщение от NewWriter Посмотреть сообщение
Другими методами надо, другими. Цифровая обработка сигналов.
А разве я не о цифровой обработке говорю? После того как сигнал был преобразован из аналога в цифру я и пытаюсь найти способ выявления нужных моментов. Как вариант это метод предложенный tim1960/
vladh вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Книги (не радиотехнической тематики) Mike79 Электронная библиотека 4269 04.06.2025 23:11
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Ускорить компьютер 7Fantomas7 Ремонт оргтехники 111 08.08.2018 05:27
Вопрос по мультипроцессорному обмену USART MEGA8 vikont-s Микроконтроллеры, АЦП, память и т.д 0 10.08.2006 14:55


Часовой пояс GMT +4, время: 16:49.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.