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

Проблема с USB на плате с PIC18F4550

Гость SUPPORT7/6

Здравствуйте. Собрал на базе примера 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 см и сегодня и завтра попробую с разными кабелями.

 

Всё равно, может кто сталкивался с подобным - намекните хотя бы куда рыть. В инете на тему аналогичной моей проблемы вообще ничего нет

 

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


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

Гость SUPPORT7/6

Если кому поможет - предварительные опыты показали что проблема в 2-х из 4-х кабелей USB-miniUSB. Вчера целый день без проблем отработал нонейм кабель шедший с неким кард-ридером, но длинною около 50 см.

Грешу также на то что мои дорожки от чипа до miniUSB длиною около по 7 см каждая - это тоже может играть. Думаю на следующем образце сделаю экран между ними в виде земли - прочитал вчера что так надо делать

 

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


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

Грешу также на то что мои дорожки от чипа до miniUSB длиною около по 7 см каждая - это тоже может играть. Думаю на следующем образце сделаю экран между ними в виде земли - прочитал вчера что так надо делать

 

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

 

По факту, т.к. скорость у вас FullSpeed - то частота сигналов всего 12МГц - что там экранировать?

Скорее всего надо поставить бусину в 5В и защитные диоды на D+ D-.

Вероятно резисторы последовательно в D+ D- по 33 Ома.

Можно бусину в приходящую по кабелю землю, но с малым сопротивлением на 12МГц - обратка от D+ D- по земле идёт.

 

Ток у вас какой пиковый по 5В? А конденсатор входной?

Если кабель с большим сопротивлением (>0.1 Ома ) то 5.12В из компа может просесть на вашей плате ниже 4.5...

На кабеле накладки ферритовые есть?

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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