Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: AT91SAM9260-EK usb cdc
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
borea
Пример работы UDP как Communication Device Class(CDC) запустили. Передача с ПК на МК происходит нормально. Передача наоборот, c МК на ПК происходит если размер пакета не кратен размеру буфера (64 байта). Т.е., если передаю 127 байт, на компьютере принимаю нормально (в Delphi, CreateFile, ReadFile), если передаю 128 (или 64, 512 и т.д.) не получается. На МК вроде все в порядке, подтверждение от хоста есть (флаг UDP_TXCOMP), а на компе ноль реакции. Если кто разбирался с CDC, подскажите, пожалуйста, в чем проблема.
sergeeff
Дело не в CDC, а в том, что ты неправильно обрабатываешь прерывания от USB. Если ты передаешь в PC пакет, равный размеру endpoint'a, вырабатывается реально еще одно прерывание, которое ты обязан обработать, чего, по-видимому ты не делаешь.
borea
Добавили для пакета кратного размеру буфера посылку ZeroLength-пакета, и передача пошла. Плохой какой-то пример.
Sergeeff, а почему еще одно прерывание возникает при посылке в размере endpoint-а? Это прерывание endpoint-а? Что-то мы это пропустили... У меня нет еще одного прерывание. Не понятно.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.