[an error occurred while processing this directive]
Объясните мне ... в каких случаях надо применять кольцевой FIFO, а в каких не кольцевой?
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
Отправлено
=NIK=
03 августа 2006 г. 15:48
Составить ответ
|||
Конференция
|||
Архив
Ответы
Поясню вопрос(+)
—
=NIK=
(03.08.2006 16:47
213.221.24.178
, 272 байт)
Вы должны так проектировать систему, чтобы ресурсов хватало для обработки буферов и переполнения не происходило.
—
Vladimir Ljaschko
(03.08.2006 17:20
82.209.192.81
,
пустое
)
Тем не менее... как ни крути... а ветка такая в программе есть... :)
—
=NIK=
(03.08.2006 17:28
213.221.24.178
,
пустое
)
И туда надо что-то вписать.... :(
—
=NIK=
(03.08.2006 17:31
213.221.24.178
,
пустое
)
Так а для чего буфера используются? Обмен данными? Значит, при переполнении очистка буфера и выход на ожидание. Или передача сообщения на уровень приложения о неполадках в канале связи.
—
Vladimir Ljaschko
(03.08.2006 17:47
82.209.192.81
,
пустое
)
А зачем чистить буфер при переполнении? Где такое встречается?
—
rezident
(03.08.2006 18:08
212.33.249.11
,
пустое
)
Кроме того, очисткой кольцевого буфера называется присвоение указателей началу буфера.
—
Vladimir Ljaschko
(03.08.2006 18:35
82.209.192.81
,
пустое
)
Не вижу смысла.
—
rezident
(03.08.2006 18:54
212.33.249.11
,
пустое
)
Не вижу смыла.
—
rezident
(03.08.2006 18:53
212.33.249.11
,
пустое
)
Честно? :-) Я у себя сделал в линейном буфере на прием, не особенно задумываясь, когда обнаружил что после приема неполного пакета устройство отвечает, так как предыдущая команда в буфере оставалась. Конечно, нужно указатель анализировать, но ...
—
Vladimir Ljaschko
(03.08.2006 18:33
82.209.192.81
,
пустое
)
Для таких дел (синхронизация потоков от UARTа и обработчика) все же FIFO предпочтительней. Впочем он у вас похоже и реализован.
—
rezident
(03.08.2006 18:56
212.33.249.11
, 117 байт)
Гасить свет, сливать воду, выносить мебель.
—
_Bill
(03.08.2006 17:06
193.233.83.66
, 173 байт)
вариант 1 при перепонении это тоже ошибка. поэтому опять непонятно что Вы хотите (у)знать
—
ы
(03.08.2006 16:59
80.92.98.211
,
пустое
)
Я хочу узнать как реагировать на переполнение? Затирать ранее принятые данные? Или игнорировать вновь пришедшие?
—
=NIK=
(03.08.2006 17:24
213.221.24.178
,
пустое
)
В случае FIFO не принимать данные в буфер до его освобождения, если кольцевой, то писать по кругу, установив семафор ошибки (опционально).
—
rezident
(03.08.2006 17:40
212.33.249.11
,
пустое
)
В противном случае кольцевой в FIFO превращается.
—
rezident
(03.08.2006 17:41
212.33.249.11
,
пустое
)
ИМХО FIFO обычно для синхронизации потоков данных применяют.
—
rezident
(03.08.2006 16:35
212.33.249.11
,
пустое
)
А кольцевой для фильтрации (плавающий фильтр), например.
—
rezident
(03.08.2006 16:36
212.33.249.11
,
пустое
)
FIFO - он и есть кольцевой. Не кольцевой FIFO - обычный массив.
—
Nata
(03.08.2006 16:15
217.20.167.33
,
пустое
)
Примером FIFO может служить обычный регистр сдвига - First In - First Out. Если соединить выход
—
_Bill
(03.08.2006 16:22
193.233.83.66
, 50 байт)
Если я правильно понял.... то при переполнении, кольцевой затирает ранее принятые данные, а для некольцевого - это ошибка...
—
=NIK=
(03.08.2006 16:21
213.221.24.178
,
пустое
)
FIFO - первый вошел, первый вышел.... тут про окольцованность ничего нету...
—
=NIK=
(03.08.2006 16:19
213.221.24.178
,
пустое
)
паралельные регистры соединеные с выходом со свходом и с общим стробом - FIFO, не кольцевой
—
ы
(03.08.2006 16:16
80.92.98.211
,
пустое
)
а если последный соеденить с первым в определенный момент, то вошедшее значение так и будет болтаться там:)
—
ы
(03.08.2006 16:18
80.92.98.211
,
пустое
)
Таки да. Была с моей стороны некорректность.
—
Nata
(03.08.2006 16:29
217.20.167.33
,
пустое
)
Например, когда идет обработка пакета данных в ходе его приема. Скажем, размер пакета достаточно велик и
—
_Bill
(03.08.2006 16:12
193.233.83.66
, 32 байт)
написано же "размер пакета достаточно велик и целиком в памяти не размещается. "
—
Крупская
(03.08.2006 16:30
82.140.84.195
,
пустое
)
И...?
—
_Bill
(03.08.2006 17:22
193.233.83.66
,
пустое
)
не туды написала, должно было в ответ на "А чем тат некольцевой FIFO плох"
—
Крупская
(03.08.2006 17:45
82.140.84.195
,
пустое
)
А чем тат некольцевой FIFO плох?
—
=NIK=
(03.08.2006 16:23
213.221.24.178
,
пустое
)
Маленький слишком. Представьте, Вам нужно принять и обработать пакет размером,
—
_Bill
(03.08.2006 16:30
193.233.83.66
, 112 байт)
да можно и не кольцевой только сдвигать - упариться можно будет:))
—
ы
(03.08.2006 16:34
80.92.98.211
, 110 байт)
*тут
—
=NIK=
(03.08.2006 16:25
213.221.24.178
,
пустое
)
который проще реализовать в конкретном случае тот надо и применять
—
ы
(03.08.2006 16:05
80.92.98.211
,
пустое
)
Отправка ответа
Имя (обязательно):
Пароль:
E-mail:
Тема (обязательно):
Сообщение:
Ссылка на URL:
Название ссылки:
URL изображения:
Перейти к списку ответов
|||
Конференция
|||
Архив
|||
Главная страница
|||
Содержание