Ответ:
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

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


void Init_USBN(void)
{
USB_WR(MCNTRL,SRST);
USB_WR(MCNTRL, VGE);
USB_WR(VREGCTL, 0x40);
USB_WR(CCONF,0x80);
USB_WR(FADR,0x80);
USB_WR(TXC0,0x08);
USB_WR(RXC0,0x01);
USB_WR(NAKMSK,0x01);
USB_WR(TXMSK,0x01);
USB_WR(RXMSK,0x01);
USB_WR(ALTMSK,ARESET|SD3);
USB_WR(MAMSK,INTR|RX_EV|NAK|TX_EV|ALT);
USB_WR(NFSR,OPERATE);
USB_WR(MCNTRL, INTOCl2l|NAT|VGE);

//************************************************************
//А вот обработчик прерываний:
//************************************************************

interrupt [EXT_INT0] void ext_int0_isr(void)
{
unsigned char Event, Alt, Buff;

Event=USB_RD(MAEV);
if(Event&RX_EV)
{
Buff=USB_RD(RXEV);
u_state[intr_cnt]=Buff; //u_state[] в EEPROM
}
else if(Event&ALT)
{
Alt=USB_RD(ALTEV);

if(Alt&ARESET) //node_reset();
{
USB_WR(NFSR,RESET);
USB_WR(FADR,0x80);
USB_WR(EPC0,0x00);
USB_WR(TXC0,0x08);
USB_WR(RXC0,0x01);
USB_WR(ALTMSK,(SD3|ARESET));
USB_WR(NFSR, OPERATE);
}
else if((Alt&ARESUME))
{
USB_WR(ALTMSK,(SD3|ARESET));
USB_WR(NFSR, OPERATE);
}

else if((Alt&SD3))
{
USB_WR(ALTMSK,(ARESET|ARESUME));
USB_WR(NFSR, SUSPEND);
}
}

То есть, все вроде-бы стандартно. Может я не замечаю чего-то очевидного?
Кроме того, пробовал вешать светодиоды на ноги AVR-ки и сигналить ими. Ничего.

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

Ответы



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

E-mail: info@telesys.ru