Форма входа

Поиск



Счетчик посетителей

Рейтинг@Mail.ru

Разработано jtemplate модули Joomla

Программная реализация шины USB - Продолжение 2

 

3.10. Программа для ПК

Для обеспечения связи с устройством необходима некоторая программная поддержка на стороне ПК. Программа разделена на три уровня:

  1. Драйвер устройства: используется для связи на низком уровне с устройством и для инсталляции в операционную систему (Windows98/ME/NT/XP).
  2. DLL-библиотека: используется для инкапсуляции функций устройства и связи с драйвером устройства. DLL упрощает доступ к функциям устройства из программы пользователя. В состав библиотеки входят некоторые функции устройства и операционной системы (задачи, буферы и др.).
  3. Приложение пользователя: создает пользовательский интерфейс для удобной связи между пользователем и устройством. Вызывает функции только из DLL-библиотеки.

3.10.1. Драйвер устройства и файлы инсталляции

Первоначально, USB-устройство подключается к компьютерному USB-порту, затем операционная система определит устройство и запросит файлы драйвера. Данный процесс называется инсталляцией устройства. Для выполнения инсталляции необходимо не только создать драйвер устройства, но также инсталляционный скрипт, в котором описывается последовательность инсталляции.

Драйвер, рассматриваемого в данных "Рекомендациях…" устройства, выполнен с использованием Windows2000 DDK (набор для разработки драйвера). Разработка драйвера USB основана на входящих в DDK примерах - IsoUsb. Данный драйвер изменен для организации USB-связи с AVR. В оригинальном исходном коде изменения выполнялись вокруг IOCTL-связи путем добавления или расширения, т.к. устройство связывается с компьютером посредством IOCTL-вызовов. Для уменьшения размера кода драйвера из исходного кода были удалены неиспользуемые части. Имя драйвера - "AVR309.sys". Он работает как отправитель команд USB-устройству (управляет входящей передачей). Драйвер работает под всеми версиями 32-разрядных операционных систем Windows, за исключением Win95. Инсталляционный скрипт, записанный в INF-файл, используется в процессе инсталляции устройства. В данном INF-файле описаны различные инсталляционные шаги. Файл "AVR309.inf" создан с помощью текстового редактора. Он запрашивается операционной системой в процессе инсталляции.

После инициации инсталляции файл драйвера копируется в операционную систему, а затем выполняются требуемые системные изменения. INF-файл гарантирует инсталляцию DLL-библиотеки в системную папку, что гарантирует простоту ее вызова из различных приложений. Для инсталляции устройства необходимо три файла: INF-файл "AVR309.inf", драйвер "AVR309.sys" и DLL-библиотека "AVR309.dll".

3.10.2. Библиотека DLL

DLL-библиотека связывает с драйвером устройства и всеми функциями устройства, реализованных в этой библиотеке. Способ написания программы конечного пользователя предельно упрощен. DLL-библиотека гарантирует привилегированный доступ к устройству (упорядочивает доступ к устройству), содержит системный буфер для приема данных через RS232 и создает одну системную задачу для чтения буфера данных RS232.

Упорядочение в DLL гарантирует, что только одно приложение/задача будет связано с устройством в данное время. Это необходимо ввиду возможности наложения запросов/ответов от различных приложений в одно и тоже время.

Системный буфер для приема данных через RS232 гарантирует, что принятые данные будут размещены в одном буфере, который является общим для всех приложений. В таком случае принятые данные устройством будут отправляться всем приложениям. Не стоит беспокоиться о том, что приложение примет не полностью данные из-за того, что другое приложение до этого считывало буфер данных.

Для всех приложений существует только одна системная задача, и данные будут периодически запрашиваться у устройства через RS232. В этом случае задача будет сохранять принятые данные в системный буфер. Наличие только одного системного буфера гарантирует небольшую загрузку ЦПУ (в сравнении, когда каждое приложение имеет свою собственную задачу) и упрощает сохранение данных в системный буфер. Все функции устройства определены в библиотеке DLL, а их экспорт выполняется в удобной форме: не в виде номера функции и параметров, а в виде удобного имени функции с параметрами. Некоторые функции более сложны внутренне, например, функция чтения буфера данных RS232. Таким образом, разработчики могут быстро разрабатывать свои приложения, используя только интерфейс DLL. Нет необходимости изучать функции низкого уровня устройства, т.к. DLL-библиотека разделяет уровень прикладного программирования от аппаратного уровня.

