MiklPolikov 0 12 ноября, 2016 Опубликовано 12 ноября, 2016 · Жалоба Подскажи: Каким образом USB мышка или клавиатура пробуждают компьютер из спящего режима ? Когда компьютер в спящем режиме, он всё равно работает как USB хост и ведёт обмен какими-то пакетами с устройствами ? Заранее спасибо ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
controller_m30 1 12 ноября, 2016 Опубликовано 12 ноября, 2016 · Жалоба У меня есть отладочная плата с контроллером, работающем в режиме USB CDC (USB-UART переходник), скорость Full Speed. Программа на ассемблере, могу менять там что угодно. Я добавил к обработчикам разных событий на шине (SOF, Reset, Get_Descriptor) мигание светодиодами на плате. Что получилось. В режимах "Выключение" и "Ждущий режим" (это когда выкл. всё: монитор, ЖД, даже вентилятор блока питания - но программы остаются в RAM) - на шине присутствует только SOF. Ни одного запроса дескриптора, или хотя бы состояния "Reset" на шине не было. Переподключение устройства к шине, ничего нового не показывает: есть только SOF, а USB-сброса, или запросов дескрипторов нет. Частота SOF стандартная для FullSpeed - 1ms. В BIOS моего компа нет функции пробуждения от USB устройств (есть только от PS/2 мыши и клавиатуры). Может быть поэтому дескрипторы не читаются :laughing: PS. Комп не сильно старый, 2-х летней давности, стационарный. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gerber 7 12 ноября, 2016 Опубликовано 12 ноября, 2016 (изменено) · Жалоба Когда компьютер в спящем режиме, он всё равно работает как USB хост и ведёт обмен какими-то пакетами с устройствами ? Да, USB хост опрашивает IN-endpoints с заданной (в дескрипторах конечной точки) периодичностью, но не чаще, чем 1 мс для Full-Speed. Когда конечной точке "есть что сказать" хосту - она возвращает ACK и порцию данных (не более 64 байт для Full-Speed). Что примечательно - это делается аппаратно, USB Host контроллером, без вмешательства CPU, однако если данные появились - USB Host уже генерирует "классическое" прерывание CPU и будит систему. Изменено 12 ноября, 2016 пользователем gerber Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться