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

 
 
> Организация программ, дайте вектор куда копать
Zelepuk
сообщение Mar 31 2017, 07:52
Сообщение #1


Знающий
****

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



Планируется разработка измерительного прибора, принимающего данные от АЦП в прерывании, складывающего данные в буфер и обрабатывающего данные пос ложному алгоритму.
Дело в том что нужно часто давать сигналы готовности данных на разных ступенях алгоритма. Использовать флаги - глобальные переменные неудобно (их будет слишком много).
Сообщить, какие "более красивые подходы" для этого используются.
например на микрокотнтроллере можно использовать ОСРВ и ее средства взаимодействия между задачами, а как быть когда нужно сделать демо-проект на PC (для последующего переноса на МК)?

Например есть такая задача:
1)АЦП складывает данные непрерывно в кольцевой буфер
2) Раз в миллисекунду данные из буфера обрабатываются результат сохраняется в переменную.
3) после 10й итерации по пункту 2 (т.е. раз в 10 миллисекунд) нужно делать усреднение данных

У меня сейчас в функции, которая реализует п.2 просто есть счетчик итераций в виде переменной. Я опрашиваю эту переменную, и, как только она равна 10 - запускаю функию, реализующую п.3
Все это выглядит ужасно в бесконечном цикле.

Подскажите, как сделать грамотно.

Сообщение отредактировал Zelepuk - Mar 31 2017, 08:00
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ViKo
сообщение Mar 31 2017, 08:19
Сообщение #2


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Я понял так, программа делает то, что от нее требуется. Кому какое дело, как она устроена? Кроме разработчика,желающего сделать красиво. Так и сделайте, как считаете. Сравните. Переделайте еще 5 раз. Нормальный процесс.
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Mar 31 2017, 08:24
Сообщение #3


Знающий
****

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



Цитата(ViKo @ Mar 31 2017, 11:19) *
Я понял так, программа делает то, что от нее требуется. Кому какое дело, как она устроена? Кроме разработчика,желающего сделать красиво. Так и сделайте, как считаете. Сравните. Переделайте еще 5 раз. Нормальный процесс.

Эт понятно. мне интересно как можно считать. На уме был только суперлуп... sad.gif но есть понимание что тогда прога будет изобиловать глобальными переменными.
Я про подходы говорю. Интересно как можно сделать. Вот статья в тему интересная: https://habrahabr.ru/post/148805/

Я вот например хочу сделать на FreeRTOS, но как тогда удобно сделать чтобы проект запустился и на PC. На PC запускаю для демонстрационных целей.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2017, 09:09
Сообщение #4


Ally
******

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



Цитата(Zelepuk @ Mar 31 2017, 11:24) *
Эт понятно. мне интересно как можно считать. На уме был только суперлуп... sad.gif но есть понимание что тогда прога будет изобиловать глобальными переменными.
Я про подходы говорю. Интересно как можно сделать. Вот статья в тему интересная: https://habrahabr.ru/post/148805/

Я вот например хочу сделать на FreeRTOS, но как тогда удобно сделать чтобы проект запустился и на PC. На PC запускаю для демонстрационных целей.

FreeRTOS не лучший выбор. Я бы рекомендовал Micrium OS
Гораздо быстрее, понятнее и компактнее чем FreeRTOS. Там кстати очень ценная фишка для риалтайма появилась - работа сервисов без запрещения прерываний.

Глобальные флаги не так плохи как кажется.
Когда у вас появится больше 5-и источников прерываний по 1 мс и около десятка задач, просто чтобы поддерживать все необходимые интерфейсы как вот здесь:
Прикрепленное изображение

и когда использование процессора подойдет к 80%, то вы быстро поймете, что стоит вместо сервисов RTOS использовать глобальные флаги или иначе потеряете реальное время.

Хороший способ - это критичные прерывания сделать прерываниями ядра, и чтобы они выставляли глобальные флаги и софтварно прерывания с сервисами RTOS.
Это очень эффективный способ прореживания прерываний PendSV и укорачивания времени выполнения остальных прерываний.

Но на PC вы это не перенесете, это все очень архитектурно привязано к железу.
Риалтайм в принципе не отладить на PC.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 31 2017, 09:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(AlexandrY @ Mar 31 2017, 11:09) *
FreeRTOS не лучший выбор. Я бы рекомендовал Micrium OS
Гораздо быстрее, понятнее и компактнее чем FreeRTOS.

Поддерживаю! rolleyes.gif

Цитата(AlexandrY @ Mar 31 2017, 11:09) *
Но на PC вы это не перенесете, это все очень архитектурно привязано к железу.
Риалтайм в принципе не отладить на PC.

