Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с переменными в прерывании и основном теле
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Страницы: 1, 2
Alexashka
Цитата(Tanya @ Oct 10 2015, 16:19) *
Понимаю, что Вам не результат нужен, а процесс борьбы.

Таня, общение с профессионалами это всегда борьба полезно, я много для себя почерпнул. Наверное все варианты решения уже озвучены (и самый яркий из них -поменять контроллер biggrin.gif ). Лично мне больше нравится простой и надежный как автомат Калашникова вариант с двумя буферами предложенный Viko. Думаю вопрос можно считать решенным.
Еще раз всем спасибо за обсуждение!
_Pasha
Цитата(Alexashka @ Oct 10 2015, 18:31) *
Думаю вопрос можно считать решенным.

biggrin.gif а если вместо указателей применять unsigned char индексы? Они атомарные будут без накладных расходов.
smalcom
тогда будет ограничение на размер буфера.
zltigo
QUOTE (smalcom @ Oct 10 2015, 21:56) *
тогда будет ограничение на размер буфера.

Вам уже сразу написали - не надо оперировать буфером с байтовыми элементами. После долгого жевания Вам собствено "понравился" некий вырожденый вариант такого подхода - буфер из двух элементов размером в полбуфера каждый.
smalcom
а?
Alexashka
Цитата(zltigo @ Oct 10 2015, 23:04) *
Вам уже сразу написали - не надо оперировать буфером с байтовыми элементами. После долгого жевания Вам собствено "понравился" некий вырожденый вариант такого подхода - буфер из двух элементов размером в полбуфера каждый.

Вы про "разделить большой буфер на N маленьких"?
А зачем, когда двух буферов вполне достаточно?!
P.S. А что плохого в этом варианте - он слишком простой?
zltigo
QUOTE (Alexashka @ Oct 11 2015, 23:56) *
Вы про "разделить большой буфер на N маленьких"?
А зачем, когда двух буферов вполне достаточно?!

Если нужен большой буфер, то половинки могут быть слишком большими - типа сутки заполнять придется sm.gif до начала разгрузки.
QUOTE
P.S. А что плохого в этом варианте - он слишком простой?

Ничуть не проще и не сложнее. Если буферов стало несколько, то уже без разницы два, четыре,...2048...
ViKo
Да, для 8-битников 16 256-байтовых буферов будет лучшим решением. Например.
Alexashka
Цитата(zltigo @ Oct 12 2015, 01:01) *
Если нужен большой буфер, то половинки могут быть слишком большими - типа сутки заполнять придется sm.gif до начала разгрузки.

Ничуть не проще и не сложнее. Если буферов стало несколько, то уже без разницы два, четыре,...2048...

Тут есть еще одна нехорошесть, о которой я не подумал - один буфер прочитан на 94%, а второй заполнен на 99% и в это время винда на несколько мс уходит в себя - получаем прерывание чтения: второй буфер еще не готов к чтению, а первый уже прочитан. Т.е когда скорости чтения-записи примерно одинаковы на краях буферов получается очень маленький запас по чтению.
Насчет проще сомневаюсь - это опять возврат к кольцевому буферу с его непременными атрибутами -проверка количества заполненных буферов, управление потоком записи и пр.
smalcom
для этого используйте 3, 4 и т.д. буферов.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.