Приведено описание режимов чтения для аналоговых сигналов, для дискретных
(цифровых) сигналов все аналогично.
В данном ПО реализовано два режима чтения данных из устройства:
- чтение данных из буфера микроконтроллера
- потоковое чтение данных
При чтении данных из буфера микроконтроллера процесс измерения
состоит из следующих этапов:
1. Задание частоты дискретизации
2. Чтение на заданной частоте дискретизации 1126 10-ти битных отсчетов
(глубина буфера МК 1024(xdata) + 256 (EP2) + 128 (EP1) = 1408 байт
/ 1.25 (10 бит) = 1126 отсчетов) и упаковка их во внутренней буфер,
при необходимости синхронизация.
3. Уведомление компьютера о получении всех отсчетов
4. Передача буфера МК в компьютер
5. Распаковка буфера и калибровка отсчетов
6. Вывод результатов измерения на экран
Из чего следует, что при чтении с использованием буфера невозможно
считать больше 1126 отсчетов сигнала за одно непрерывное измерение.
Задание частоты дискретизации необходимо, для того чтобы обеспечить
возможность нормального просмотра как низко так и высокочастотных
сигналов. Так, например если бы частота дискретизации была всегда
200 КГц, то при анализе тона с частотой 1 КГц (т.е. 200 отсчетов
на период сигнала) на экране отображалось бы 1156/200 = 5 полных
периодов сигнала, что довольно хорошо, а если анализировать тон
частотой 50 Гц (т.е. 4000 отсчетов на период сигнала), то на экране
будет менее чем 1/3 периода, что не приемлемо, для какого ли анализа.
При потоковом чтение данных процесс измерения состоит из следующих
этапов:
1. Задание частоты дискретизации
2. Запуск потокового обмена
3. Чтение из МК в реальном режиме времени пакетов по 409 отсчетов
(512/1.25 (10 бит))
4. Когда компьютер читает пакет, МК пишет отсчеты в свое FIFO (1024
байта) для обеспечения непрерывности измерения
5. Распаковка полученных пакетов, калибровка, при необходимости
синхронизация.
6. После заполнения заданного буфера останов потокового обмена.
Возникает вопрос, зачем тогда чтение с использованием буфера МК.
Дело в том, что не на всех компьютерах есть USB1.1 и установлена
ОС на платформе NT, т.е. Windows 2000 и XP, которые обеспечивают
нормальную приоритетность процессов и выделения ресурсов процессора.
Так как процесс обмена данными идет непрерывно и в реальном режиме
времени, то предъявляются повышенные требования к компьютеру (особенно
к контроллеру USB шины) и ОС. Для обеспечения максимально частоты
дискретизации при потоковом чтении контролер шины USB должен успевать
читать по 512 байт данных (EP3) из End Point МК каждую миллисекунду.
Причем ОС должна выделить необходимые ресурсы процессу чтения данных,
т.е. нормально поддерживать приоритетность процессов и потоков.
Если у Вас как минимум Celeron 600, 128M ОЗУ и ОС Windows 2000 или
XP, все должно работать на максимальных частотах (проверялось на
3-х машинах) если конечно в это время не запущенно какое-то ресурсоемкое
приложение. Если же Ваш компьютер при подключении устройства выдает:
|
|
|
То работать на максимальных частотах дискретизации Вы не сможете,
от части из-за медленного компьютера, а от части из-за дешевого
контролера, который позволяет создать не дорогой прибор. Тут то
и придет на выручку режим чтения данных из буфера микроконтроллера,
так как в данном режиме нет зависимости максимальной частоты дискретизации
от параметров Вашего компьютера.
Но даже на медленных компьютерах возможно потоковое чтение, нужно
только экспериментально побрать граничную частоту дискретизации
больше которой будет автоматическое чтение через буфер, так, например
на Celeron 300, 64M Windows 98, потоковое чтение работало при Fд<=30
КГц, на Celeron 600, 128M Windows 98 при Fд<=100 КГц, хотя при
Windows 2000 потоковое чтение работало максимальных частотах.
Также необходимо отметить, что при использование одновременно
2-х каналов частота дискретизации удваивается, так например при
Fд = 100 КГц, на самом деле частота дискретизации Fд = 200 КГц,
вот почему при одновременном включении 2-х каналов автоматически
запрещается установка частоты дискретизации выше 100 КГц.
|