Перейти к содержанию
    

Привет!

Вот сейчас почитал и думаю как трактовать ваши ответы? Как неуважение ко мне или как вашу некомпетентность. Вы не понимаете моих вопросов или не считаете важным понимать?

Может кто-то написать схему обарботки прерываний от усб сетап пакета? Или прокомментировать мою схему

Помнится Вы говорили что знаете USB и работали с MCU большого количества производителей.

А теперь задаете вопросы, на которые я могу только сказать, что повторять не буду, и посоветую почитать таки USB спецификацию и мануал на LPC.

 

Обещаное прилагаю, хотя вряд-ли Вам это поможет. В названных мною примерах это все есть.

usb.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть СЕТАП фаза

потом должна быть дата фаза, и если эта фаза от контролера к хосту, то пока не придет пакет или сталл или не выйдет таймоут, хост не сгенерит новый сетап. Это хорошо...

 

А если был сетап запрос, потом контроллер хосту послал данные, и на следующую посылку от хоста к контроллеру, контроллер овтечает НАК, что будет? Хост выждет таймоут и потом сгенерит ресет на шине? Или сразу сгенерит ресет? А если накать после хендшейк (статус) фазы?

NAK-ать можно всегда (5 сек), кроме как на SETUP.

еще один вопрос меня долго мучает

Хендшайк фаза если это сетап пакет без данных или выходная посылка, то контроллер получив данные должен послать в ответ пакет нулевой длинны, как хендшайк фаза.

А если это входная посылка? то получив данные хост посылает пакет нулевой длинны? или он удовольствуется АСКом на данные в дата фазе? физически посылка есть от хоста в контроллер в хендшейк фазе? и главное если эта посылка есть, регистрируется ли эта посылка ЛПЦом как посылка данных?

При входной (для хоста) посылке хост шлёт пакет данных 0й длины с маркером DATA1. На него тоже можно слать NAK (до ACK).

Да!, и правда ли необходимо если посылка завершается посылкой пакета максимальной длинны буфера конечной точки, послать еще в конце всего пакета нулевой длинны? А если это однопакетная посылка, но длинной в макс размер буффера, то надо ли слать пакет нулевой длинны в конце? или это какое то неверное толкование стандарта? Важен размер буффера конечной точки или важен максимальный размер буффера для данной реализации стандарта, то есть 1.0, 2.0, фулл спид, лов спид?

Важен размер буфера контрольного канала (EP0), описанный в дескрипторе DEVICE. В случае кратности данных его размеру здесь все рекомендуют слать пакет 0й длины. Но лично я в таком случае делаю так:

1. Смотрю (на NAK-ах), что хост хочет от меня. Для этого определяю на что шлются NAK-и.

2. Если на IN, то шлю 0й пакет.

3. Если на OUT, то шлю ACK (завершаю транзакцию)

 

Делаю так, т.к. сталкивался с тем, что разрешённый к отправке пакет данных 0й длины воспринимался хостом как подтверждение для следующей SETUP-ной транзакции. Т.е. хост разбирался с длиной данных и без 0-го пакета, завершал эту транзакцию, начинал следующую (слал SETUP и IN), и получал разрешённый к отправке 0й пакет, оставшийся от предыдущей транзакции. И считал его управляющим чтением.

 

В стандарте как-то расплывчато сказано, что этот 0й пакет может потребоваться, а может и не потребоваться. Мне кажется, что 0й пакет не требуется если хост знает длину данных, которые д.б. переданы ему. А если не знает, то ориентируется по 0-му пакету (или по пакету не максимальной длины). Вроде логично. Но на железке не проверял. Всё както некогда. М.б. вы разберётесь? Тогда отпишите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

NAK-ать можно всегда (5 сек), кроме как на SETUP.

 

При входной (для хоста) посылке хост шлёт пакет данных 0й длины с маркером DATA1. На него тоже можно слать NAK (до ACK).

 

Важен размер буфера контрольного канала (EP0), описанный в дескрипторе DEVICE. В случае кратности данных его размеру здесь все рекомендуют слать пакет 0й длины. Но лично я в таком случае делаю так:

1. Смотрю (на NAK-ах), что хост хочет от меня. Для этого определяю на что шлются NAK-и.

2. Если на IN, то шлю 0й пакет.

3. Если на OUT, то шлю ACK (завершаю транзакцию)

 

Делаю так, т.к. сталкивался с тем, что разрешённый к отправке пакет данных 0й длины воспринимался хостом как подтверждение для следующей SETUP-ной транзакции. Т.е. хост разбирался с длиной данных и без 0-го пакета, завершал эту транзакцию, начинал следующую (слал SETUP и IN), и получал разрешённый к отправке 0й пакет, оставшийся от предыдущей транзакции. И считал его управляющим чтением.

 

