USB и PIC18f4550
USB и PIC18f4550
Есть ПК, есть PIC18f4550, c чего нужно начинать, чтобы ПК обнаружил контроллер, как новое СDС-устройство и установил нужный драйвер. Для программирования использую компилятор CCS.
- Реклама
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: USB и PIC18f4550
Я бы посоветовал поставить мсс18 и пройтись по этой ссылке http://www.gamma.spb.ru/articles.php?i=29
Re: USB и PIC18f4550
С18 -это, конечно, хорошо, но очень нужно на CCS, т.к. на нем много наработок. А про VID Pid можете что-то сказать, их нужно как-то записывать в PIC или они там прописаны уже, если нужно, то как?
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: USB и PIC18f4550
я не знаю ццс - но туда входит заголовочный файл с описаниями дескриптора конфигурации и где-то рядом должен лежать инф файл, где эти вид-пид тоже можно посмотреть. Вообще с ними вопрос интересный - если изделие будет тиражироваться тысячами экземпляров, за использование нужно платить - кому и как - не знаю, тема как-то всплывала на микрочип су.
На казусе были темы по ццс с юсб, спросите там.
На казусе были темы по ццс с юсб, спросите там.
Re: USB и PIC18f4550
Делал на РIC`е подобное устройство. Правда, не СDC, а... Забыл, как называется
В общем брал за основу микрочипий Solution, в нем уже есть все готовое. Есть примеры различных видов устройств (HID, CDC, Generic и еще что-то). Вот этот-то Generic и повторил, а затем переделал под свтои нужды. Вполне ничего себе получилось
Если что - пишите в личку, поделюсь, пока окончательно все не забыл
За основу брал схему PICDEMFSUSB, прошивка и дрова из солюшена, софт - весь свой писался.
Все будет хорошо, я узнавал!
- Реклама
Re: USB и PIC18f4550
Юра как всегда прав , все лежит в папке Drivers .urry писал(а):я не знаю ццс - но туда входит заголовочный файл с описаниями дескриптора конфигурации и где-то рядом должен лежать инф файл, где эти вид-пид тоже можно посмотреть. Вообще с ними вопрос интересный - если изделие будет тиражироваться тысячами экземпляров, за использование нужно платить - кому и как - не знаю, тема как-то всплывала на микрочип су.
На казусе были темы по ццс с юсб, спросите там.
Кому надо , меняют vid&pid ... http://www.edaboard.com/thread63404.html
- dimitriy91
- Вымогатель припоя
- Сообщения: 619
- Зарегистрирован: Ср июн 08, 2011 15:37:56
- Откуда: ДВ
Re: USB и PIC18f4550
Всем привет. Пишу прошивку на 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
"Ленивый человек в бесчестном покое сходен с неподвижною болотною водою, которая, кроме смраду и презренных гадин, ничего не производит". М.В. Ломоносов


