|
Измеритель, как организовать программу? |
|
|
|
Jun 28 2012, 20:26
|
Гуру
Группа: Свой
Сообщений: 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-карта, если оно не использовалось ранее.
|
|
|
|
|
Jun 28 2012, 20:40
|
Знающий
Группа: Участник
Сообщений: 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 тут совсем не подходит.
|
|
|
|
|
Jun 29 2012, 04:36
|
Беспросветный оптимист
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646
|
Цитата(Zelepuk @ Jun 29 2012, 00:00) просто я "панически" боюсь таких терминов как "синхронизация потоков", "мьютексы", "семафоры" и прочее... А это в любом случае придется делать, как ни назови. Просто в осях это уже реализовано и документировано, а при изобретении собственного велосипеда придется колхозить вручную. И не факт, что получится лучше.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jun 29 2012, 09:50
|
Знающий
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464
|
А сработает ли суперлуп как я писал выше? Опыта работы с ОС кроме Linux нет. Но в Linux не знаю как осуществить обработку данных с АЦП каждые 10 мс? поиожет бюольшой кольцевой буфер? Цитата(MrYuran @ Jun 29 2012, 07:36) А это в любом случае придется делать, как ни назови. Я дкмал суперлуп с опросом флагов избавлен от таких сложностей.
Сообщение отредактировал Zelepuk - Jun 29 2012, 09:49
|
|
|
|
|
Jun 29 2012, 09:56
|
Местный
Группа: Свой
Сообщений: 476
Регистрация: 3-07-07
Из: Санкт-Петербург
Пользователь №: 28 866
|
Цитата(Zelepuk @ Jun 29 2012, 00:00) Встал вопрос: как организовать программу? Если не хотите стандартную rtos, то можете сделать в виде суперлупа, в котором будут поочередно вызываться функции(конечные автоматы) из кольцевого буфера "задач". Это очень полезно, т.к. в конце пути осознаете целесообразность делать следующий проект на какой-нибудь ртос. Цитата(Zelepuk @ Jun 29 2012, 00:00) просто я "панически" боюсь таких терминов как "синхронизация потоков", "мьютексы", "семафоры" и прочее... А все эти слова придуманы, чтобы разделять общие данные. Например в Вашем случаи история на sd-карте может запрашиваться по эзернету, когда вы в неё пишите. Кстати синхронизацию потоков Вы делаете постоянно, когда есть данные, которые используются и в прерывание, и в основной программе.
--------------------
Ковырял чукча отверткой в ухе, звук в телевизоре и пропал.
|
|
|
|
|
Jun 29 2012, 16:21
|
Знающий
Группа: Участник
Сообщений: 634
Регистрация: 27-10-10
Пользователь №: 60 464
|
Цитата(Lotor @ Jun 29 2012, 13:56) Если не хотите стандартную rtos, то можете сделать в виде суперлупа, в котором будут поочередно вызываться функции(конечные автоматы) из кольцевого буфера "задач". Это очень полезно, т.к. в конце пути осознаете целесообразность делать следующий проект на какой-нибудь ртос.
А все эти слова придуманы, чтобы разделять общие данные. Например в Вашем случаи история на sd-карте может запрашиваться по эзернету, когда вы в неё пишите. Кстати синхронизацию потоков Вы делаете постоянно, когда есть данные, которые используются и в прерывание, и в основной программе. А если реализация будет в виде суперлупа, в котором будут поочерёдно вызываться функции(конечные автоматы) как вы рекомендовали, что будет когда в момент записи на SD-карту происходит запрос по Ethernet? запрос будет просто ждать своей очереди?
|
|
|
|
|
Jun 29 2012, 16:26
|
Знающий
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858
|
Цитата(Zelepuk @ Jun 29 2012, 13:50) Но в Linux не знаю как осуществить обработку данных с АЦП каждые 10 мс? Цитата 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. можно использовать poll в юзерспейс, при известной частоте дискретизации заранее известно сколько измерений нужно для 10 мс, задать буфер на 20 мс - процесс автоматически будет активирован когда данные готовы для обработки.
|
|
|
|
|
Jun 30 2012, 09:26
|
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.
|
|
|
|
|
Jun 30 2012, 13:29
|
Знающий
Группа: Свой
Сообщений: 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 всё-таки не бесплатное решение.
|
|
|
|
|
Jun 30 2012, 14:29
|
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. О какой тут конкурентоспособности вообще речь???
|
|
|
|
|
Jun 30 2012, 15:42
|
Знающий
Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 30 2012, 16:00
|
Знающий
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858
|
Цитата(TigerSHARC @ Jun 30 2012, 19:42) Я рекомендую повнимательнее взглянуть на функционал девайса(анализатор качества) и микросхемы, ссылку на описание которой вы дали. ADE7880 - всего лишь счётчик электроэнергии. Человек просто далекий от энергетики - для него счетчик ЭЭ это предел мечтаний Цитата Вообщем берите vxWorks и не пожалеете. Там будет все : мультихостовый TCP/IP, FTP клиент/сервер, клиент NTP, реентерабельную FS и т.д. в общем немного из того что есть в Linux но похуже и за деньги.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|