реклама на сайте
подробности

 
 
> Ob_Dev (USB_hardware), Вопросы по аппаратной части
RomanRom
сообщение Mar 22 2006, 16:00
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 231
Регистрация: 14-02-05
Пользователь №: 2 635



1) Зачем в некоторых схемах ставят подтягивающий резистор 1 МОм на питание и D+?
2) Какой разброс могут иметь последовательные резисторы по D+, D- (68-200 Ом или как)? Они должны быть одинаковыми по сопротивлению или могут быть разными?
3) При питании 3,5 В ставят ATmega8L и кварц 12 МГц. Это расчет на технологический запас?
4) В некоторых схемах сигнал INT0 соединяется еще с одной линией контроллера. В некоторых схемах обходятся одним INT0. С программной точки зрения что лучше (быстрее)?
5) При питании 5 В в HID_Keys линии D+, D- почему-то не шунтируют стабилитронами 3,3 В (или у них и так работает)?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
osnwt
сообщение Mar 22 2006, 18:45
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Поскольку мнения разделились - отвечу еще и я :-)

Цитата
1) Зачем в некоторых схемах ставят подтягивающий резистор 1 МОм на питание и D+?

Для устройств с собственным питанием (self-powered) это предотвращает от ловли помех и, как следствие, моргания Int0. При отсутствии сигнала на шине (при отключенном устройстве) можно получить зацикливание драйвера.

Подтянуть его pull-up'ом нельзя. Наличие резистора от D+/D- используется контроллером USB хоста для определения типа USB устройства (low-speed/full speed/disconnected). Наличие pull-up может помешать этому. Начиная с IAR-версии драйвера, введены макро usbDeviceConnect/Disconnect. Имеется в виду, что 1.5 килоома pullup можно включать не на VBUS, а на порт. И тогда подачей туда 1 или переключением в Z состояние можно управлять подключением и отключением устройства по желанию. Предположительно, это должно работать только для 5-вольтового питания, так как цеплять надо на 5 вольт (VBUS), а не на 3.3.

Понимаю желание "по быстрому" дешево и сердито сваять USB девайс. Но иногда полезно почитать спецификации, там многое можно почерпнуть.

Цитата
2) Какой разброс могут иметь последовательные резисторы по D+, D- (68-200 Ом или как)? Они должны быть одинаковыми по сопротивлению или могут быть разными?

Это согласование с шиной. Можно выкинуть при коротком USB шнуре. Про это тоже написано в комментариях, как верно было подмечено. Да и на длинном можно выкинуть, на самом-то деле, для наших скоростей. Но тогда стабилитроны тоже ставить нельзя при 5 вольт питании.

А какой смысл делать разные резисторы?

Цитата
3) При питании 3,5 В ставят ATmega8L и кварц 12 МГц. Это расчет на технологический запас?

Да, в серию ставить не следует.

Цитата
4) В некоторых схемах сигнал INT0 соединяется еще с одной линией контроллера. В некоторых схемах обходятся одним INT0. С программной точки зрения что лучше (быстрее)?

Ответ на этот вопрос я косвенно уже писал на этом форуме.

С программной точки зрения нет никакой разницы. Разница с точки зрения аппаратной. Нам нужен Int0, и нужна нулевая линия порта (принципиально). Хорошо вешать это на один порт и экономить пин. Но на порту с Int0 нулевой бит - это RxD. Потому его стараются не занимать.

Если RxD не нужен, то можно использовать его для D-, и бит2 (Int0) - для D+.

Никаких аналоговых компараторов при анализе сигнала не используется. Более того, использован только один бит вместо проверки противофазных сигналов. Сделать "по правильному" программно невозможно. Но для low-speed устройств это не очень критично. Тем более, что CRC пакетов на приеме тоже не считается smile.gif - надо использовать проверку правильности пакетов на уровне приложения. И это описано в комментариях.

Цитата
5) При питании 5 В в HID_Keys линии D+, D- почему-то не шунтируют стабилитронами 3,3 В (или у них и так работает)?

Вся эта схема в той или иной степени нарушает стандарты USB. В какой - частично документировано. На шине D+/D- должны быть сигналы в 3.3 вольта. Со стороны хоста это, как считается, выдерживается (иначе при трехвольтовом питании на пинах AVR будет больше, чем его питание - опасно для контроллера). Со стороны AVR это выдерживается при питании 3.3 вольта. Стабилитроны с резисторами (это второе назначение последних) обеспечивают ограничение выходных уровней со стороны AVR при 5-вольтовом питании последнего.

С другой стороны, стандарт USB оговаривает, что и хост, и устройства обязаны выдерживать любое замыкание чего угодно на что угодно - на плюс 5, на землю, между собой, и т.п. Потому хост обязан выдержать и 5 вольт, что и использовано в HID_Keys. Правда, большинство дешевых материнок не содержат защиты от коротыша по питанию в USB устройстве. Так что тут еще вопрос, какое отклонение от стандарта более "неправильно".

Сообщение отредактировал osnwt - Mar 22 2006, 18:50
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 09:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01393 секунд с 7
ELECTRONIX ©2004-2016