инициализация какая-то неполная, не увидел там очистки буфера и включения приемника и еще...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено incognito 06 сентября 2004 г. 19:57
В ответ на: Ответ: отправлено zakkk 06 сентября 2004 г. 19:19

1) зря ты alt reset и прочее загнал в основное тело, разбил бы по процедурам а то запутаешся.
2) пропиши в файлике названия битов USBN9603/4. у Националя есть даже уже готовый файл def9602.h а то черт ногу сломит в 0x87 и типа вспоминий что там за бит такой в данном регистре ?!?!?!


этого вообщем достаточно чтоб принять RX_EV с битом SETUP//

мой инит
void usb_init(void)
{
usb_cfg = 0;
setaddr = 0;

// программный сброс чипа
write_usb(MCNTRL,VGE+SRST);
write_usb(MCNTRL,INT_L_P); // Прерывание : низкий-активный + push_pull
write_usb(CCONF,CODIS); // Отключаем выход генератора

// Устанавливаем default address, задействуем только EP0
write_usb(FAR,AD_EN+0);
write_usb(EPC0, 0x00);

// Устанавливаем маски для прерываний
write_usb(NAKMSK, NAK_O0); // NAK events
write_usb(TXMSK, TXFIFO0 + TXFIFO1); // TX events
write_usb(RXMSK, RXFIFO0 + RXFIFO1); // RX events
write_usb(ALTMSK,SD3+RESET_A); // ALT events
write_usb(MAMSK,INTR_E+NAK+RX_EV+TX_EV+ALT);

// Включаем приемник и задействуем режим go_operatinal
write_usb(TXC0,FLUSH); // Flush TX0 and disable
write_usb(RXC0,RX_EN); // включаем приемник 0
write_usb(TXC1,FLUSH); // Flush TX1 and disable
write_usb(RXC1,FLUSH); // Flush RX1 and disable
write_usb(RXC1,RX_EN); // включаем приемник 1
write_usb(NFSR,OPR_ST); // Go operational
write_usb(MCNTRL,VGE+INT_L_P+NAT); // Set NODE ATTACH
}

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru