Свежие обсуждения
Измерения

Осц.-пр. к ПК версия 2 (упрощенная)

1 3 44
Проверил работу программы на нескольких машинах - ошибка имеет место быть, факт. Ее причина выявлена (вроде бы...), завтра выложу подправленный EXE.

Генератор (который был в аттаче) тоже "косяковый" -- синусоида с периодическими разрывами. Это я выяснил, записав длинную выборку при помощи SoundForge.

 
Вот, кажись пофиксил:
http://sirdvm.narod.ru/osc5/oscfix.rar
Там же два файла (исходники), которые были изменены.
 
>... тоже "косяковый"...
Ага -- когда в системе появляются процессы с высоким приоритетом.
Этот вариант оставался от давних экспериментов по исследованию минимального размера буфера проигрывания.

Тоже пофиксил -- увеличил буфер проигрывания с 4 до 20 кБ. (время реакции на изменение частоты при этом увеличилось с 0,1 до 0,5 сек, но теперь это маскируется "плавным" изменением частоты).

А в чем была причина ошибки?

 
Причина (предположительно) в неодинаковой работе драйверов звуковых карт. На моем компе драйвер заполнял посылаемые ему буферы (waveInAddBuffer) так, что разрывов на стыке не возникало. Почему - х.з., похоже на что-то вроде дополнительного уровня буферизации. Вообще вся работа с устройством ввода аудио-данных (waveIn) описана в MSDN отвратительно плохо (слишком лаконично).

От греха подальше я несколько переделал алгоритм, с целью избежать более чем одного вызова waveInAddBuffer на одну выборку (пришлось пожертвовать частотой обновления). Было опробовано несколько вариантов, в т.ч с многоуровневой буферизацией, различными типами оповещения (callback, event, polling), DirectSound... Некоторые из них работали и на других машинах без всяких косяков. Выложенный вариант наиболее "дубовый", по моим предположениям, хотя и тут нет 100% гарантии. На неделе попробую проконсультироваться с коллегой, который съел не одну собаку в этом вопросе.

 
Дмитрий! Всё-таки, переводить осциллографическое изображение в компъютерное - хорошо. Но в самом крайнем случае можно и сфотографировать/оцифровать/отсканировать, как говорит Юрий.
А вот - зафиксировать медленный процесс - с развёрткой 1 час/дел - вот это-да! Никакой аналоговый осциллограф не сделает! Да с "послесвечением" всего процесса. Вот главное достоинство "приставки". И в указанном мной случае лучше употребить формат не RAV, а CSV. И обработать EXCELом - у него возможностей - Ё...!
Когда меня очень сильно припёрло - я употреблял Гаме-порт для этой цели. Порнография, конечно. Но задача решалась.
 
Фиксировать медленный процесс (сколько угодно часов) при помощи обсуждаемой приставки можно, при небольшом изменении ПО. Только это все равно что забивать гвозди микроскопом. Для регистрации медленного процесса не нужен дорогой АЦП, сложная плата (с учетом всех требований для ВЧ аналоговых и цифровых цепей), десятки керамических и танталовых конденсаторов...

 
Затаив дыхание слежу за дискуссией... Серьезно. Подобная приставка - моя мечта с давних времен. И теперь, кажется, благодаря DVM мечта обретает реальные очертания... Что же касается наблюдения медленных процессов, то никто и не говорит что вышеозначенную приставку надо использовать _только_ для этого. Просто если будет подобная программная фича и осциллографическую приставку можно будет для этого использовать, будет очень хорошо. С уважением, Николай.  
Продолжение банкета.

EXE: http://sirdvm.narod.ru/osc5/osc-v02.rar
Исходники для AVR: http://sirdvm.narod.ru/osc5/avrsrc2.rar
И скриншот в прикрепленном файле.

В текущей версии исправлено несколько багов, добавлено, вероятно, еще больше , капитально доработан интерфейс, несколько изменен протокол передачи данных (вообще он немного похож на X-Modem), реализован экспорт в формат BMP. Дизайн окна отображения осциллограммы частично спионерен у CircuitMaker. Исходники разошлю заново (всем кто запрашивал), после того как программа как следует оттестируется.

Возможность записи без ограничения времени (с низкой частотой сэмплирования) может быть будет добавлена, скорее всего в виде утилиты. Кроме этого, в планы (отдаленные) входит включить в список поддерживаемых устройств простейшие приставки на базе контроллеров со встроенными АЦП.

На всякий случай, повторюсь насчет возможного повторения/модификации этого девайса. Делать это очень не рекомендуется, если нет возможности как минимум откомпилировать ПО и хотя бы в общих чертах самостоятельно разобраться, как оно работает. Подробное описание аппаратной/программной части дело довольно муторное (особенно с учетом постоянной модификации софта). Может быть, когда появится много-много свободного времени, будет соответствующая страничка.

Ну и, конечно, альтернативных вариантов немало. Например вот такая штука:
http://alternatezone.com/electronics/dsoamk3.htm
(ссылку прислал Alex)
По-моему, весьма достойная конструкция (со своей спецификой).

 
При работе интерфейса на скорости 115200 бод обнаружилась интересная бяка – раз в несколько минут входной буфер FIFO UART (ПК) переполняется (флаг ошибки, возвращаемый ClearCommError -- CE_OVERRUN). Оно конечно пофиг с точки зрения работоспособности, т.к. интерфейс изначально заточен на корректную обработку любых сбоев (обрыва линии, ошибки CRC, и т.д.), но неприятно. Переполнение возникает, очевидно, из-за многозадачности ОС. Точнее – из-за переключения задач в не самый подходящий момент. Выставление приоритета процесса REALTIME и макс. приоритета потока, работающего с COM-портом, лишь только уменьшает частоту возникновения такой ситуации. Для борьбы с косяком было принято решение ограничить размер пересылаемых (без предварительного разрешения от приемника) блоков 14-ю байтами, чтобы они гарантировано умещались в FIFO 16550A. После этого глюк исчез и больше не появляется (пока что).

К ПКшной программе была добавлена фича: файл инициализации приставки, допускающий редактирование вручную. Суть в том, что теперь при изменении , скажем, частоты задающего генератора, или скорости UART, требуется перекомпиляция только лишь прошивки контроллера. По мелочи, улучшена оптимизация и чуть-чуть изменен пользовательский интерфейс (лог). На сегодня она (программа) разрослась до 5842 строчек кода, что изначально ну совершенно никак не планировалось

Все хозяйство в архиве (кроме исходников для ПК):
http://sirdvm.narod.ru/osc5/osc021.rar
Обновленные исходники разослал почтой всем кто просил.

 
>... Для борьбы ...
Сир DVM, спасибо, учимся...