Опять я выпал из процесса, и вы можете не верить, но проект все еще жив )
Дисплей преподнес много неприятных сюрпризов. Во-первых, он сильно шумит по питанию по причине присутствия в нем импульсного DC-DC преобразователя для питания весьма прожорливой светодиодной подсветки. Этот шум лезет в цепи усилителя и создает неприятный фон. Измерениям он пока не мешает, но неприятно. Схему питания буду переделывать, а для этого придется заказывать новые печатки. Но это меньшая из бед. Другая сложность заключается в том, что сам дисплей со всеми его кнопками, надписями, графиками и прочими объектами на нем - это независимая и вполне самодостаточная система, живущая своей жизнью. Весь диалог создается именно в прошивке дисплея. А прошивка, по которой работает прибор - это отдельная система. И эти две системы общаются между собой. Так вот, дисплей порой наплевательски относится к запросам из вне. Ему отсылаешь команду, а он в этот момент может сделать что-то свое и никак не ответить на запрос, и программа зависает в бесконечном ожидании. Приходится в подобные места лепить ненужные заплатки и делать какие-то таймауты. Все это загромождает программу и нарушает ее слаженность. Поэтому уйма времени уходит на бесконечную оптимизацию кода.
Ну и пришлось повозиться с алгоритмом захвата сигнала. Как я писал ранее, здесь обработка сигнала будет полностью программная. Встроенный 2 МГц 12-битный АЦП с регистром сравнения и DMA каналом - творят чудеса ) Раньше у меня, как и в старых швейцарских приборах, было так: после усилителей использовались пара компараторов для отлавливания начала импульсов, 1-го и 3-го, для измерения периода/выкачки и амплитуды, соответственно. Программе нужно было только измерять время, между приходящими импульсами. А все времязадающие цепочки, для построения огибающей сигнала и, соответственно для корректного его анализа, определялись жестко впаянными резисторами и конденсаторами. Т.е. одни и те же настройки для всего диапазона измеряемых периодов. Что в большинстве случаев прокатывает, если вы имеете чистый и красивый сигнал. Но сейчас диапазон периодов расширяется. Есть механизмы с 72000 bph и выше. Перекрыть весь этот диапазон от 1 до 35 Гц, с учетом коаксиальных спусков, сильного шумового фона или паразитных импульсов, например, по причине пристука баланса - становится все сложнее. На помощь приходит программная обработка с гибкой системой подстройки в формировании огибающей и различные фильтры. Признаться, не знаю, как далеко в этих вопросах продвинулись швейцарцы, тут мне глубокую теорию черпать неоткуда. Я опираюсь лишь на собственный опыт.
В общем, пока вот что имеем. Часы тикают, сигнал захватывается, четко отслеживается начало тика и последний импульс в пакете для определения амплитуды. Результаты измерений пока не выводятся, но это дело техники. Все данные для этого уже есть. Выводится осциллограмма шумов с поочередным выводом "тик"-а и "так"-а. Поскольку здесь все завязано на обработке осциллограммы, с ее вывода и был начат процесс. Также возможно параллельно вывести огибающую, огибающею-2, ну и пороговый уровень до кучи. Да, и таблица периодов уже готова. Имеет все штатные значения, подсмотренные у швейцарцев, плюс можно ввести и сохранить 16 пользовательских значений, с выбором любого из значений для автоматического определения в режиме Auto. Сейчас планирую заняться выводом результатов и постройкой диаграммы. Хотя, велик соблазн поработать над чтением SD карты - это облегчило бы дальнейший процесс нововведений, потому как сейчас для обновления прошивки дисплея, его всякий раз приходится вынимать из корпуса. Ну и впереди еще добавление на дисплей страницы с настройками/опциями и добавление режима Trace.