‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

worklog: скелет драйвера USB

USB: initialized, started
USB Connect
USB Disconnect
USB Connect
USB Disconnect
USB Connect


Это я подключаю-отключаю кабель, прерывание срабатывает и коллбэки пишут в консоль строчки через очередь FreeRTOS.

Но непонятно вот что: устройство ещё только-только проинициализировано, кабель не подключён, а флаг "RxFIFO не пуст" (RXFLVLM) уже выставлен - словно бы какие-то данные были приняты, чего не может быть. В регистре отладки (GRXSTSP) при этом всё по нулям, никаких прочих активных прерываний нет. Флаг ничем не сбрасывается, его можно только замаскировать.

В референс-мануале дофига всяких заметок и нюансов упоминается по ходу дела, то в описании регистров, то ещё где; есть и упоминания того, что некоторые прерывания перед их разрешением нужно принудительно сбрасывать. Возможно, где-то указано, что это прерывание именно что надо замаскировать и разрешать его следует гораздо позже... Проблема ещё в том, что в нормальных условиях этот флаг сбрасывается только если из RxFIFO прочитаны все данные -- но их там нет (если верить GRXSTSP) и читать нечего.

Проблема точно не в размере этого FIFO - щас прописано 128 байт, этого более чем достаточно для FS-устройства (изохронные пакеты, которые могут быть гораздо длиннее, я использовать не собираюсь).
Subscribe

  • "Железный купол" в деле

    Впечатляет. И как удачно зашло на фоне коррупционного скандала с Нетаньяху...

  • письки мисиськи

    Они жили долго и счастливо, и вместе сгнили в общей могиле.

  • Просто так.

    Рекламный ролик школы города Фиксбург, на африкаанс и английском. Ну и что? Да так, просто этот Фиксбург не на каждой карте есть: население всего…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 7 comments