ВУЗ:
Составители:
37
else // если устройство подключено к шине
{
if (Usb_suspend()) // если получен сигнал "засыпания"
{
usb_connected = FALSE; // сбросить флаг подключения устройства
Usb_clear_suspend(); // сброс режима SUSPEND
Usb_set_suspend_clock();
}
if (Usb_reset()) // если получен сигнал сброса
{
Usb_clear_reset();
}
if (Usb_sof()) // если получен сигнал начала кадра
{
Usb_clear_sof();
}
if (Usb_endpoint_interrupt()) // если обнаружено прерывание от конечной
точки
{
Usb_select_ep(0); // переключиться на 0 конечную точку
if (Usb_setup_received()) // если получен пакет SETUP
{
usb_control_packet_processed();
}
}
} // end (else)
} // end (for(;;))
} // end (Main)
Приведенная выше тестовая программа осуществляет прием
нескольких байт и отправку их обратно. Для удобства работа
программы организована по прерываниям. В самом начале основного
тела программы (Main) осуществляется инициализация USB –
модуля, и обработка пакетов нулевой конечной точки, после чего
контроллер переходит в сконфигурированное состояние. Прием и
отправка данных происходит в обработчике прерывания от USB –
модуля. (Вектор прерывания 13 см. приложение D) В данном модуле
происходит прием данных от компьютера, которые находятся во 2
конечной точке. После чего эти данные сохраняются в массиве info.
Страницы
- « первая
- ‹ предыдущая
- …
- 35
- 36
- 37
- 38
- 39
- …
- следующая ›
- последняя »