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

 
 
> Измеритель, как организовать программу?
Zelepuk
сообщение Jun 28 2012, 20:00
Сообщение #1


Знающий
****

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



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

Встал вопрос: как организовать программу?
вариант, который приходит на ум:
1)Суперлуп. В основном цикле которого производится опрос флагов( таких как "накопился буфер с АЦП" и пр.). Здесь так же работают прерывания: от АЦП - ложим отсчёт в буфер; от порта Ethernet - обрабатываем сообщения; от таймера - прошло 3 секунды и пора делать усреднение результатов.
2) По прерываниям от таймера делать переключение задач (каруселька)
Что лучше в данном случае и что ещё можно применить?

просто я "панически" боюсь таких терминов как "синхронизация потоков", "мьютексы", "семафоры" и прочее...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Jun 28 2012, 20:26
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Zelepuk @ Jun 28 2012, 23:00) *
Что лучше в данном случае и что ещё можно применить?

Ответ на этот вопрос зависит от МК, который будет в изделии, так как допустим АВР на 8 МГц это одно, а какой-нибудь CortexM на 80 МГц - это совсем другое.

Цитата(Zelepuk @ Jun 28 2012, 23:00) *
2) По прерываниям от таймера делать переключение задач (каруселька)

Зачем такое вообще применять? Или есть готовое-освоенное?

Сложность скорее представляет Ethernet и SD-карта, если оно не использовалось ранее.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Jun 28 2012, 20:40
Сообщение #3


Знающий
****

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



Цитата(_Артём_ @ Jun 29 2012, 00:26) *
Ответ на этот вопрос зависит от МК, который будет в изделии, так как допустим АВР на 8 МГц это одно, а какой-нибудь CortexM на 80 МГц - это совсем другое.


Зачем такое вообще применять? Или есть готовое-освоенное?

Сложность скорее представляет Ethernet и SD-карта, если оно не использовалось ранее.

планирую использовать что-нибудь из AT91 серии. Для Ethernet есть проект uip для sd-карты тоже есть библиотека.
Для AT91 есть большой соблазн использовать Linux, но я ума не приложу как сделать обработку каждые 10мс. Есть драйвера под Linux для АЦП c с реализоваными кольцевыми буферами(та же подсистема IIO от AD). Но какой механизм применить под Linux, чтобы каждые 10мс обрабатывался блок накопленных отсчётов, и каждый раз это происходило непрерывно во времени.

Но, возможно, Linux тут совсем не подходит.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 30 2012, 09:26
Сообщение #4


Ally
******

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



Цитата(Zelepuk @ Jun 28 2012, 23:40) *
планирую использовать что-нибудь из AT91 серии. Для Ethernet есть проект uip для sd-карты тоже есть библиотека.
Для AT91 есть большой соблазн использовать Linux, но я ума не приложу как сделать обработку каждые 10мс. Есть драйвера под Linux для АЦП c с реализоваными кольцевыми буферами(та же подсистема IIO от AD). Но какой механизм применить под Linux, чтобы каждые 10мс обрабатывался блок накопленных отсчётов, и каждый раз это происходило непрерывно во времени.

Но, возможно, Linux тут совсем не подходит.


Linux тут явно не конкурентное решение. Да и AT91 прошлый век.

Специально для таких задач разработаны двух-ядерные микроконтроллеры вроде: LPC4350

На основном ядре работают стеки TCP/IP, GUI, файловая система, отладочные мониторы и т.д.
На вспомогательном ведется цифровая пред-обработка данных, например фильтрация, поиск экстремумов, интегрирование и т.д.

Тогда применив такие недоделанные стеки как uip можно получить вполне надежный дивайс, даже оставив в софте кучу багов.
Быстрый пересброс основного ядра без потери данных никто не заметит.

Кстати о RTOS, перечисленными вами вещами как: "синхронизация потоков", "мьютексы", "семафоры" практически не пользуюсь.
Это знаете ли, пережитки больших осей, где каждая задача как черный ящик для программиста.
В малых осях можно напрямую читать и писать переменные разных задач не применяя никаких объектов синхронизации, просто зная кто еще, как и когда к ним обращается.
А сделать это в обозримых сорсах не представляет проблем. И надежность в целом повысится, так как чем меньше сервисов используете тем меньше проблем оси получаете в виде инверсии приоритетов и взаимных блокировок.
Единственно что действительно понадобится это сервисы очередей и событий. И практически все!

Вообщем берите vxWorks и не пожалеете. Там будет все : мультихостовый TCP/IP, FTP клиент/сервер, клиент NTP, реентерабельную FS и т.д.
Или RL ARM. Сразу готовое на LPC4350 получите.
Найдете на ftp.
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Jun 30 2012, 13:29
Сообщение #5


Знающий
****

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



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


Ну почему не конкурентное? Вот это девайс http://mirmsk.ru/uake_analizator_kachestva_elektroen (как раз обрабатывает данные на частоте сотен кГц) работает под управлением Linux.
Среди AT91 сейчас есть камни с 400мГц частотой ядра и DDR-памятью.

А vxWorks всё-таки не бесплатное решение.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jun 30 2012, 14:29
Сообщение #6


Ally
******

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



Цитата(TigerSHARC @ Jun 30 2012, 16:29) *
Ну почему не конкурентное? Вот это девайс http://mirmsk.ru/uake_analizator_kachestva_elektroen (как раз обрабатывает данные на частоте сотен кГц) работает под управлением Linux.
Среди AT91 сейчас есть камни с 400мГц частотой ядра и DDR-памятью.

