реклама на сайте
подробности

 
 
> Работа с переменными в прерывании и основном теле, жутко неудобно выходит
Alexashka
сообщение Oct 3 2015, 19:40
Сообщение #1


Практикующий маг
******

Группа: Свой
Сообщений: 3 634
Регистрация: 28-04-05
Из: Дубна, Моск.обл
Пользователь №: 4 576



Добрый вечер sm.gif
Что имеем: 8 битный проц, программа в прерывании читает из кольцевого буфера, указатель чтения -просто индекс массива, двухбайтное число. В основном теле мне приходит поток байт, который я контролирую (запускаю/останавливаю поток) и размещаю байты в этом же кольцевом буфере по другому указателю -указателю записи (тоже индекс массива). До этих пор все замечательно, но чтобы управлять потоком мне нужно знать сколько байт содержится в буфере, для этого я беру разницу между указателями записи и чтения и побитно умножаю ее на (размер_массива - 1). Эту разницу приходится брать в нескольких местах программы, при этом на время вычисления нужно блокировать прерывание, поскольку операция не атомарная, а одна из переменных модифицируется в прерывании. Если этого не делать происходит глюк, если делать -появляется задержка обработки прерывания, а это нехорошо, т.к в нем происходит формирования аудио сигнала. Да и некрасиво это и неудобно -следить какую перменную обрабатываю, нужно или нет блокировать прерывание, ну и поскольку кольцевой буфер используется в различных прерываниях нужно еще и учитывать какое именно прерывание блокировать biggrin.gif
Может это както по-другому можно делать, подскажите.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alexashka   Работа с переменными в прерывании и основном теле   Oct 3 2015, 19:40
- - gerber   Цитата(Alexashka @ Oct 3 2015, 22:40) Мож...   Oct 3 2015, 19:44
|- - Alexashka   Цитата(gerber @ Oct 3 2015, 22:44) Заведи...   Oct 3 2015, 19:49
|- - jcxz   Цитата(Alexashka @ Oct 4 2015, 01:49) неа...   Oct 4 2015, 07:47
|- - _Pasha   Цитата(jcxz @ Oct 4 2015, 10:47) Неужто з...   Oct 4 2015, 11:27
||- - ViKo   Цитата(_Pasha @ Oct 4 2015, 14:27) Кодvol...   Oct 8 2015, 09:31
||- - _Pasha   Цитата(ViKo @ Oct 8 2015, 12:31) Читать и...   Oct 8 2015, 16:55
|- - Alexashka   Цитата(jcxz @ Oct 4 2015, 10:47) Конечно ...   Oct 4 2015, 21:53
|- - jcxz   Цитата(Alexashka @ Oct 5 2015, 03:53) Зап...   Oct 5 2015, 04:12
||- - Alexashka   Цитата(jcxz @ Oct 5 2015, 07:12) ЗАЧЕМ???...   Oct 5 2015, 12:25
|||- - jcxz   Цитата(Alexashka @ Oct 5 2015, 18:25) -пр...   Oct 5 2015, 12:51
|||- - Сергей Борщ   Цитата(Alexashka @ Oct 5 2015, 15:25) сли...   Oct 5 2015, 12:53
|||- - jcxz   Цитата(Alexashka @ Oct 5 2015, 18:25) Пос...   Oct 5 2015, 12:58
|||- - Alexashka   Цитата(jcxz @ Oct 5 2015, 15:58) Там где ...   Oct 6 2015, 07:29
|||- - jcxz   Цитата(Alexashka @ Oct 6 2015, 13:29) Да ...   Oct 6 2015, 08:10
||||- - Alexashka   Цитата(jcxz @ Oct 6 2015, 11:10) просто т...   Oct 6 2015, 08:41
|||- - _Pasha   Цитата(Alexashka @ Oct 6 2015, 10:29) Доб...   Oct 6 2015, 11:51
|||- - Alexashka   Цитата(_Pasha @ Oct 6 2015, 14:51) Ну я к...   Oct 6 2015, 16:36
||- - MrYuran   Цитата(jcxz @ Oct 5 2015, 07:12) Это то ж...   Oct 6 2015, 10:49
||- - jcxz   Цитата(MrYuran @ Oct 6 2015, 16:49) Преим...   Oct 7 2015, 02:41
|- - _Pasha   Цитата(Alexashka @ Oct 5 2015, 00:53) Поя...   Oct 5 2015, 13:36
- - gerber   Значит, можно сделать порог кратным 256 и ограничи...   Oct 3 2015, 20:05
|- - Alexashka   ЦитатаЗначит, можно сделать порог кратным 256 и ог...   Oct 3 2015, 22:28
- - aaarrr   Разделите свой большой буфер на N маленьких и опер...   Oct 3 2015, 20:14
- - smalcom   ЦитатаРазделите свой большой буфер на N маленьких ...   Oct 3 2015, 21:43
- - Valentine Loginov   Вариант с так называемым "nonatomic" по-...   Oct 7 2015, 07:13
|- - zltigo   QUOTE (Valentine Loginov @ Oct 7 2015, 10...   Oct 7 2015, 07:25
- - Valentine Loginov   Идея в том, что атомарный флаг делается тоже через...   Oct 8 2015, 07:35
|- - Alexashka   Цитата(Valentine Loginov @ Oct 8 2015, 11...   Oct 8 2015, 07:58
||- - jcxz   Цитата(Alexashka @ Oct 8 2015, 13:58) Ест...   Oct 8 2015, 09:09
||- - Alexashka   Цитата(jcxz @ Oct 8 2015, 13:09) Есть вер...   Oct 8 2015, 18:17
||- - jcxz   Цитата(Alexashka @ Oct 9 2015, 00:17) Да ...   Oct 9 2015, 03:18
||- - ASN   Alexashka Так и не понял, почему запрет прерываний...   Oct 9 2015, 06:05
|- - zltigo   QUOTE (Valentine Loginov @ Oct 8 2015, 10...   Oct 8 2015, 09:13
- - Valentine Loginov   Вообще долгая работа с данными в прерывании плохо....   Oct 9 2015, 06:51
|- - Alexashka   Цитата(Valentine Loginov @ Oct 9 2015, 10...   Oct 9 2015, 07:40
|- - zltigo   QUOTE (Alexashka @ Oct 9 2015, 10:40) Я х...   Oct 9 2015, 08:33
|- - Alexashka   Цитата(zltigo @ Oct 9 2015, 12:33) Лучше ...   Oct 9 2015, 13:09
|- - zltigo   QUOTE (Alexashka @ Oct 9 2015, 16:09) А к...   Oct 9 2015, 13:42
- - rudy_b   Цитата(Alexashka @ Oct 3 2015, 22:40) Доб...   Oct 9 2015, 13:19
|- - Alexashka   Цитата(rudy_b @ Oct 9 2015, 17:19) Как-то...   Oct 9 2015, 17:09
- - ViKo   Так зачем "чутка освободится..."? Сделай...   Oct 9 2015, 18:19
|- - rudy_b   Цитата(ViKo @ Oct 9 2015, 21:19) Так заче...   Oct 9 2015, 23:08
||- - Dog Pawlowa   Какие компоненты в систему заложишь, так она и поп...   Oct 10 2015, 03:51
|- - Alexashka   Цитата(ViKo @ Oct 9 2015, 22:19) Так заче...   Oct 10 2015, 11:19
|- - ViKo   Цитата(Alexashka @ Oct 10 2015, 14:19) Эт...   Oct 10 2015, 11:39
||- - Alexashka   Цитата(ViKo @ Oct 10 2015, 15:39) Красиво...   Oct 10 2015, 12:09
||- - Tanya   Цитата(Alexashka @ Oct 10 2015, 15:09) Жа...   Oct 10 2015, 12:19
||- - Alexashka   Цитата(Tanya @ Oct 10 2015, 16:19) Понима...   Oct 10 2015, 15:31
||- - _Pasha   Цитата(Alexashka @ Oct 10 2015, 18:31) Ду...   Oct 10 2015, 18:06
|- - Tanya   Цитата(Alexashka @ Oct 10 2015, 14:19) И ...   Oct 10 2015, 11:47
- - ViKo   Можно и одним буфером обойтись, если разбить его н...   Oct 10 2015, 13:57
- - smalcom   тогда будет ограничение на размер буфера.   Oct 10 2015, 18:56
|- - zltigo   QUOTE (smalcom @ Oct 10 2015, 21:56) тогд...   Oct 10 2015, 19:04
|- - Alexashka   Цитата(zltigo @ Oct 10 2015, 23:04) Вам у...   Oct 11 2015, 20:56
|- - zltigo   QUOTE (Alexashka @ Oct 11 2015, 23:56) Вы...   Oct 11 2015, 21:01
|- - Alexashka   Цитата(zltigo @ Oct 12 2015, 01:01) Если ...   Oct 12 2015, 06:38
- - smalcom   а?   Oct 10 2015, 20:09
- - ViKo   Да, для 8-битников 16 256-байтовых буферов будет л...   Oct 12 2015, 05:45
- - smalcom   для этого используйте 3, 4 и т.д. буферов.   Oct 12 2015, 08:00


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th June 2025 - 02:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01438 секунд с 7
ELECTRONIX ©2004-2016