KeyArduino, Вот Вам блок FIFO
.
- FIFO.jpg (5.61 КБ) 921 просмотр
.
В железе не тестировал, но в протеусе работает. Описания внутри пока нет. Доделаю - выложу.
Логика такая:
1. В настройках выставляем размер буфера (массива) - в вашем случае очереди.
2. Подачей единицы на вход Insert записываем очередную переменную со входа In в буфер (в конец очереди)
3. Подачей единицы на вход Extract извлекаем первую по очереди переменную из буфера (очереди) на выход Out
4. Если в буфере пусто, то на выходе Void - единица и больше ничего из очереди не извлекается.
5. Если буфер полон (см. размер массива) то на выходе Full - единица и ничего в очередь больше не ставится.
Ну а нажатия с со счетчиками (таймерами) надеюсь сообразишь как сделать.
Ждем обещанный видос!!!
Отправлено спустя 9 часов 2 минуты 42 секунды:
Вот есть один маленький нюанс в этом блоке FIFO
Когда извлекаем из буфера последнюю переменную и буфер опустошается, то на выходе Out повисает эта последняя переменная. Больше ведь ничего не извлекается т.к. буфер пуст.
Вопрос в том, надо ли сделать так, что бы при пустом буфере и при очередном сигнале на входе Extract переменная на выходе Out обнулялась?
Не знаю будет ли это правильно. Ведь если в буфер записывается следующая переменная, то получится что на выходе между этими двумя переменными окажется "0", а это ведь тоже значение.
Вопрос ко всем не равнодушным.
Как сделать? С обнулением или без?