[an error occurred while processing this directive] [an error occurred while processing this directive]
Т.е. нужен буфер FIFO?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено kons 17 января 2002 г. 15:33
В ответ на: задача не так проста отправлено yes 17 января 2002 г. 15:09

Тогда в общей памяти надо иметь указатель записи wptr (модифицируется передатчиком) и указ. чтения rptr (модифицируется приемником). Оба должны быть не шире шины данных ОЗУ, чтобы писались за один цикл обращения. Пример из жизни (упрощенный):

Передатчик (гонит очередное слово w):

memory[wptr]=w;
if(wptr+1>=BUFF_END) wptr=BUFF_START;//Продвигаем wptr else wptr=wptr+1;

Приемник (лезет за новым словом):

while(rptr==wptr);//Пока буфер пуст - висим и ждем
w=memory[rptr]; //Что-то есть - забираем очередное слово
if(rptr+1>=BUFF_END) rptr=BUFF_START;//Продвигаем rptr
else rptr=rptr+1;

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

Ответы



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

E-mail: info@telesys.ru