USB и PIC18f4550

Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить
llaska
Родился
Сообщения: 2
Зарегистрирован: Чт фев 17, 2011 12:26:59

USB и PIC18f4550

Сообщение llaska »

Есть ПК, есть PIC18f4550, c чего нужно начинать, чтобы ПК обнаружил контроллер, как новое СDС-устройство и установил нужный драйвер. Для программирования использую компилятор CCS.
Реклама
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: USB и PIC18f4550

Сообщение urry »

Я бы посоветовал поставить мсс18 и пройтись по этой ссылке http://www.gamma.spb.ru/articles.php?i=29
Реклама
llaska
Родился
Сообщения: 2
Зарегистрирован: Чт фев 17, 2011 12:26:59

Re: USB и PIC18f4550

Сообщение llaska »

С18 -это, конечно, хорошо, но очень нужно на CCS, т.к. на нем много наработок. А про VID Pid можете что-то сказать, их нужно как-то записывать в PIC или они там прописаны уже, если нужно, то как?
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: USB и PIC18f4550

Сообщение urry »

я не знаю ццс - но туда входит заголовочный файл с описаниями дескриптора конфигурации и где-то рядом должен лежать инф файл, где эти вид-пид тоже можно посмотреть. Вообще с ними вопрос интересный - если изделие будет тиражироваться тысячами экземпляров, за использование нужно платить - кому и как - не знаю, тема как-то всплывала на микрочип су.
На казусе были темы по ццс с юсб, спросите там.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Abadonna
Встал на лапы
Сообщения: 98
Зарегистрирован: Сб сен 05, 2009 08:29:53

Re: USB и PIC18f4550

Сообщение Abadonna »

