Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Продукция MICROCHIP

Продукция MICROCHIP Технические вопросы по всей продукции Microchip

Ответ
 
Опции темы Опции просмотра
Старый 07.02.2010, 13:57   #1
themaster
Junior Member
 
Регистрация: 16.10.2009
Возраст: 20
Сообщений: 10
Вес репутации: 100/40
themaster will become famous soon enoughthemaster will become famous soon enough
Question USB + PIC18F4550, не понял, как работает

Решил перевести своё СОМ-устройство на USB. К делу хочется подойти основательно, посему проштудировал фолиант USB System Architecture от Don Anderson, просмотрел datasheet на устройство, после чего сел курить исходники, которые идут в примерах. Хочется задать знатокам пару вопросов в стиле "как оно работает и почему так, а не иначе".
1. В главной функции написано примерно следующее:
Код:
int main(void)
{   
    InitializeSystem();
    USBDeviceAttach();
    while(1)
    {
      .... // ну, и так далее...
То есть, сначала идёт инициализация, в конце которой указывается, что USBDeviceState = DETACHED_STATE. Потом выполняется следующая функция, СРАЗУ после которой устройство становится ATTACHED_STATE. В фолианте написано, что устройство должно дождаться, пока Его Величество Хост не соизволит снизойти до него по всей иерархии хабов и обратить внимание... я нигде не увидел функции, которая задаёт ожидание! Я плохо смотрел?
2. Кусок кода, который включает модуль USB:
Код:
        while(!U1CONbits.USBEN)
            U1CONbits.USBEN = 1;  // Enable module & attach to bus
То есть, бит включения модуля нельзя просто взять и поставить? В datasheet'е об этом вроде не сказано. Или я плохо смотрел datasheet? А это - и есть ожидание, о котором спрашивается в первом пункте?
3. Довольно много где встречается директив условной комплияции USB_SUPPORT_OTG. Что такое OTG - написано в Википедии. В datasheet'е по устройству ничего про него не написано; то есть, его нет, и соответствующие куски текста можно выкинуть, да?
themaster вне форума   Ответить с цитированием
Старый 07.02.2010, 14:33   #2
Machine slave
Senior Member
 
Аватар для Machine slave
 
Регистрация: 18.01.2008
Возраст: 37
Сообщений: 4,264
Вес репутации: 2731/115
Machine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond reputeMachine slave has a reputation beyond repute
По умолчанию Re: USB + PIC18F4550, не понял, как работает

Цитата:
Сообщение от themaster Посмотреть сообщение
Решил перевести своё СОМ-устройство на USB. К делу хочется подойти основательно, посему проштудировал фолиант USB System Architecture от Don Anderson, просмотрел datasheet на устройство, после чего сел курить исходники, которые идут в примерах. Хочется задать знатокам пару вопросов в стиле "как оно работает и почему так, а не иначе".
1. В главной функции написано примерно следующее:
Код:
int main(void)
{   
    InitializeSystem();
    USBDeviceAttach();
    while(1)
    {
      .... // ну, и так далее...
То есть, сначала идёт инициализация, в конце которой указывается, что USBDeviceState = DETACHED_STATE. Потом выполняется следующая функция, СРАЗУ после которой устройство становится ATTACHED_STATE. В фолианте написано, что устройство должно дождаться, пока Его Величество Хост не соизволит снизойти до него по всей иерархии хабов и обратить внимание... я нигде не увидел функции, которая задаёт ожидание! Я плохо смотрел?
2. Кусок кода, который включает модуль USB:
Код:
        while(!U1CONbits.USBEN)
            U1CONbits.USBEN = 1;  // Enable module & attach to bus
То есть, бит включения модуля нельзя просто взять и поставить? В datasheet'е об этом вроде не сказано. Или я плохо смотрел datasheet? А это - и есть ожидание, о котором спрашивается в первом пункте?
3. Довольно много где встречается директив условной комплияции USB_SUPPORT_OTG. Что такое OTG - написано в Википедии. В datasheet'е по устройству ничего про него не написано; то есть, его нет, и соответствующие куски текста можно выкинуть, да?
Если USB еще не включено, то включить модуль USB. после этого включаются внутренние подтяжки линий D+/D- в зависимости от скорости Low speed или Full speed, предварительно настроенные в регистре UCFG. Хост определяет подключение устройства к шине именно по подтяжке.
Да в в семействе 18Fx55x нет OTG. Это есть в PIC24 и PIC32.
Machine slave вне форума   Ответить с цитированием
Старый 08.02.2010, 01:57   #3
Petya
Senior Member
 
Регистрация: 30.11.2008
Адрес: SPb
Сообщений: 150
Вес репутации: 238/45
Petya has a spectacular aura aboutPetya has a spectacular aura aboutPetya has a spectacular aura about
По умолчанию Re: USB + PIC18F4550, не понял, как работает

1. Ожидание - это время с момента подключения (state = ATTACHED_STATE) до сброса (state = DEFAULT_STATE) . Оно кончается в момент установки флага URSTIF (периодически проверяется в UsbDeviceTasks())
2. Возможно, в какой-нибудь errat'е есть что-то об этом.

Последний раз редактировалось Petya; 08.02.2010 в 02:04.
Petya вне форума   Ответить с цитированием
Старый 08.02.2010, 02:17   #4
Vlad&mir
Senior Member
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 1,720
Вес репутации: 4407/103
Vlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond reputeVlad&mir has a reputation beyond repute
По умолчанию Re: USB + PIC18F4550, не понял, как работает

Цитата:
Сообщение от themaster Посмотреть сообщение
3. Довольно много где встречается директив условной комплияции USB_SUPPORT_OTG. Что такое OTG - написано в Википедии. В datasheet'е по устройству ничего про него не написано; то есть, его нет, и соответствующие куски текста можно выкинуть, да?
Вы даже не представляете, сколько там "можно выкинуть". http://upload.caxapa.ru/USB_CDC.rar
Vlad&mir вне форума   Ответить с цитированием
Старый 08.02.2010, 03:09   #5
Petya
Senior Member
 
Регистрация: 30.11.2008
Адрес: SPb
Сообщений: 150
Вес репутации: 238/45
Petya has a spectacular aura aboutPetya has a spectacular aura aboutPetya has a spectacular aura about
По умолчанию Re: USB + PIC18F4550, не понял, как работает

Цитата:
Сообщение от Petya Посмотреть сообщение
1. Ожидание - это время с момента подключения (state = ATTACHED_STATE) до сброса (state = DEFAULT_STATE) . Оно кончается в момент установки флага URSTIF (периодически проверяется в UsbDeviceTasks())
2. Возможно, в какой-нибудь errat'е есть что-то об этом.
не то написал: не с момента подключения у-ва, а с момента подключения подт. резистора (state = POWERED_STATE)
Petya вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Модификация usb firmware для pic18 Petya Продукция MICROCHIP 25 24.12.2010 16:28
PIC18F4550 и USB как виртуальный COM Batov Продукция MICROCHIP 52 12.01.2009 23:09
не заводится USB Black_Angel Вопросы начинающих 19 19.12.2008 12:37
Не работает умножение переменных в PIC18F2520!!! WildFrog Вопросы начинающих 11 06.08.2008 10:20
PIC18F4550. Программирование USB. VostokBoy Продукция MICROCHIP 9 03.06.2008 08:12


Часовой пояс GMT +3, время: 23:28.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd. Перевод: zCarot