На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (14) « Первая ... 11 12 [13] 14  все  ( Перейти к последнему сообщению )  
> OHCI USB
    Проблема решена. Надо movsd использовать :)
      Добрый день! Пытался найти помощь на разных форумах но пока там молчок.
      Здесь обсуждение идёт по нужной теме! :D

      LPC1768 - микроконтроллер
      HOST взят за основу хост от LPC (который умеет работать с флэшкой) OCHI


      Почему то не работают interrupt transfers


      подключаю камеру UVC


      енумерация проходит, стандартные запросы работают такие как установка адреса, установка интерфейса, установка конфигурации, чтение дескриптора.


      почему то не работают interrupt transfers (точнее понятно почему - что-то не так делаю но что ... )

      HCCA настраиваю (т.е. записываю в массив один указатель на ED)

      в HC адрес HCCA записываю.

      ED настроил по аналогии с ED для bulk

      TD к ED подключил

      прерывание по передачи TD разрешено (control transfer работают)

      поля CONTROL в TD и ED не изменяются такие же как и после их инициализации.



      Может засовываю в HCCA не вовремя - есть такое предположение.

      вообщем HC ничего с моим EDinterrupt не хочет делать



      Заранее Спасибо.
        Обнаружил что нужно заполнять ещё регистр USB->HcPeriodicStart=0x3E67;
        для опроса по interrupt дескрипторам.

        но всё равно не работает.

        пытался отправить дескриптор по bulk на interrupt endpoint - но то же не проходит, впечатление, что хост не трогает этот endpoint вообще.


        Новые Вопросы:
        1. Может ли такое вообще быть, что при запуске передачи вообще ничего не происходит (никакой из дескрипторов вообще не изменяеся ED TD) ?
        2. Нужно ли включать interrupt точку? и что будет если послать транзакцию например несуществующей точке.
          немного ошибся реакция HC всё же есть


          LPC_USB->HcBulkHeadED = (uint32_t)ed;
          LPC_USB->HcCommandStatus |= OR_CMD_STATUS_BLF;
          LPC_USB->HcControl |= OR_CONTROL_BLE;

          после включения BLE BLF сразу же сбрасывается.
          Но сами дескрипторы не изменяются и другие регистры HC не меняются.

          :oops:



          если это же действие проделать с Control endpoint 0 то данные передаются


          :help: :help: :help: :help: :help: :help: :help:
            Сделал SET_FEATURE для interrupt ep

            теперь дескриптор стал обрабатываться ! :D
              правда возвращает STALL



              а через HCCA не хочет почему-то всё-равно работать

              хотя HcPeriodCurrentED устанавливается правильно сам на нужный ED

              как же запустить interrupt передачи ???


              :help:
                К сожалению, сейчас спешу, поэтому коротко.
                Цитата Пришелец @

                поля CONTROL в TD и ED не изменяются такие же как и после их инициализации.

                Цитата Пришелец @
                прерывание по передачи TD разрешено (control transfer работают)


                Правильно ли ты работаешь с точками по прерываниям?
                Делаешь ли обработчик прерывания по завершении транзакции, если ты включаешь этот бит?
                Как ты организуешь непрерывную периодичность активного дескриптора. Ведь как он отработал, он больше не выполнится.
                  О спасибо! За отклик!!!


                  да прерывание разрешено по WDH

                  планирую по прерыванию эту точку и обрабатывать т.е. после каждой передачи перенастраивать дескрипторы.


                  но пока суть не в этом - дескриптор не обрабатывается ни одного раза т.е. HeadTd!=TailTd

                  при этом всё же HcPeriodCurrentED устанавливается правильно сам на нужный ED
                    Начали обрабатываться и через HCCA !


                    неправильно был установлен HcPeriodicStart
                      Здравствуйте скиньте пожалуйста исходники USB на мыло tyreunion@yandex.ru
                        На сайте usbisnotprogram.org лежат исходники USB, а так же можно найти исходники монитора и принтера 8)
                          У меня проблема c OHCI 1.0 - не устанавливается флаг PORT_ENABLE в регистре PORT_CHANGE после запроса PORT_RESET к USB Flash 2.0 (bcdDevice 1.10). C USB Flash 2.0 (bcdDevice 1.0) таких проблем нет. С релизом OHCI 1.1 работает всё нормально. В чем может быть проблема?

                          Работа с OHCI 1.0 и USB Flash 2.0 (bcdDevice 1.0)

                          PORT 1 STATUS
                          //после подключения USB Flash 2.0 (bcdDevice 1.0) к OHCI 1.0
                          wPortStatus = 0101 DevicePresent Powered
                          wPortChange = 0001 ConnectChange

                          //после сброса
                          PORT 1 STATUS
                          wPortStatus = 0103 DevicePresent Enabled Powered
                          wPortChange = 0010 ResetChange

                          //после отключения устройства
                          PORT 1 STATUS
                          wPortStatus = 0100 Powered
                          wPortChange = 0001 ConnectChange

                          Работа с OHCI 1.0 и USB Flash 2.0 (bcdDevice 1.0)

                          PORT 1 STATUS
                          //после подключения USB Flash 2.0 (bcdDevice 1.10) к OHCI 1.0
                          wPortStatus = 0101 DevicePresent Powered
                          wPortChange = 0001 ConnectChange

                          //после сброса
                          PORT 1 STATUS
                          wPortStatus = 0101 DevicePresent Powered
                          wPortChange = 0011 ConnectChange ResetChange

                          //после отключения устройства
                          PORT 1 STATUS
                          wPortStatus = 0100 Powered
                          wPortChange = 0001 ConnectChange
                            я OHCI не программировал (только UHCI пока), но могу сказать, что это происходит врядли из-за версии. Скорее всего ты неправильно резетишь. Возможно допустил ошибку с задержками. Читай другие топики посвященные этой проблеме. И внимательно перечитай спецификацию (особенно что касается резета и инита).
                              Спасибо за ответ! Только не понятно почему с другими флэшками работает? У тестируемых флэшек единственное отличие - строки (bcdDevice 1.0 - рабочая) (bcdDevice 1.10 - не рабочая), размер один и тот же - 2Gb. Но на другой платформе тот же код для OHCI работает с обеими флэшками,но ревизия у контроллера OHCI: reg_rev - 0x110. Ещё есть ноутбук IBM на котором установлен XP и имеется ОНСI, с которым так же не работает эта же флэшка (bcdDevice 1.10).
                                Да,подключив эту флешку (bcdDevice 1.0) через HUB 2.0, она работает, а на прямую нет (не сбрасывается корректно).
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0475 ]   [ 15 queries used ]   [ Generated: 2.05.24, 23:52 GMT ]