Делал на РIC`е подобное устройство. Правда, не СDC, а... Забыл, как называется :oops: В общем брал за основу микрочипий Solution, в нем уже есть все готовое. Есть примеры различных видов устройств (HID, CDC, Generic и еще что-то). Вот этот-то Generic и повторил, а затем переделал под свтои нужды. Вполне ничего себе получилось :) Если что - пишите в личку, поделюсь, пока окончательно все не забыл :) За основу брал схему PICDEMFSUSB, прошивка и дрова из солюшена, софт - весь свой писался.
Все будет хорошо, я узнавал!
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: USB и PIC18f4550

Сообщение dosikus »

urry писал(а):я не знаю ццс - но туда входит заголовочный файл с описаниями дескриптора конфигурации и где-то рядом должен лежать инф файл, где эти вид-пид тоже можно посмотреть. Вообще с ними вопрос интересный - если изделие будет тиражироваться тысячами экземпляров, за использование нужно платить - кому и как - не знаю, тема как-то всплывала на микрочип су.
На казусе были темы по ццс с юсб, спросите там.
Юра как всегда прав , все лежит в папке Drivers .
Кому надо , меняют vid&pid ... http://www.edaboard.com/thread63404.html
Реклама
Аватара пользователя
dimitriy91
Вымогатель припоя
Сообщения: 619
Зарегистрирован: Ср июн 08, 2011 15:37:56
Откуда: ДВ

Re: USB и PIC18f4550

Сообщение dimitriy91 »

Всем привет. Пишу прошивку на pic18f4550 . Спаял стенд простейший и светодиодами отлаживаю прошивку. RESET отрабатывает успешно . На прерывание по оканчанию транзакции не реагирует, что может быть не так?

выполняю инициализацию :

Код: Выделить всё

/* Функция инициализации модуля USB*/
void init_usb()
{
/* Установим количество передаваемых байт в /из конечной точки 0 */
    BD0CNT = 8;
/* Конфигурируем регистр статуса конечно точки 0 */
    BD0STAT = 0x88;
/* Укажем адрес начала буфера для EP0*/
    BD0ADRL = 0;
    BD0ADRH = 0x05;

 /* В регистр адреса загружаем адрес 0*/
UADDR    = 0;
/* Cконфигурируем регистр UEP0*/
UEP0 = ENDPT_CONTROL;

/* Очистим переменную для хранения запроса к устройству*/
    USB_dev_req   = 0;
 /* Очистим регистр статуса  USTAT*/
    USTAT = 0;
/* Сконфигурируем регистр UCFG */
    UCFG = 0;
/* Включим полную скорость - бит FSEN*/
    UCFG |= 1<<2;

    USB_Interface [0] = 0;
    USB_Interface [1] = 0;
    USB_Interface [2] = 0;    
    USB_Curr_Config   = 0;
    USB_status_device = 1;
        
/* Сконфигурируем регистр UCON */
    UCON = 0;
    /* Включим модуль USB -  бит USBEN */
    UCON = 1<<3;

/* Разрешим прерывание от USB*/
    PIE2 = 1<<5;

/* Сбросим регистр прерываний по состоянию от модуля USB  UIR*/
    UIR = 0;
/* Сконфигурируем регистр разрешения прерываний  UIE*/
    UIE = 1;

/* Сконфигурируем регистр прерываний ошибок  UEIR*/
    UEIR = 0;
/* Сконфигурируем регистр разрешения прерываний из за ошибок UEIE */
    UEIE = 0;


/* Включим глобальное разрешение прерываний*/
    INTCON |= 1<<7;
/* Разрешим прерывание от перефирийных устройств*/
    INTCON |= 1<<6;

    /* Включим встроенные подтягивающие регистры - бит UPUEN */
    UCFG = 1<<4;
    
}

Код: Выделить всё

/* Обработчик прерывания сброса модуля USB */
void USBReset(){
    RB7 = 0;
/* Сбросим все флаги прерывания модуля USB*/
UIR      = 0;
/* Сбросим все флаги прерывания от ошибок  модуля USB*/
UEIR      = 0;
/* Разрешение некоторых видов прерываний от USB (cм init_usb )*/
UIE     = 0x29;
/* В регистр адреса загружаем адрес 0*/
UADDR    = 0;
/* Cконфигурируем регистр UEP0*/
UEP0 = ENDPT_CONTROL;
/* Сбросим буфер FIFO для регистра USTAT ( FIFO  4 байта )*/
while(TRNIF == 1)
TRNIF = 0;

/*### Заполним регистры BDT для ENDPOINT0 ###*/

/* Иинициализируем дескриптор конечной точки 0*/

/* Установим количество передаваемых байт в /из конечной точки 0 */
BD0CNT = 8;
/* Конфигурируем регистр статуса конечно точки 0 */
BD0STAT = 0x8C;
/* Укажем адрес начала буфера для EP0*/
BD0ADRL = 0;
BD0ADRH = 0x05;
USB_status_device = 0;
 
}

Код: Выделить всё

/* Функция селекции прерывания от USB*/
void interrupt_handler_USB()
{

    if(TRNIF)
    {
    USB_end_transact();           
    }
    else
        if(URSTIF)        
        USBReset();          
        else
            if(STALLIF)
            {
            USBStall();            
            }
            else
                if(SOFIF && SOFIE )
                USBSof();

 /* Сбросить флаг прерывания USB  USBIF регистра PIR2   */
//USBIF = 0;

}

Код: Выделить всё

/* Для удобства работы , обвернём указатели в макросы*/
 bank2 unsigned char *_BD0STAT   = 0x400;
 bank2 unsigned char *_BD0CNT    = 0x401;
 bank2 unsigned char *_BD0ADRL   = 0x402;
 bank2 unsigned char *_BD0ADRH   = 0x403;
#define BD0STAT *_BD0STAT
#define BD0CNT  *_BD0CNT
#define BD0ADRL *_BD0ADRL
#define BD0ADRH *_BD0ADRH
"Ленивый человек в бесчестном покое сходен с неподвижною болотною водою, которая, кроме смраду и презренных гадин, ничего не производит". М.В. Ломоносов
Ответить

Вернуться в «PIC»