|
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