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

 
 
 
Reply to this topicStart new topic
> Проблема с USB на плате с PIC18F4550
Ildar Belkin
сообщение Dec 6 2016, 12:54
Сообщение #1


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

Группа: Участник
Сообщений: 129
Регистрация: 12-08-11
Пользователь №: 66 701



Здравствуйте. Собрал на базе примера CDC- basic USB девайс Full-Speed USB 2.0 на PIC18F4550 с эмуляцией COM-порта. Железка тупо либо по команде включает одно из реле либо в ответ на команду получает текущее время от RTCC по I2C и отдает инфу в USB. Все работает и посылается проблем нет. НО! спонтанно возникает проблема того что девайс по непонятной причине отключается при очередном нажатии на любую клавишу терминала на компе предположительно под Win7/Server 2008R2.
Драйвера все родные. Пакет MLA самый последний. Поставил сниффер USB и обнаружил что мой девайс по какой-то причине посылает сам без инициации от терминальной программки (Putty) BULK трансфер с 0-ым количеством байт со статусом 0xc00000004, после чего нажав на любую клавишу в терминалке - она отваливается, но само устройство остается в Диспетчере оборудования, однако, уже заново к нему нельзя подключиться.


Вот пакет:
000592: Bulk or Interrupt Transfer (UP), 2016-12-06 15:40:24,5811831 +1741,2981226. (1. Device: USB Serial Port (COM9)) Status: 0xc0000004
Pipe Handle: 0x9bb02f8 (Endpoint Address: 0x82)
Get 0x0 bytes from the device

Попытка заново подключится - Unable to configure device. что то такое...
Причем в Диспетчере - работает нормально. И сам ПИК не висит - поставил прерывания на светодиодик и реакцию на кнопочку.

За более 3х недель поисков не нашел никакой зависимости от каких-либо моих действий или бездействий
вот что делал:
1. Отключал и app_device_cdc_demo - чтобы девайс вообще ничего не остылал и никак не реагировал на посылаемые данные от хоста.
2. Увеличил клокинг core с 20 МГц напрямую кварца до 48МГц через PLL (думал не хватает производительности)
3. До минимума убрал все переменные дабы исключить случайное перекрывание памяти банков RAM 0x400-0x500 которые юзаются USB-стеком
4. Удалил код до минимума. Короче оставил фактически собственно сам оригинал только убрав кнопки и леды которые мне не нужны.
5. Пробовал разные компы с Win7/Server2008R2 и т.п.
6. Проверил Питание 5.0В на всех компах. Помехи осциллом однако не проверял

Один фиг всё что выше никак не повлияло на устранение или изменение характера появления ошибки.

Дома на компе с WinXP и роутере TPLink 3020 c OpenWRT(самой последней на вчера прошивкой) попробовал тоже подключать девайс - и вот почему то там ни на XP ни на Linux проблемы я ни разу не обнаружил. Поставил тот же сниффер на XP и этого "пустого" финального пакета от устройства тоже ни разу за каждодневные поиски и работы не нашел. Устройство работает стабильно в течение как минимум 8-12 часов что на XP что на OpenWRT через /dev/ttyACM0.

Сегодня обнаружил вот такое интересное дело. У меня 4 разных кабеля usb-миниusb. На работе подключаюсь либо через кабель от кард-ридера. И случайно решил подключить устройство через оригинальный красный кабель от PICKIT3. Мое удивление: - мой девайс что с моей программой что с оригом CDC-Basic Example пишет в Диспетчере - Unknown Device. Тут же в том же порте USB сервака 2008 или Win7 втыкаю кабель usb-miniusb от кард-ридера - все окей. Причем сам PICKIT3 работает от своего красного кабеля великолепно в течение уже нескольких лет пользования. Равно кстати как и от кардридеровского кабеля.
Вот теперь задумался - может я что-то нарушил с разводкой на плате с пинами USB? Было ли у кого что подобное и кто как экранирует USB разъем на плате своих устройств. Экранируете ли вы дорожки от MCU до разъема и вообще интересно было бы мне знать кто с чем сталкивался.
Дома пробовал только через кабель от ридера. Сегодня решил попробовать на XP все кабели. Может я тупо ищу ошибку в воздухе.

Ради справедливости замечу что с CDC Basic Example я и ни разу тоже ошибки подобной не получил, но и не тестил долго. что собственно вот в данный момент и делаю

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

Всё равно, может кто сталкивался с подобным - намекните хотя бы куда рыть. В инете на тему аналогичной моей проблемы вообще ничего нет
Go to the top of the page
 
+Quote Post
Ildar Belkin
сообщение Dec 8 2016, 05:36
Сообщение #2


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

Группа: Участник
Сообщений: 129
Регистрация: 12-08-11
Пользователь №: 66 701



Если кому поможет - предварительные опыты показали что проблема в 2-х из 4-х кабелей USB-miniUSB. Вчера целый день без проблем отработал нонейм кабель шедший с неким кард-ридером, но длинною около 50 см.
Грешу также на то что мои дорожки от чипа до miniUSB длиною около по 7 см каждая - это тоже может играть. Думаю на следующем образце сделаю экран между ними в виде земли - прочитал вчера что так надо делать
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Dec 8 2016, 07:11
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 087
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(Ildar Belkin @ Dec 8 2016, 08:36) *
Грешу также на то что мои дорожки от чипа до miniUSB длиною около по 7 см каждая - это тоже может играть. Думаю на следующем образце сделаю экран между ними в виде земли - прочитал вчера что так надо делать


Интересно, кто это советует "типа дифференциальную" пару сигналов отделять друг от друга землёй?

По факту, т.к. скорость у вас FullSpeed - то частота сигналов всего 12МГц - что там экранировать?
Скорее всего надо поставить бусину в 5В и защитные диоды на D+ D-.
Вероятно резисторы последовательно в D+ D- по 33 Ома.
Можно бусину в приходящую по кабелю землю, но с малым сопротивлением на 12МГц - обратка от D+ D- по земле идёт.

Ток у вас какой пиковый по 5В? А конденсатор входной?
Если кабель с большим сопротивлением (>0.1 Ома ) то 5.12В из компа может просесть на вашей плате ниже 4.5...
На кабеле накладки ферритовые есть?
Go to the top of the page
 
+Quote Post
gerber
сообщение Dec 8 2016, 07:19
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 1-11-11
Пользователь №: 68 088



А ещё лучше - конденсаторы 22-27 пФ с каждой линии D+, D- на "землю".


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th August 2017 - 14:26
Рейтинг@Mail.ru


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