Проектирование CDC-устройств на микроконтроллерах со встроенным USB-модулем. Воробьева Г.С - 37 стр.

UptoLike

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.