Перенести можно, если разделить на middle-ware и собственно low level IO с периферией.
Сам делал и отлаживал так когда сложный драйвер. Из железа ему нужен был только IO с UART.
Так что нижний уровень драйвера на МК - это был IO в/из кольцевых буферов в ISR-ах, а на PC - в те же самые буфера в/из файловых функций WinAPI + система сообщений к задаче обработке - мэйл-боксы под Микриум, и соотв. средства синхронизации под винду. Основной код драйвера - выполнялся в виде задачи обработки событий, которая была общая для Win и для Микриум. Очень удобно было отлаживать. Там 95% всего объёма составляло это middle-ware.
Да собственно так же организована FatFS. Её тоже можно выполнять под любой ОС хоть под виндой. Написав простую low level IO прослойку.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2017, 10:20
Сообщение #6


Ally
******

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



Цитата(jcxz @ Mar 31 2017, 12:23) *
Перенести можно, если разделить на middle-ware и собственно low level IO с периферией.

Micrium OS с самого рождения имела порт по Windows.
А нынче у нее под Windows выполняется всё: файловая, сетевые стеки, GUI, USB
Весь список виден в Micrium Platform Builder.

Но риалтайм ( т.е. как быстро обрабатываются задачи и прерывания и как расходуются ресурсы процессора) это отладить не помогает.

На PC я отлаживаю исключительно сторонние программные модули с неизвестным потреблением памяти.
Все остальное не оправдано, поскольку такие IDE как IAR с SWD компилируют и загружают на целевую платформу почти с такой же скоростью как и в Visual Studio под Windows
Go to the top of the page
 
+Quote Post
Zelepuk
сообщение Mar 31 2017, 12:12
Сообщение #7


Знающий
****

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



Цитата(jcxz @ Mar 31 2017, 11:52) *
В ISR, который пишет данные в буфер, смотреть сколько данных накопилось в буфере, и если их больше чем сколько-то - посылать сообщение в майл-бокс.
А под ОС есть задача, которая ждёт на этом мэйл-боксе...

Вот вопрос как это делается, где почитать/посмотреть/скачать пример этого...

Цитата(AlexandrY @ Mar 31 2017, 13:20) *
Но риалтайм ( т.е. как быстро обрабатываются задачи и прерывания и как расходуются ресурсы процессора) это отладить не помогает.

Собственно на PC не нужно отлаживать реалтайм, на PC нужно показать как все это работает. Например вместо считывания данных в прерывании считывать данные из файла.
Вопрос только как именно это сделать, если на мк есть прерывание и функциа типа ISR_ADC(), то на PC(в консольном приложении) как имитировать периодический вызов функции чтения из файла?
Go to the top of the page
 
+Quote Post
jcxz
сообщение Mar 31 2017, 13:20
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Zelepuk @ Mar 31 2017, 14:12) *
Вот вопрос как это делается, где почитать/посмотреть/скачать пример этого...