В стандарте как-то расплывчато сказано, что этот 0й пакет может потребоваться, а может и не потребоваться. Мне кажется, что 0й пакет не требуется если хост знает длину данных, которые д.б. переданы ему. А если не знает, то ориентируется по 0-му пакету (или по пакету не максимальной длины). Вроде логично. Но на железке не проверял. Всё както некогда. М.б. вы разберётесь? Тогда отпишите.

 

 

есть подозраение что если возвращаешь даные той длинны что запрашивал хост, то пакет не нужен, А если с длинной меньшей заданной, то нужен в случае кратности. Просто в кристалах типа ЛПЦ и прочих с контроллером усб внутри, уровень пидов пакетов недоступен, кристал многое от механизма берет на себя. Я даже не могу выбрать с дата1 или дата0 уйдет пакет нулевой длинны, это делает сам кристалл... Так что я все равно не смогу разобраться...

 

Спасибо ваши ответы мне помогли.

 

Помнится Вы говорили что знаете USB и работали с MCU большого количества производителей.

А теперь задаете вопросы, на которые я могу только сказать, что повторять не буду, и посоветую почитать таки USB спецификацию и мануал на LPC.

 

Обещаное прилагаю, хотя вряд-ли Вам это поможет. В названных мною примерах это все есть.

 

Да вы правы, ваш пример мне действительно не очень интересен. Вы не смогли ответить ни на один вопрос до этого с первого раза, даже сейчас вы ответили не на поставленный вопрос, а на что-то опять вами понятое...

 

Сделали ваш прибор на основе примера с ошибками, и считаете это нормальным подходом? Потом будете создавать темы из раздела, после 5 часов работы, система перестает отвечать на запросы, и обсуждать проблемы винды и юникса... По вашим ответам ясно что полного понимания работы вы не имеете, поэтому и опыт ваш не очень интересен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сделали ваш прибор на основе примера с ошибками, и считаете это нормальным подходом?

Может укажете мне, где в примерах от NXP 100%-ная ошибка? А в моем файле?

Или Вы считаете ошибками все, что не преподносит Вам готовое решение Вашей задачи? Смею Вас огорчить, пример - это не решение, а всего лиш подсказка.

Как-то Ваши вопросы не укладываются в Ваши же утверждения об Вашем опыте и знаниях всего и вся.

 

[DELETED]

Изменено пользователем IgorKossak

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...Спасибо ваши ответы мне помогли....

Да вы правы, ваш пример мне действительно не очень интересен. Вы не смогли ответить ни на один вопрос до этого с первого раза, даже сейчас вы ответили не на поставленный вопрос, а на что-то опять вами понятое...

 

... По вашим ответам ясно что полного понимания работы вы не имеете, поэтому и опыт ваш не очень интересен!

 

Оценка Вашего профессионального уровня - дело Ваших работодателей или заказчиков, но с воспитанием и культурой общения у Вас точно не очень...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый galjoen

 

Не подскажете ли мне еще по стандарту, состояния суспенд и ресет это состояния которые вызываются не посылками а состоянием шины.

 

Если хост требует суспенда от устройства (может ли он это делать), обязано ли устройство переходить в суспенд режим? А если не обязано и не хочет, что оно должно ответить? Как подать сигнал невозможносоти операции?

 

хочу понять чтобы понять есть ли у ЛПЦ такие возможности :))))))))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемый galjoen

 

Не подскажете ли мне еще по стандарту, состояния суспенд и ресет это состояния которые вызываются не посылками а состоянием шины.

Лично моё мнение, что суспенд создан ТОЛЬКО: 1. для экономии электроэнергии потребляемой устройством от USB и 2. для индикации, что нет связи с хостом. В суспенд устройство переходит в случае неполучения SOF от хоста в течении 3 мс. Т.е. при наличии внешнего питания - если связь с хостом пропала, а действительно суспенд или просто выдернули шнур в этом случае различить со стороны устройства невозможно. Различие будет только при последующем включении устройства. Из суспенда выйдет без сброса настроек. А при втыкании пройдёт через ресет, сетадрес и т.д.

1. Если хост требует суспенда от устройства (может ли он это делать), обязано ли устройство переходить в суспенд режим?

2. А если не обязано и не хочет, что оно должно ответить? Как подать сигнал невозможносоти операции?

 

3. хочу понять чтобы понять есть ли у ЛПЦ такие возможности :))))))))

1. Хост не может требовать суспенд от устройства. По крайней мере хост не может отличить суспенд и рабочий режим устройства без посылки к.л. маркеров. Но если он посылает маркеры, то сам не в режиме суспенд. Фактически стандарт требует, чтобы при отсутствии к.л. маркеров от хоста (в т.ч. SOF) в течении 3 мс устройство потребляло не более 0.5 ма от USB. А при последующем выходе из суспенда по стандарту устройству будет дано время на пробуждение (реально выдерживается не всеми хостами).

 

2. Непонятно зачем. Но есть сиглал пробуждения от устройства - ресуме. В win есть галка разрешающая устройству будить хост и весь компьютер. Я не пользовался т.к. не было таких задач.

 

