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

 
 
> Использование глобальных переменных, как правильнее сделать
Atlantis-
сообщение Jun 26 2015, 07:50
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
Абстрагируясь, моя задача состоит в том, чтобы принять несколько разных блоков данных по USB, массивы определяющие в какой последовательности, по сколько раз и с какой паузой между ними выдавать эти блоки по I2S.
Я разбил все эти данные на три глобальные структуры:
1) структура содержащая адреса блоков данных и их длины
2) структура содержащая массивы определяющие в какой последовательности, по сколько раз и с какой паузой между ними выдавать эти блоки
3) структуру содержащую счетчики, которые изменяются в процессе выдачи данных для расчета окончания блока данных, количества его повторений, паузы между блоками и т.д. Переменные этой структуры будут меняться в теле прерывания.

Вопрос у меня такой: правильно ли я вообще мыслю, не будет ли путаницы с глобальными переменными, чего следует остерегаться и может быть есть какие то другие варианты, без глобальных переменных?

Забыл сказать - использую FreeRTOS и меня немного смущает использование в задачах глобальных переменных.

Сообщение отредактировал Atlantis- - Jun 26 2015, 07:53
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jun 26 2015, 08:28
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Atlantis- @ Jun 26 2015, 10:50) *
Я разбил все эти данные на три глобальные структуры:

Зачем три? В чем страхи пред одной?
Заодно в чем конкретно страхи перед глобальными переменными? Хотя, конечно, те переменные, которые используются в одной задаче, красивее положить в стек этой задачи.
Вообще-то абстрактно надо стремится передавать информацию между задачами через очереди сообщений, а не через кучи глобальных переменных - это насколько я понимаю, явно отностися к помянутому Вами в 1)






--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Atlantis-
сообщение Jun 26 2015, 08:43
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Цитата(zltigo @ Jun 26 2015, 11:28) *
Зачем три? В чем страхи пред одной?

Получится 18 переменных в одной структуре, я могу запутаться и забыть какая чего означает. Придется названиями разделять на три вида. А в чем преимущество одной большой структуры перед тремя маленькими? Ну теоретически первые две структуры можно объединить, а третью уже не хочется.

Цитата(zltigo @ Jun 26 2015, 11:28) *
Заодно в чем конкретно страхи перед глобальными переменными?

Да не знаю, перестраховываюсь. По идее у меня возможен одновременная запись и чтение 2-й структуры

Цитата(zltigo @ Jun 26 2015, 11:28) *
Вообще-то абстрактно надо стремится передавать информацию между задачами через очереди сообщений, а не через кучи глобальных переменных - это насколько я понимаю, явно отностися к помянутому Вами в 1)

У меня конкретно сейчас сделано так: приходит блок данных по USB, отправляется сообщение содержащее адрес, размер блока и адрес структуры куда это надо переписать. В задаче данные переписываются. Но сегодня меня "осенило", что зачем адреса структур передавать, они у меня все равно глобальные...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 00:21
Рейтинг@Mail.ru


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