Что делается? Я вроде описал всё. Документация по конкретным функциям есть в исходниках uCOS.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Zelepuk   Организация программ   Mar 31 2017, 07:52
|- - Lagman   Цитата(AlexandrY @ Mar 31 2017, 12:09) Я ...   Mar 31 2017, 09:42
||- - AlexandrY   Цитата(Lagman @ Mar 31 2017, 12:42) Эх, б...   Mar 31 2017, 10:28
||- - Lagman   Цитата(AlexandrY @ Mar 31 2017, 13:28) Бе...   Mar 31 2017, 15:13
|- - jcxz   Цитата(AlexandrY @ Mar 31 2017, 12:20) Вс...   Mar 31 2017, 10:24
|- - AlexandrY   Цитата(Zelepuk @ Mar 31 2017, 15:12) как ...   Mar 31 2017, 12:18
- - jcxz   Цитата(Zelepuk @ Mar 31 2017, 09:52) У ме...   Mar 31 2017, 08:52
- - XVR   2 ТС - какой у вас целевой процессор и ресурсы? Ес...   Mar 31 2017, 09:55
- - Zelepuk   Micrium платный. да еще за IAR платить надо. Прощ...   Mar 31 2017, 12:54
|- - ViKo   Цитата(Zelepuk @ Mar 31 2017, 15:54) Прощ...   Mar 31 2017, 13:33
- - syoma   Zelepuk, а не хотите попробовать Matlab/Simulink/E...   Mar 31 2017, 13:22
|- - Zelepuk   Цитата(syoma @ Mar 31 2017, 16:22) Zelepu...   Mar 31 2017, 13:47
||- - jcxz   Цитата(Zelepuk @ Mar 31 2017, 15:47) Поче...   Mar 31 2017, 14:26
|- - AlexandrY   Цитата(syoma @ Mar 31 2017, 16:22) Т.е. в...   Mar 31 2017, 15:26
|- - Lagman   Цитата(AlexandrY @ Mar 31 2017, 18:26) Ну...   Mar 31 2017, 16:16
- - syoma   ЦитатаГенерируемый код весьма труден для понимания...   Mar 31 2017, 14:19
|- - Zelepuk   Цитата(syoma @ Mar 31 2017, 17:19) Его не...   Mar 31 2017, 14:33
|- - syoma   Цитата(Zelepuk @ Mar 31 2017, 16:33) прим...   Mar 31 2017, 19:31
|- - AlexandrY   Цитата(syoma @ Mar 31 2017, 22:31) Посмот...   Mar 31 2017, 20:19
|- - syoma   Цитата(AlexandrY @ Mar 31 2017, 22:17) Он...   Mar 31 2017, 20:26
||- - AlexandrY   Цитата(syoma @ Mar 31 2017, 23:26) А как ...   Mar 31 2017, 20:37
||- - syoma   Цитата(AlexandrY @ Mar 31 2017, 22:37) Си...   Mar 31 2017, 20:53
|- - Lagman   Цитата(AlexandrY @ Mar 31 2017, 23:19) Не...   Mar 31 2017, 22:48
- - TigerSHARC   Интересно сравнить, где "красивше" будет...   Apr 3 2017, 18:11
|- - Lagman   Цитата(TigerSHARC @ Apr 3 2017, 21:11) Ин...   Apr 3 2017, 19:49
|- - Zelepuk   Цитата(Lagman @ Apr 3 2017, 22:49) Как вы...   Apr 4 2017, 06:20
|- - Baser   Цитата(Zelepuk @ Apr 4 2017, 09:20) Зачем...   Apr 4 2017, 09:26
|- - Lagman   Добавлю к словам Baser'a Цитата(Zelepuk ...   Apr 4 2017, 11:00
||- - TigerSHARC   Цитата(Lagman @ Apr 4 2017, 14:00) Добавл...   Apr 4 2017, 19:00
||- - AlexandrY   Цитата(TigerSHARC @ Apr 4 2017, 22:00) Мг...   Apr 4 2017, 19:28
||- - Lagman   Цитата(TigerSHARC @ Apr 4 2017, 22:00) Мг...   Apr 4 2017, 19:41
||- - Make_Pic   Решил не создавать новую тему, а здесь спросить: ...   Apr 5 2017, 10:58
||- - jcxz   Цитата(Make_Pic @ Apr 5 2017, 12:58) Нико...   Apr 5 2017, 20:02
||- - Make_Pic   Цитата(jcxz @ Apr 6 2017, 00:02) Сохранен...   Apr 6 2017, 04:44
|- - HardEgor   Цитата(Zelepuk @ Apr 4 2017, 13:20) Зачем...   Apr 4 2017, 11:16
- - bve   Из Вашего обработчика вызовите свободное прерывани...   Apr 6 2017, 18:22
|- - Make_Pic   Цитата(bve @ Apr 6 2017, 21:22) Из Вашего...   Apr 7 2017, 07:41
- - k155la3   Цитата(Zelepuk @ Mar 31 2017, 10:52) План...   Apr 7 2017, 06:58
- - MrYuran   Цитата(Zelepuk @ Mar 31 2017, 10:52) Все ...   Apr 8 2017, 05:06
|- - TigerSHARC   Цитата(MrYuran @ Apr 8 2017, 08:06) Не зн...   Apr 8 2017, 08:16
|- - MrYuran   Цитата(TigerSHARC @ Apr 8 2017, 11:16) На...   Apr 8 2017, 09:18
|- - TigerSHARC   Цитата(MrYuran @ Apr 8 2017, 12:18) Скоре...   Apr 8 2017, 15:17
|- - jcxz   Цитата(MrYuran @ Apr 8 2017, 11:18) Скоре...   Apr 8 2017, 19:02
- - syoma   ЦитатаОчевидно, что вы пишете только простые прогр...   Apr 8 2017, 19:51
|- - k155la3   Цитата(syoma @ Apr 8 2017, 22:51) . . . ....   Apr 9 2017, 08:30
|- - jcxz   Цитата(syoma @ Apr 8 2017, 21:51) Все про...   Apr 9 2017, 08:59
|- - k155la3   Цитата(jcxz @ Apr 9 2017, 11:59) . . . Э...   Apr 9 2017, 09:52
|- - jcxz   Цитата(k155la3 @ Apr 9 2017, 11:52) В мое...   Apr 9 2017, 15:26
|- - k155la3   Цитата(jcxz @ Apr 9 2017, 18:26) Не обяза...   Apr 11 2017, 07:34
- - aiwa   Цитата(TigerSHARC @ Apr 8 2017, 18:17) Зд...   Apr 9 2017, 10:40
- - pokk   Добрый день, для своих программ использовал Switch...   May 22 2017, 01:14
- - k155la3   Цитата(pokk @ May 22 2017, 04:14) . . . ...   May 22 2017, 06:24


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

 


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


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