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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Измеритель, как организовать программу?
sasamy
сообщение Jun 30 2012, 16:56
Сообщение #16


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(AlexandrY @ Jun 30 2012, 20:48) *
Как раз такой Satec я разбирал. Там внутри стоял довольно убогий по сегодняшним меркам 16-и битный микроконтроллер. Естественно там линукс рядом не лежал.
Да, одна микросхема от AD еще не все делает, к ней достаточно прикрутить STM32 за пару баксов и тогда будет полное удовольствие. biggrin.gif



Посмотрите сколько стоят анализаторы удовлетворяющие IEC 61000-4-30 Class A и идите ближе к лесу со своими советами sm.gif
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jun 30 2012, 17:10
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Посмотрел как реализуется событийная (набор конечных автоматов вызываемых из кольцевого буфера). Впринципе не сложно.
Только вот что будет если например при записи на SD карту, произоёдет запрос по Ethernet на чтение из SD-карты?
Иними словами, чем в итоге отличается такой метод от ОСРВ? скорость пострадает? так как придётся ждать, пока произойдёт вызов соответствующей функции из кольцевого буфера?

Цитата(AlexandrY @ Jun 30 2012, 20:48) *
Как раз такой Satec я разбирал. Там внутри стоял довольно убогий по сегодняшним меркам 16-и битный микроконтроллер. Естественно там линукс рядом не лежал.
Да, одна микросхема от AD еще не все делает, к ней достаточно прикрутить STM32 за пару баксов и тогда будет полное удовольствие. biggrin.gif

И что тогда она будет уметь? Разве что выводить данные на дисплей и общаться с внешним миром. ADE7880 хоть и хорошее решение, но она суть чёрный ящик, который просто выдаёт вычисленные значения. А если я хочу THD тока узнать до 40-й гармоники? тут хоть STM62 biggrin.gif ставь, но если ADE7880 этого не умеет - то не умеет.

Цитата(sasamy @ Jun 29 2012, 20:26) *
можно использовать poll в юзерспейс, при известной частоте дискретизации заранее известно сколько измерений нужно для 10 мс, задать буфер на 20 мс - процесс автоматически будет активирован когда данные готовы для обработки.


простите, откуда вы взяли этот текст:
Each ring buffer typically has an event chrdev (similar to the more general ones above) to pass on
events such as buffer 50% full and an access chrdev via which the raw data it self may be read back.



Сообщение отредактировал Zelepuk - Jun 30 2012, 17:10
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 30 2012, 17:22
Сообщение #18


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(Zelepuk @ Jun 30 2012, 21:10) *
простите, откуда вы взяли этот текст:


http://wiki.analog.com/software/linux/docs...iio?force_rev=1
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Jun 30 2012, 19:09
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(sasamy @ Jun 30 2012, 20:56) *
Посмотрите сколько стоят анализаторы удовлетворяющие IEC 61000-4-30 Class A и идите ближе к лесу со своими советами sm.gif

Думаю нам стоит извинится перед пользователем AlexandrY. ADE7880 - измеряет в соответствии с IEC 61000-4-7 Class I. Я был очень удивлён, когда увидел что умеет эта микросхемка.
Для меня это настоящий прорыв. Что поделать - прогресс.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 30 2012, 19:45
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(TigerSHARC @ Jun 30 2012, 23:09) *
Думаю нам стоит извинится перед пользователем AlexandrY.


Я больше по поводу Linux рефлексировал sm.gif а ссылка на ade7880 которую давал AlexandrY у меня не сработала, в любом случае я надеюсь AlexandrY не принимает близко к сердцу мои выпады - у него своя голова есть на плечах и знает что когда и зачем применять.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 30 2012, 20:35
Сообщение #21


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(sasamy @ Jun 30 2012, 22:45) *
Я больше по поводу Linux рефлексировал sm.gif а ссылка на ade7880 которую давал AlexandrY у меня не сработала, в любом случае я надеюсь AlexandrY не принимает близко к сердцу мои выпады - у него своя голова есть на плечах и знает что когда и зачем применять.


Не буду здесь прикидываться экспертом, но честно говоря подвигло меня поискать такую микруху именно эта тема. wink.gif

Хотя с микросхемами от AD я работал и знаю, что они и сырые сэмплы всегда могли выдавать.
С другой стороны вот буквально на днях анонсирован STM32F3 на Cortex-M4 с 3-х канальным 16-и битным прецизионным ADC.
Так что тему дорогих анализаторов прочно убили.

Но мы что-то отвлеклись от начальной темы.

Чтобы работало суперкольцо надо как минимум:
-программные модули типа файловой системы или сетевого стека не должны использовать программных циклов ожидания внутри себя, т.е. полинга
-программные модули не должны требовать детерминированных периодических вызовов своих функций (скажем для ведения внутренних таймеров)

По сути все исходники надо прошерстить чтобы убедиться в выполнении этих критериев.

RTOS позволяет этого не делать. Собственно в этом ее гигантское преимущество.
Линукс тож как бы это же самое предоставляет, но накладных расходов просто больше.
Go to the top of the page
 
+Quote Post
Aner
сообщение Jun 30 2012, 21:02
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 4 869
Регистрация: 28-02-08
Из: СПБ
Пользователь №: 35 463



Как то с памятью у них бедно, STM32F303VC ...
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jun 30 2012, 21:17
Сообщение #23


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Но Linux для меня как-то роднее и проще. Опишу большой плюс Linux из практики:
нужно было реализовать протокол связи стандартный, исходники которого в сети не встретишь. Но волей случая нашел в сети Perl-библиотеку.
и теперь один процесс просто пишет измеренные данные в файл, а второй процесс (назовем его шлюз) - читает данные из файла и шлет по протоколу в сеть.
Всё просто и быстро.

Но, конечно есть и минусы: я использую мощный процессор и большую(64 Мбайт) sdram, что , ясное дело, недёшево в сравнении с тем же stm32F207(для примера)
Go to the top of the page
 
+Quote Post
XVR
сообщение Jul 1 2012, 15:12
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(AlexandrY @ Jun 30 2012, 13:26) *
Кстати о RTOS, перечисленными вами вещами как: "синхронизация потоков", "мьютексы", "семафоры" практически не пользуюсь.
Это знаете ли, пережитки больших осей, где каждая задача как черный ящик для программиста.
В малых осях можно напрямую читать и писать переменные разных задач не применяя никаких объектов синхронизации, просто зная кто еще, как и когда к ним обращается.
А сделать это в обозримых сорсах не представляет проблем. И надежность в целом повысится,
Вот так и появляются 'супер надежные' системы типа Therac-25. Никаких объектов синхронизации, своя собственная небольшая ОСРВ, свои задачи (всего 3 штуки), все знают что и где пишется. Результат - 8 трупов crying.gif

Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 2 2012, 04:43
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(Zelepuk @ Jun 29 2012, 20:21) *
А если реализация будет в виде суперлупа, в котором будут поочерёдно вызываться функции(конечные автоматы) как вы рекомендовали, что будет когда в момент записи на SD-карту происходит запрос по Ethernet? запрос будет просто ждать своей очереди?

Я не рекомендовал, я лишь сказал, что можно сделать так. И что это будет даже полезно - поймете необходимость в следующей разработке использовать ртос.
На счет одновременного доступа к sd-карте - тут уже Вам решать. =) Определитесь что вы хотите получать по езернету - историю нескольких последних измерений или целиком все файлы, имеющиеся на карточке. Определитесь, как именно Вы будете писать историю, учитывая, что при fat32 больше 4 Гб файлы быть не могут.

Цитата(AlexandrY @ Jun 30 2012, 13:26) *
Linux тут явно не конкурентное решение. Да и AT91 прошлый век.

Вы читали задачи, которые требуются решить автору? Микроконтроллеры с 2мя ядрами - это, конечно, хорошо. Но надо не терять связь с реальностью. =)
Цитата(AlexandrY @ Jun 30 2012, 13:26) *
Кстати о RTOS, перечисленными вами вещами как: "синхронизация потоков", "мьютексы", "семафоры" практически не пользуюсь.
Это знаете ли, пережитки больших осей, где каждая задача как черный ящик для программиста.
В малых осях можно напрямую читать и писать переменные разных задач не применяя никаких объектов синхронизации, просто зная кто еще, как и когда к ним обращается.
А сделать это в обозримых сорсах не представляет проблем. И надежность в целом повысится, так как чем меньше сервисов используете тем меньше проблем оси получаете в виде инверсии приоритетов и взаимных блокировок.
Единственно что действительно понадобится это сервисы очередей и событий. И практически все!

Довольно интересное суждение, Therac-25 уже привели. Но если прочитать первое и последнее предложение, то выходит несколько противоречиво. Ведь события и очереди - это объекты синхронизации потоков.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jul 2 2012, 04:50
Сообщение #26


Знающий
****

Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464



Цитата(Lotor @ Jul 2 2012, 07:43) *
На счет одновременного доступа к sd-карте - тут уже Вам решать. =) Определитесь что вы хотите получать по езернету - историю нескольких последних измерений или целиком все файлы, имеющиеся на карточке. Определитесь, как именно Вы будете писать историю, учитывая, что при fat32 больше 4 Гб файлы быть не могут.

