USB - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: demanik 
Форум Picbasic.ru » Программирование МК » Proton PicBasic » USB (Зависает программа в пике при выдергивание усб...)
USB
OKLiK Дата: Чт, 18.11.2010, 16:39  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 19.02.2010

Статус: Offline

Ситуация такая, когда включаешь микроконтроллер, программа работает без проблем, подключаешь шнурок усб, все тоже нормально, но стоит выдернуть шнурок и выполнение программы в пике зависает, снова подключаешь, работает. Как решить проблему, чтобы программа в пике продолжала работать дальше при отключенном усб шнурке? Сталкивался кто либо, с этим? cool
ЯНДЕКС Дата: 18.11.2010
ADMIN Дата: Чт, 18.11.2010, 18:46  |                                                                                                                Сообщение # 2
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1097
Репутация: 24   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Quote (OKLiK)
Как решить проблему, чтобы программа в пике продолжала работать дальше при отключенном усб шнурке?

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

OKLiK Дата: Чт, 18.11.2010, 19:18  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 19.02.2010

Статус: Offline

После долгих тыканий, выяснилось, что причина в передаче, что использовать команду USBOut нельзя при отключенном шнурке, поскольку зависает на отправке... Но тут, так, что если во время передачи отключить шнурок, то пик повиснет до следующего подключения wacko
Теперь другой вопрос возник, как определить, перед отправкой, подключен ли шнурок или нет?
chiper Дата: Чт, 18.11.2010, 21:52  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Quote (OKLiK)
ем, подключаешь шнурок усб, все тоже нормально, но стоит выдернуть шнурок и выполнение программы в пике зависает, снова подключаешь, работает. Как решить проблему, чтобы программа в пике продолжала работать дальше при отключенном усб шнурке? Сталкивался кто либо, с этим?

Проще простого!

Подвешиваешь через резистор 1К к любому выводу порта ПИКа +5 вольт от USB, в то же время подвешиваешь этот вывод к gnd через резию на 10К ...

потом условие IF [порт].[# вывода порта] = 1 then ......... и дальше идёт твой алгоритм для отправки на USB


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Сообщение отредактировал chiper - Чт, 18.11.2010, 22:14
chiper Дата: Чт, 18.11.2010, 22:03  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Вот иллюстрировал для наглядности smile

Хочется ещё увидеть Вашу программу... Лично я даже и не знал что не бейсике можно писать под USB, и для этого даже есть специальная библиотека sad

Прикрепления: 2307461.jpg(22Kb)


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Сообщение отредактировал chiper - Чт, 18.11.2010, 22:13
DAlexV Дата: Чт, 18.11.2010, 22:35  |                                                                                                                Сообщение # 6
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 691
Репутация: 17   ±
Замечания:   ±
На сайте с 13.05.2008

Статус: Offline

Quote (OKLiK)
Теперь другой вопрос возник, как определить, перед отправкой, подключен ли шнурок или нет?

Тем же IF тестим состояние USB модуля перед отправкой или приемом. У 18f4550 UCON.bit 3(USB Module Enable bit)

1 = USB module and supporting circuitry enabled (device attached)(усб модуль и поддержка схемы включена(устройство подсоединено))
0 = USB module and supporting circuitry disabled (device detached)(наоборот)


Будьте оригинальны - не повторяйте чужих ошибок !!!!
Пишу только на Рыбе (SwordFish). Другую пищу не предлагать, на шерсть влияет :)
OKLiK Дата: Сб, 20.11.2010, 10:42  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Новенький
Сообщений: 8
Репутация: 0   ±
Замечания:   ±
На сайте с 19.02.2010

Статус: Offline

Quote (chiper)
Проще простого!
Подвешиваешь через резистор 1К к любому выводу порта ПИКа +5 вольт от USB, в то же время подвешиваешь этот вывод к gnd через резию на 10К ...
потом условие IF [порт].[# вывода порта] = 1 then ......... и дальше идёт твой алгоритм для отправки на USB

Я по чему то сразу это заложил в схему, при этом есть одна проблема, когда втыкаешь шнурок, то программа сразу видит что подключено, и туд же начинает передавать данные и повисает, поскольку усб еще не полностью активирован, получается программа висит 1-2 секунды, а это не гуд. Но я дописал прогу с условием того, чо, если шнурок подключен, то ждем еще пару секунд до прохождения всех процессов, и только тогда можно передавать, это сработало. Но тут столкнулся с другой проблемой, если шнурок воткнут, и комп выключен, то все хорошо, включаю комп и тут начались снова те же проблемы, пик висит до момента пока винда не загрузит драйвер, а это секунд 10-15... жуть просто :))))

Quote (chiper)
Хочется ещё увидеть Вашу программу... Лично я даже и не знал что не бейсике можно писать под USB, и для этого даже есть специальная библиотека

Здесь в статьях есть хороший видео урок по этому поводу, рекомендую поглядеть wink

Добавлено (20.11.2010, 08.18.34)
---------------------------------------------

Quote (DAlexV)
Тем же IF тестим состояние USB модуля перед отправкой или приемом. У 18f4550 UCON.bit 3(USB Module Enable bit)
1 = USB module and supporting circuitry enabled (device attached)(усб модуль и поддержка схемы включена(устройство подсоединено))
0 = USB module and supporting circuitry disabled (device detached)(наоборот)

Спасиб за подсказку, выкачал из инета книшку "Микроконтроллеры Microchip с аппаратной поддержкой USB" немного подробней изучу этот вопрос!

Добавлено (20.11.2010, 10.42.17)
---------------------------------------------

Quote (DAlexV)
UCON.bit 3(USB Module Enable bit)

К сожалению, этот бит тоже не дал нужного результата, а другие не способны помочь, этот бит говорит, что устройство подключено, или отключено, но если хост не готов принимать данные то пик висит до пока хост будет готов.... sad

Сообщение отредактировал OKLiK - Сб, 20.11.2010, 07:56
chiper Дата: Сб, 20.11.2010, 11:42  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Новая идея появилась.... может перед отправкой каким то образом опрашивать шину о готовности? Например начинать не с отправки данных а с получения первого потока со стороны ПК. Даже не знаю как это программно реализовать... Но если вы замечали на большинстве флешек не загорается светодиод до тех пор пока не установится драйвер и устройство не будет готово к работе.

Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Сообщение отредактировал chiper - Сб, 20.11.2010, 11:43
Форум Picbasic.ru » Программирование МК » Proton PicBasic » USB (Зависает программа в пике при выдергивание усб...)
Страница 1 из 11
Поиск: