Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 114

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — БВХ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interfeysusbpraktikaispolzovaniya2004.djvu
Предыдущая << 1 .. 108 109 110 111 112 113 < 114 > 115 116 117 118 119 120 .. 168 >> Следующая

348
Часть IV. Создание USB-устройств
К минусам можно отнести, пожалуй, только отсутствие документации и USB-
драйвер, при установке которого выдается сообщение о возможной
несовместимости с Windows ХР. Впрочем, никаких проблем при работе в
Windows ХР обнаружено не было (рис. 13.12).
I -<j>
m
У
m
#
4
IDE AT A/AT API controllers Keyboards
Mice and other pointing devices
Modems
Monitors
Network adapters Ports (COM & LPT)
Processors
Sound, video and game controllers System devices Universal Serial Bus
controllers
ATMEL 89C513I Bootloader
¦ Standard Enhanced PCI to USB Host Controller - USB Root Hub
USB Root Hub USB Root Hub USB Root Hub • USB Root Hub VIA Rev 5 or later
USB Universal Host Controller VIA Rev 5 or later USB Universal Host
Controller ' VIA Rev 5 or later USB Universal Host Controller
¦ VIA Rev 5 or later USB Universal Host Controller
.
Рис. 13.12. Драйвер USB программатора ER-Tronik
Загрузка программы в процессор
Упрощенно говоря, внутри процессора существует два загрузчика:
пользовательский и аппаратный (HBL, Hardware BootLoader).
Пользовательский загрузчик позволяет запускать программы, записанные в
память процессора, а аппаратный позволяет осуществить запись самой
программы.
Очевидная последовательность действий такова: стартовать аппаратный
загрузчик, записать программу в микропроцессор, стартовать записанную
программу.
Глава 13. НЮ-устройство на основе Atmel АТ89С5131
349
Для старта HBL требуется выполнить такую последовательность действий:
1. Отключить прибор от USB-шины, разомкнув перемычку Р2 (линия VREF).
2. Удерживая кнопки КЗ (линия Reset) и К2 (линия PSEN) подключить прибор
к USB-шине, замкнув перемычку Р2.
3. Отпустить кнопку КЗ.
4. Отпустить кнопку К2.
Если HBL успешно стартовал, Windows обнаружит новое устройство со
следующими характеристиками:
? Vendor ID = ОЗЕВ;
? Product ID = 2FFD;
? при установке драйверов FLIP новое устройство будет иметь имя "Jungo
АТ89С5131" (см. рис. 13.8), а при установке драйверов ER-Tronik - имя
"ATMEL 89С5131 Bootloader" (см. рис. 13.12).
13.5. Программа для микропроцессора
Программа, записываемая в микропроцессор, должна выполнять следующие
действия:
? инициализировать USB-интерфейс и внутренние переменные;
? производить обмен по USB-шине, включая процедуру нумерации и обработку
запросов от системы Plug and Play;
? производить выполнение других операций, необходимых программисту.
Для простоты понимания код нашей программы мы будем реализовывать в
несколько этапов. Сначала мы сделаем простую программу, позволяющую
работать с нулевой конечной точкой. Затем мы добавим обработку строковых
дескрипторов, что позволит Windows более детально "рассказать" о
подключенном устройстве. Затем мы добавим еще одну конечную точку для
передачи данных и научимся работать с HID-интерфейсом
13.5.1. Первая версия программы для АТ89С5131
В листинге 13.14 приведена функция main (основная функция программы на
языке С), реализующая основной алгоритм программы микропроцессора.
j".............................. :...................................
^.Листинг 13.14. Функция main программы для АТ89С5131
in . .........."".......................................................
/* описание регистров АТ89С5131 */ linclude "INC\i5131.h"
350
Часть IV. Создание USB-устройств
/* описание констант для доступа к регистрам */ #include "INC\ext_5131.h"
/* описание типов */ linclude "types.h"
/* макросы для управления регистрами */ linclude "reg_macr.h"
/* описание USB-дескрипторов */ linclude "usb_enum.h"
/* заголовки функций */ linclude "test.h"
/* функции для работы с USB */ linclude "usb_func.h"
/* ================================= */
/* MAIN - основная функция программы */
/* ===============================:=== */
void main()
{
/* выполнить инициализацию USB */ usb_init();
/* устройство подключено к шине */ usb_connected = TRUE;
/* основной цикл программы */ for (;;)
{
/* если устройство отключено от шины */ if (!usb_connected)
{
/* если получен сигнал побудки */ if (Usb_resume())
{
/* установить флаг активности */ usb_connected = TRUE;
/* сброс режима SUSPEND */ Usb_clear_suspend_clock() ;
Usb_clear_suspend();
Usb_clear__resume () ;
Usb_clear_sof();
}
Глава 13. НЮ-устройство на основе Atmel АТ89С5131
351
/* если устройство подключено к шине */
) else '{
/* если получен сигнал "засыпания" */ if (Usb_suspend())
(
usb__connected = FALSE;
Usb_clear_suspend();
Usb_set_suspend_clock();
}
/* если получен сигнал сброса */ if (Usb_reset () )
{
Usb_clear_reset() ;
}
/* сигнал SOF */ if (Usb_sof())
{
Usb_clear_sof();
}
/* обнаружено прерывание от конечной точки */ if
(Usb_endpoint_interrupt())
{
/* переключиться на 0 конечную точку */ Usb_select_ep(EP_CONTROL);
/* если получен пакет SETUP Сем. разд. 4.1.1) */ if
(Usb_setup_received())
{
/* начать процесс нумерации */ usb_enumeration_process();
}
}
// переключиться на первую конечную точку // переключиться на вторую
Предыдущая << 1 .. 108 109 110 111 112 113 < 114 > 115 116 117 118 119 120 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.