А vxWorks всё-таки не бесплатное решение.


Функции этого дивайса может выполнить чип за 10$ -
http://www.analog.com/en/analog-to-digital...roducts/product.

О какой тут конкурентоспособности вообще речь???
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Jun 30 2012, 15:42
Сообщение #7


Знающий
****

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



Цитата(AlexandrY @ Jun 30 2012, 18:29) *
Функции этого дивайса может выполнить чип за 10$ -
http://www.analog.com/en/analog-to-digital...roducts/product.

О какой тут конкурентоспособности вообще речь???

Я рекомендую повнимательнее взглянуть на функционал девайса(анализатор качества) и микросхемы, ссылку на описание которой вы дали. ADE7880 - всего лишь счётчик электроэнергии.
Анализатор же позволяет записать сигнал (функция самописца). Позволяет анализировать сигнал в течении одного периода, что даёт возможность оперативно зафиксировать провал или перенапряжение, а не просто посчитать действующее значение и мощность.
Сравните цены к примеру на Satec PM175 и простой счётчик (на базе ADE).

Прошу не относится к вопросу поверхностно.

Сообщение отредактировал TigerSHARC - Jun 30 2012, 15:43
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jun 30 2012, 16:00
Сообщение #8


Знающий
****

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



Цитата(TigerSHARC @ Jun 30 2012, 19:42) *
Я рекомендую повнимательнее взглянуть на функционал девайса(анализатор качества) и микросхемы, ссылку на описание которой вы дали. ADE7880 - всего лишь счётчик электроэнергии.


Человек просто далекий от энергетики - для него счетчик ЭЭ это предел мечтаний sm.gif

Цитата
Вообщем берите vxWorks и не пожалеете. Там будет все : мультихостовый TCP/IP, FTP клиент/сервер, клиент NTP, реентерабельную FS и т.д.


в общем немного из того что есть в Linux но похуже и за деньги.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   Измеритель   Jun 28 2012, 20:00
|- - _Артём_   Цитата(Zelepuk @ Jun 28 2012, 23:40) Но, ...   Jun 28 2012, 20:59
||- - AlexandrY   Цитата(TigerSHARC @ Jun 30 2012, 18:42) Я...   Jun 30 2012, 16:48
||- - sasamy   Цитата(AlexandrY @ Jun 30 2012, 20:48) Ка...   Jun 30 2012, 16:56
||- - TigerSHARC   Цитата(sasamy @ Jun 30 2012, 20:56) Посмо...   Jun 30 2012, 19:09
||- - sasamy   Цитата(TigerSHARC @ Jun 30 2012, 23:09) Д...   Jun 30 2012, 19:45
||- - AlexandrY   Цитата(sasamy @ Jun 30 2012, 22:45) Я бол...   Jun 30 2012, 20:35
|- - XVR   Цитата(AlexandrY @ Jun 30 2012, 13:26) Кс...   Jul 1 2012, 15:12
- - MrYuran   Цитата(Zelepuk @ Jun 29 2012, 00:00) прос...   Jun 29 2012, 04:36
- - Zelepuk   А сработает ли суперлуп как я писал выше? Опыта ра...   Jun 29 2012, 09:50
|- - sasamy   Цитата(Zelepuk @ Jun 29 2012, 13:50) Но в...   Jun 29 2012, 16:26
|- - TigerSHARC   Цитата(sasamy @ Jun 29 2012, 20:26) можно...   Jul 31 2012, 18:23
- - Lotor   Цитата(Zelepuk @ Jun 29 2012, 00:00) Вста...   Jun 29 2012, 09:56
|- - Zelepuk   Цитата(Lotor @ Jun 29 2012, 13:56) Если н...   Jun 29 2012, 16:21
|- - Lotor   Цитата(Zelepuk @ Jun 29 2012, 20:21) А ес...   Jul 2 2012, 04:43
|- - Zelepuk   Цитата(Lotor @ Jul 2 2012, 07:43) На счет...   Jul 2 2012, 04:50
||- - Lotor   Цитата(Zelepuk @ Jul 2 2012, 08:50) Желат...   Jul 2 2012, 05:10
|- - AlexandrY   Цитата(Lotor @ Jul 2 2012, 07:43) Вы чита...   Jul 2 2012, 06:15
|- - Lotor   Цитата(AlexandrY @ Jul 2 2012, 10:15) Что...   Jul 2 2012, 10:26
|- - AlexandrY   Цитата(Lotor @ Jul 2 2012, 13:26) Я об из...   Jul 2 2012, 11:11
|- - Lotor   Цитата(AlexandrY @ Jul 2 2012, 15:11) А з...   Jul 2 2012, 11:29
|- - AlexandrY   Цитата(Lotor @ Jul 2 2012, 14:29) Вы явно...   Jul 2 2012, 13:14
- - Zelepuk   Посмотрел как реализуется событийная (набор конечн...   Jun 30 2012, 17:10
|- - sasamy   Цитата(Zelepuk @ Jun 30 2012, 21:10) прос...   Jun 30 2012, 17:22
- - Aner   Как то с памятью у них бедно, STM32F303VC ...   Jun 30 2012, 21:02
- - Zelepuk   Но Linux для меня как-то роднее и проще. Опишу бол...   Jun 30 2012, 21:17
- - @Ark   Цитата(Zelepuk @ Jun 29 2012, 00:00) Треб...   Jul 2 2012, 09:33


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

 


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


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