Желательно получать все файлы. 4Гб - думаю что этого хватить для всей системы (Linux) + одна папочка (куда надо писать и откуда надо читать информацию). В папке будут короткие фалы осциллограмм(сырые отсчёты с АЦП), записываемые туда непериодичеки, а так же периодическая информация, обновляемая каждые 3 секунды.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 2 2012, 05:10
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(Zelepuk @ Jul 2 2012, 08:50) *
Желательно получать все файлы. 4Гб - думаю что этого хватить для всей системы (Linux) + одна папочка (куда надо писать и откуда надо читать информацию). В папке будут короткие фалы осциллограмм(сырые отсчёты с АЦП), записываемые туда непериодичеки, а так же периодическая информация, обновляемая каждые 3 секунды.

А периодическая информация будет дописываться в один большой файл?
У меня, например, была задача писать видео на sd карту и одновременно его отдавать по езернету, а вот отдавать все файлы по сети мне надо было при отсутствующей записи на sd.
У Вас же постоянно идет запись, но не очень интенсивно. Так что, например, просто при каждой дозаписи в файл закрывайте его, чтобы при необходимости другая задача (конечный автомат) могла выкачать часть файла в ОЗУ, из которого эзернет будет кушать.
И обязательно прикиньте необходимую скорость для записи - у sd карты есть документированная задержка независящая от класса карты. Чтобы добиться высокой скорости записи приходится применять буферизацию. Тема на этом форуме поднималась часто.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 2 2012, 06:15
Сообщение #28


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Lotor @ Jul 2 2012, 07:43) *
Вы читали задачи, которые требуются решить автору? Микроконтроллеры с 2мя ядрами - это, конечно, хорошо. Но надо не терять связь с реальностью. =)


Что-то реальность вас не слушается. biggrin.gif
LPC43xx уже продается, я уже не говорю о всяких OMAP-ах с 5-ю разными ядрами на борту.
Или вы о чем?

Цитата(Lotor @ Jul 2 2012, 07:43) *
Довольно интересное суждение, Therac-25 уже привели. Но если прочитать первое и последнее предложение, то выходит несколько противоречиво. Ведь события и очереди - это объекты синхронизации потоков.


Могу припомнить, что приемы межзадачного обмена без сервисов синхронизации в современных ARM-ах введены на аппаратном уровне.
Если цепляться к терминологии, то в малых RTOS нет потоков, а есть только задачи.

Я автора скорее бы предостерег от использования SD карт как надежных решений для записи большого количества файлов.
Ибо FAT системы начинают сильно тормозить и сбоить когда количество существующих или стертых файлов переваливает тысячу.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Jul 2 2012, 09:33
Сообщение #29





Guests






Цитата(Zelepuk @ Jun 29 2012, 00:00) *
Требуется разработать измеритель...
Задачи, которые нужно обрабатывать в программе:
1) принимать данные с АЦП через SPI по внешнему прерыванию и записывать в кольцевой буфер (частота дискретизации порядка 25кГц)
2) каждые 10 мс. производить обработку блока данных с АЦП по некоторому алгоритму;
3) усреднять данные полученные в п.2 каждые 3 секунды
4) записывать данные, полученные в п.3 на SD-карту (история)
5) обрабатывать запросы через Ethernet (задать время внутренних часов, считать данные с SD-карты, задать калибровочные коэффициенты для АЦП и пр.)
6) обновлять данные на дисплее каждые 3 секунды
Встал вопрос: как организовать программу?

Есть большие сомнения в целесообразности "запихивания" всех перечисленных задач в один МК. Даже если он двухядерный.
На мой взгляд, связка из двух МК здесь предпочтительнее. Первый МК занимается задачами 1-2 (или 1-3), второй МК - задачами 3-6 (или 4-6).
Каждый занимается своим делом и не мешает другому. Объем передаваемых между ними данных будет не особо велик.
Если пойти дальше в этом направлении, то стоит заменить второй МК на ПК. Тогда задача совсем упрощается.
Go to the top of the page
 
+Quote Post
Lotor
сообщение Jul 2 2012, 10:26
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866



Цитата(AlexandrY @ Jul 2 2012, 10:15) *
Что-то реальность вас не слушается. biggrin.gif
LPC43xx уже продается, я уже не говорю о всяких OMAP-ах с 5-ю разными ядрами на борту.
Или вы о чем?

Я об избыточности предлагаемой Вами элементной базы на данную конкретную задачу. Не буду спорить на тему целесообразности "мигания светодиодом на linux", но у меня аналогичная с автором топика задача + lcd, +прием потока в 2 МБайта/с ложилась хорошо на один arm7.
А к lpc43 я и сам приглядываюсь, но это на проекты, где нужно действительно сложную математику выполнять.
Цитата(AlexandrY @ Jul 2 2012, 10:15) *
в малых RTOS нет потоков, а есть только задачи.

Ох, слишком высокие материи пошли. Я почитал в той же wiki раздел про отличия потоков и процессов. sm.gif Как ни назови, задача - это по сути и есть поток, хотя правильнее сказать процесс.


--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 23:53
Рейтинг@Mail.ru


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