3. Возможности такие д.б. Даже если их нет, то всё это реализуемо програмно. Самое сложное тут потреблять 0.5 ма от USB (при отсутствии внешнего питания). Обязательно приходится выключать тактовый генератор.

 

А вообще я согласен с Axel, и призываю отказаться от оценок уровней и прочего флуда в этой теме.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лично моё мнение, что суспенд создан ТОЛЬКО: 1. для экономии электроэнергии потребляемой устройством от USB и 2. для индикации, что нет связи с хостом. В суспенд устройство переходит в случае неполучения SOF от хоста в течении 3 мс. Т.е. при наличии внешнего питания - если связь с хостом пропала, а действительно суспенд или просто выдернули шнур в этом случае различить со стороны устройства невозможно. Различие будет только при последующем включении устройства. Из суспенда выйдет без сброса настроек. А при втыкании пройдёт через ресет, сетадрес и т.д.

 

1. Хост не может требовать суспенд от устройства. По крайней мере хост не может отличить суспенд и рабочий режим устройства без посылки к.л. маркеров. Но если он посылает маркеры, то сам не в режиме суспенд. Фактически стандарт требует, чтобы при отсутствии к.л. маркеров от хоста (в т.ч. SOF) в течении 3 мс устройство потребляло не более 0.5 ма от USB. А при последующем выходе из суспенда по стандарту устройству будет дано время на пробуждение (реально выдерживается не всеми хостами).

 

2. Непонятно зачем. Но есть сиглал пробуждения от устройства - ресуме. В win есть галка разрешающая устройству будить хост и весь компьютер. Я не пользовался т.к. не было таких задач.

 

3. Возможности такие д.б. Даже если их нет, то всё это реализуемо програмно. Самое сложное тут потреблять 0.5 ма от USB (при отсутствии внешнего питания). Обязательно приходится выключать тактовый генератор.

 

А вообще я согласен с Axel, и призываю отказаться от оценок уровней и прочего флуда в этой теме.

 

3. В этом и проблема, совершенно нет возможности переходить всей схемой в малое потребление. Поэтому и думал можно ли как нибудь от этого отказаться, при этом не нарушить стандарт...

 

Про флуд я только за! Вы еще не видели неотредактирвоаных постов.

Моя позиция если знаешь овтет, - ответь, если не знаешь не высказывайся... А высказываться не разобравшись в вопросе - не уважать себя и колег.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3. В этом и проблема, совершенно нет возможности переходить всей схемой в малое потребление. Поэтому и думал можно ли как нибудь от этого отказаться, при этом не нарушить стандарт...

Решение есть, я пользуюсь, но подсказывать не буду т.к. оно принадлежит фирме и я обещал не разглашать. Но если получше изучите стандарт - можете додуматься сами. Но и в этом случае прошу особо не распостраняться... Конкурентное преимущество всётаки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Решение есть, я пользуюсь, но подсказывать не буду т.к. оно принадлежит фирме и я обещал не разглашать. Но если получше изучите стандарт - можете додуматься сами. Но и в этом случае прошу особо не распостраняться... Конкурентное преимущество всётаки.

 

 

Я заинтригован:))) Не это не тот уровень разработки не будут посягать на ваши наработки:),

я думаю на начальных этапах игнорировать этот сигнал... Это же для экономии энергии, в винде хост еще же не умеет отключать устройтсва из-за преувеличеного потребления (надеюсь:)))). Читал где то что усб 3.0 так будет уметь, но до него надо еще дожить...

 

Спасибо.

 

 

 

Практически все вопросы по ЛПЦ выяснил, остался последний.

Надо ли обнулять Клеар регистры после(перед) записью в них.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это же для экономии энергии, в винде хост еще же не умеет отключать устройтсва из-за преувеличеного потребления (надеюсь:)))).

Хаб у меня отключает со свистом. Правда, только при КЗ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хаб у меня отключает со свистом. Правда, только при КЗ.

 

Предохранитель? Или вы мониторите порты на потребление?

 

Вот вопрос%( не использовать ваш хаб, или по уму запарится и сделать суспенд режим... Эм... что же выбрать:))))) Учитывая внутренее использование, не использовать хаб победило:)!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Предохранитель? Или вы мониторите порты на потребление?

Хаб не мой, он в монитор встроен. А отключает винда с криком: "Power surge on port X".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хаб не мой, он в монитор встроен. А отключает винда с криком: "Power surge on port X".

 

Понятно, будем делать по уму значит...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понятно, будем делать по уму значит...

По уму конечно лучше, сам так сделал. Но у меня ещё от ионистора всё это питатся может (без подключения к USB).

Но вот если мышку рассмотреть. Обычную оптическую. Она в режиме суспенд свой красный светодиод не выключает. Неужели там меньше 0.5 ма? Думаю, что больше (хотя не мерял). А кто нибудь встречал чтоб комп на мышку в суспенде ругался? Или в USB 3.0 будет? И всё это задумано с целью нас всех заставить мышки поменять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...