Цитата(torik @ Feb 14 2006, 14:25)

Вопрос поконкретнее:
В примере программы boolkext есть такой код:
void TD_Init(void) // Called once at startup
{
// we are just using the default values, yes this is not necessary...
EP1OUTCFG = 0xA0;
EP1INCFG = 0xA0;
SYNCDELAY; // see TRM section 15.14
EP2CFG = 0xA2; //out
SYNCDELAY;
EP4CFG = 0xA0; //out
SYNCDELAY;
EP6CFG = 0xE2; //in
SYNCDELAY;
EP8CFG = 0xE0; //in
counts twice
SYNCDELAY;
EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip.
SYNCDELAY;
EP2BCL = 0x80;
SYNCDELAY;
EP4BCL = 0x80; // arm EP4OUT by writing byte count w/skip.
SYNCDELAY;
EP4BCL = 0x80;
// enable dual autopointer feature
AUTOPTRSETUP |= 0x01;
Rwuen = TRUE; // Enable remote-wakeup
}
Понятно что точки 2 и 4 настраиваются как двойные булочные. Но зачем тут включается точка 1?
И еще - в EPхBCL записывается число 80 - почему? вроде надо указывать 512, а не 128, а в старший байт ничо не пишется.
Пишите откуда был выдран код.
1) точка скорее все го внутри программы завязана кольцом так для при мера не берите в голову. Или скажем через нее можно всекие команды реализовать или UART FX2 в комп загать вобщемм юзайте его как хотите но он не имеет аппаратного FIFO в отличии остальных. Но я для комманд советую использовать 0 точку.
2) на енпоинты 2,4,6,8 имеется аппаратное фифо которо может работать в MASTER (GPIF) или SLAVE режиме и выходят они на внешний мир и впринципе работают без участия CPU (ядра 8051). Но можно настроить FX2 таким образом что он может иметь доступ к FIFO. Вот в этом режиме бит 7 регистра EPхBCL используется для потверждения что ты обработал данный пакет и готов принимать следующий. Это применимо только для IN ендпоинтов, для OUT там указывается кол-во передаваемых данных. Это подробно описана в "узвермануале" в разделе 8.6.2.4 EP2BCH:L, EP4BCH:L, EP6BCH:L, EP8BCH:L