Цитата(zltigo @ Jun 30 2010, 21:49)

Приемное FIFO работает по таймауту, иначе если готовность/прерывание будут дергаться после первого-же байта в FIFO смысла мало. Хотите шустрости на одиночных байтах - отключайте FIFIO.
А должна быть просто перемычка.
Дык в даташите написано - "низя отдключать FIFO". хочется шустрости, но не на совсем одиночных байтах, например три байта туда, три обратно. Вот стал выяснять, где тормозит.
Чего-то я не понимаю, как тут вставлять картинки.
http://electronix.ru/mkportal/modules/copp...&fullsize=1Это сигналы RX и TX
Долго не могли сообразить, что можно дрыгать ногами, после дрыганья ногами стало более-менее понятно
http://electronix.ru/mkportal/modules/copp...&fullsize=1Это слейв 2148, сверху вход, снизу дрыг ногой
http://electronix.ru/mkportal/modules/copp...&fullsize=1Это слейв 2148, сверху вЫход, снизу дрыг ногой
http://electronix.ru/mkportal/modules/copp...&fullsize=1Мастер 2378 сверху вход, снизу - дрыг
http://electronix.ru/mkportal/modules/copp...&fullsize=1Мастер 2378 сверху вЫход, снизу - дрыг
код для слейва
Код
#define LAMP_ON FIO0SET = 0x00002000
#define LAMP_OFF FIO0CLR = 0x00002000
while(1)
{
if(U1LSR & 0x01)
{ LAMP_ON;
v = U1RBR;
U1THR = v;
LAMP_OFF;
}
}
код для мастера
Код
for(;;)
{
U3THR = v;
LAMP_OFF;
while (!(U3LSR & 0x01));
LAMP_ON; /* нога on */
a = U3RBR;
U3THR = v;
LAMP_OFF; /* нога off */
while (!(U3LSR & 0x01));
LAMP_ON;
a = U3RBR;
U3THR = v;
LAMP_OFF;
/* повторение много раз, чтоб съесть затраты на цикл */
....
}
Непонятно, почему время дрыга для одного и того же кода так отличается. Оптимизация по времени во обоих случаях включена.
Сообщение отредактировал evgen2 - Jun 30 2010, 18:47