|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||||||
Циклический(кольцевой) буфер.01.05.2016, 09:46. Показов 25471. Ответов 97
Метки нет (Все метки)
Понадобилось мне тут...
Для начала, чтобы не изобретать велосипед, долго искал. В итоге пришлось изобрести. Вроде работает, но... покритикуйте.... <Изображение удалено>
0
|
||||||
| 01.05.2016, 09:46 | |
|
Ответы с готовыми решениями:
97
ADSP - Организовать циклический буфер в памяти данных и занести в него данные с инкрементом 1 adc-dma Кольцевой буфер для стерео-диктофона с сжатием. Кольцевой буфер |
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 886
|
|
| 01.05.2016, 10:12 | |
|
Оно конечно не thread safe, но может оно и не надо.
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
|||
| 01.05.2016, 10:14 | |||
volatile struct что то ещё можно сделать? (чтобы и в 8 битниках работало!)
0
|
|||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
|
| 01.05.2016, 10:58 | |
|
В макросы воткнуть синхронизацию, вестимо. Например, через OTOMIC_BLOCK из atomic.h (при этом даже volatile уже не нужен будет).
Но это, конечно, если не делать внешнюю синхронизацию (например, пара notempty/get просится в единый блок)
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||||
| 01.05.2016, 11:03 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||||||
| 01.05.2016, 11:29 | ||||||
|
добавил скобочек в RBUF_NOTEMPTY и RBUF_NOTFULL для того, чтобы можно было писать
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
|
| 01.05.2016, 11:50 | |
|
https://github.com/scmrtos/scmrtos/btob ... e/usrlib.h
https://github.com/scmrtos/scmrtos/btob ... usrlib.cpp
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
|||
| 01.05.2016, 11:56 | |||
0
|
|||
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
| 01.05.2016, 12:45 | |
|
1. Оно не компилируется - лишние пробелы и точка с запятой.
2. Оно не работает - при переполнении wr. 3. Thread-safe потом обсудим.
0
|
|
|
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 2,514
|
||
| 01.05.2016, 13:17 | ||
|
[QUOTE="shibtym"][QUOTE="Цитата:[/QUOTE]
0
|
||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||||
| 01.05.2016, 13:20 | ||||
0
|
||||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||
| 01.05.2016, 13:24 | ||
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
| 01.05.2016, 13:28 | |
|
1. gcc
2. Вероятностное программирование?
0
|
|
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
||
| 01.05.2016, 13:55 | ||
да, эта реализация не для тех, кто собрался прокачивать непрерывно 4 гигабайта на 8 битном контроллере. на более мощных машинках и чрезвычайно интенсивном трафике можно использовать ulong, но по мне - так это излишество.
0
|
||
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
|
| 01.05.2016, 14:12 | |
|
Ну тогда рассуждать о многопоточности не имеет смысла - вероятность сбоев небольшая, и так сойдет.
0
|
|
|
0 / 0 / 0
Регистрация: 24.02.2010
Сообщений: 804
|
|
| 01.05.2016, 14:49 | |
|
thread safeм и не пахнет.
Т.е. в прерываниях использовать нельзя. На 8ми битниках тем более. И 4 гига тут вовсе не причем. Даже на 10 байтах и драйвере, построенном на прерываниях, а не на pottyngе, будет вылет в какой нить аборт.
0
|
|
|
0 / 0 / 0
Регистрация: 05.10.2007
Сообщений: 498
|
||||||
| 01.05.2016, 14:54 | ||||||
|
Я бы перешёл на указатели. Потому что вот это:
(RBUF).data[ RBUF_MASK(RBUF) & (RBUF).wr++] вычисляется ну очень долго. Как-то так:
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
|
||
| 01.05.2016, 14:56 | ||
|
[QUOTE="shibtym"][QUOTE="Цитата:[/QUOTE]
Я имел в виду в самом кольцевом буфере "thread safety" не делать, а все обращения к нему убирать в OTOMIC_BLOCK там, где они используются. Причём вызов "isempty" с последующим "get" - в один блок.
0
|
||
|
0 / 0 / 0
Регистрация: 07.04.2016
Сообщений: 268
|
|
| 01.05.2016, 15:28 | |
|
нету в STM8, например, OTOMIC_BLOCK. совсем. есть только отменить прерывания,чёта сделать, и возобновить. всё.
но мне это кажется ещё хуже. ибо летят данные.... на эту тему... http://we.iosyitistromyss.ru/S... a-arm.html как я и сказал. В любом случае спасибо. Это полезное примечание.
0
|
|
|
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
|
||
| 01.05.2016, 15:32 | ||
0
|
||
| 01.05.2016, 15:32 | |
|
Помогаю со студенческими работами здесь
20
Кольцевой буфер
Кольцевой буфер на WinApi Кольцевой буфер(Кольцевая очередь) Циклический список (кольцевой) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|