Объявления написаны для 3 наиболее популярных языков программирования: Borland Delphi, C++ (Borland или Microsoft) и Visual Basic. Детальное описание данных функций может быть найдено во вложенном файле помощи AVR309_DLL_help.htm. DLL написана на Delphi и ее весь исходный код входит в данные "Рекомендации…".

3.10.3. Приложение конечного пользователя

Приложение конечного пользователя использует функции из DLL-библиотеки для связи с устройством. Его основным назначением является реализация дружественного графического пользовательского интерфейса (GUI).

Для написания собственной программы программистам необходимо использовать библиотеку DLL. В качестве примера можно использовать проект в исходных кодах, который входит в приложение к данным "Рекомендациям…". Множество приложений можно создать, используя данный пример в качестве отправной точки, используя при этом различные языки программирования (Delphi, C++ и Visual Basic).

Пример приложения называется "AVR309demo.exe". Данную программу предполагалось использовать только в качестве примера по тому, как использовать функции из библиотеки DLL. Вложенный исходный код написан на Delphi и может использоваться в качестве шаблона для других приложений.

3.10.4. Погрешность генерации скорости УАПП

Микроконтроллер использует тактовую частоту 12МГц из-за осуществления преобразования USB. Однако недостатком использования такой частоты синхронизации является наличие небольшой погрешности при генерации стандартных скоростей связи. Однако за счет высокого значения частоты синхронизации погрешность минимальна. Максимально допустимая погрешность генерации скорости связи должны быть 4%, т.к. максимальная погрешность равна отношению длительности половины бита (0.5) к максимальной длительности пакета 12 бит = 1 старт-бит + 8 бит данных + 1 бит паритета + 2 стоп-бита. Таким образом, погрешность равна 0.5/12*100% = 4.1%.

Функции в DLL автоматически вычисляют погрешность и устанавливают такую скорость связи, отклонение от стандартной которой не превышает 4%. В случае определения неподдерживаемой скорости выводится сообщение об ошибке. Однако не рекомендуется использовать скорости с погрешностью более 2%.

В таблице 4 подытоживаются погрешности в генерации стандартных скоростей при работе микроконтроллера на частоте 12 МГц.

Таблица 4. Погрешность генерации скорости связи УАПП микроконтроллера AVR (тактовая частота 12 МГц)

Стандартная скорость

Скорость в AVR

Погрешность, %

600

602

+0.33

1200

1204

+0.33

2400

2408

+0.33

4800

4808

+0.17

9600

9616

+0.17

19200

19230

+0.16

28800

28846

+0.16

38400

38462

+0.16

57600

57692

+0.16

115200

115384

+0.16

5. Приложение

Приложения входят в состав отдельного присоединенного файла к данным рекомендациям по применению.

5.1. Прошивка для AVR с исходным кодом

Исходный код программы для микроконтроллера ATmega8 написан в AVR Studio 4. Исходный код программы можно найти в текстовом файле USBtoRS232.asm или с синтаксическими выделениями в файле USBtoRS232asm.pdf.

5.2. DLL-библиотека с исходным кодом

Библиотека AVR309.dll написана в Delphi3, т.к. данный исходный код основан на объектном языке Паскаль. Интерфейсы (Delphi, C/C++ и Visual Basic.) к DLL-библиотеке (экспортируемые функции) "AVR309.dll" описаны в файле AVR309_DLL_help.htm. Исходный код библиотеки AVR309.dll, написанный в Delphi3, может быть найден в файле AVR309.dpr (проект Delphi3).

5.3. Пример приложения конечного пользователя с исходным кодом

Пример использования библиотеки DLL в виде приложения конечного пользователя представлен в виде исполнимого файла AVR309USBdemo.exe. Исходный код, написанный в Delphi3, может быть найден в файле AVR309USBdemo.dpr

Инженер Игорь Чешко (Igor Cesko)
Словакия
www.cesko.host.sk

Музыка на праздниках