Цитата(Alex03 @ May 28 2008, 08:29)

Чему равен RxFIFOTrigger ? Или там RxFIFOTrigger8?
виноват, забыл вставить
Код
#define RxFIFOTrigger1 0x00
#define RxFIFOTrigger4 0x40
#define RxFIFOTrigger8 0x80
#define RxFIFOTrigger14 0xC0
#define RxFIFOTrigger RxFIFOTrigger8
Еще доработал:
Код
...
case RDAInterruptID: {
i = 0;
while ((i < (RxFIFOTrigger - 1)) & ((U0LSR & ReceiverDataReady) != 0))
{
FInQueue.Put(U0RBR);
i = i + 1;
}
break;
}
...
Вот как это будет работать (если не прав поправте):
При приеме данных когда в FIFO набирается >= RxFIFOTriggerLevel, должно прийти прерывание RDA.
Забираем данные, прерывание по RDA снимется когда в FIFO будет данных < RxFIFOTriggerLevel. Если считаем все данные из FIFO мы не получем CTI (согласно мануалу). Поэтому надо оставлять один байт в RxFIFO, соответственно TriggerLevel должен быть > 1.