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

 
 
> Автоматный подход (SWITCH), Поделитесь опытом использования
Lem
сообщение Jul 2 2006, 17:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



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

Результаты положительные, но тут хотелось бы спросить совета профессионалов, каким путём дальше идти, стоит ли использовать кодогенераторы и прочее ПО и т. д.

Интересно было бы узнать, насколько часто микроконтроллерщики используют автоматный подход к проектированию программ. Какое ПО при этом используется (Visual State etc.), каковы результаты (увеличение скорости разработки, надёжности, улучшение взаимопонимания в коллективе разарботчиков).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lem
сообщение Jul 2 2006, 20:41
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 37
Регистрация: 20-03-05
Пользователь №: 3 533



Выбор - понятно.
но интересно узнать именно соотношение подходов по затратам на этапе проектирования, по требованиям к железу (эффективность программной реализации), по сложности реализуемых задач, по масштабируемости (реализация однотипных тактик, но с различным числом источников сигналов и, соотвественно, правил). Причём, речь идёт конкретно о семействе AVR, как можно было бы догодаться, то есть, экономия железа - на первом или почти на первом месте (естественно, применяется С, но возможность применения RTOS на таком кристалле, как, например, atmega8, сомнительна).
Немного сумбурно, но суть моих сомнений-размышлений, думаю, понятна. Интересно услышать, что думают об этом другие разарботчики.
Go to the top of the page
 
+Quote Post
osnwt
сообщение Jul 3 2006, 09:14
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 175
Регистрация: 26-01-06
Из: Sevastopol
Пользователь №: 13 664



Цитата(Lem @ Jul 2 2006, 23:41) *
возможность применения RTOS на таком кристалле, как, например, atmega8, сомнительна

Использование кооперативных RTOS вполне возможно и целесообразно даже на таких кристаллах. См, например, jacos. Очень быстрая и компактная, но кооперативная RTOS (отработал свою задачу – дай поработать другим). Заметно упрощает написание многих навороченных алгоритмов с явно параллельными задачами.

У меня на базе jacos в ATmega8 работает вариометр (прибор для пилотов парапланов). В нем крутится около десятка задач (независимые строго периодические опросы датчиков давления, перегрузки, температуры, вычисление высоты и скорости ее изменения с использованием плавающей арифметики - почему бы и нет, если вполне хватает ресурсов и быстродействия, формирование тональных сигналов с плавно управляемой частотой и периодом их повторения в зависимости от измеренных параметров, сканирование кнопок, мониторинг питания, и т.п.). Все это, разумеется, можно писать и без RTOS (изначально так и было), но использование jacos позволило существенно упростить логику в системе, где критичны относительно точные (в пределах кванта времени RTOS) временнЫе взаимосвязи задач и уделить основное внимание собственно предмету. Даже моргание двухцветным светодиодом (зеленый-пауза-красный-пауза) – и то проще сделать отдельной задачей, что может выглядеть вот так (все переменные убраны для очевидности текста):

Код
//
// Flashing LED
//
#if USE_LED_FLASHING

#define LED_FLASHING_PERIOD     5  // seconds

RTOS_TASK(FlashingLED,0)
{
    DDRC_Bit2 = DDRC_Bit3 = 1;

    while (1)
    {
        OS_DELAY_S(LED_FLASHING_PERIOD);
        PORTC_Bit2 = 1;
        OS_DELAY_mS(50);
        PORTC_Bit2 = 0;
        OS_DELAY_S(LED_FLASHING_PERIOD);
        PORTC_Bit3 = 1;
        OS_DELAY_mS(50);
        PORTC_Bit3 = 0;
    }
}

#endif // USE_LED_FLASHING


И в основном коде запуск задачи:

Код
#if USE_LED_FLASHING
    RTOS_TASK_CREATE(FlashingLED);
#endif


На этом все мои заботы о постоянно моргающем светодиоде закончены. Важно то, что OS_DELAY - это не то же самое, что холостой цикл - на самом деле именно в это время работают другие задачи, и если никто не захватит управление на дольшее время, чем квант времени (а это - забота программиста), то очередной вызов этой задачи будет гарантированно в пределах очередного кванта. Тем более, что опционально поддержаны также приоритеты задач (0 при описании задачи и есть приоритет).

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

В общем, право на жизнь такие штуки имеют даже в контроллерах с 4-8 килобайтами памяти программ и 128 байтами RAM. И если говорить о предмете темы, то кооперативные OS, по моему мнению, ближе к автоматному подходу, чем операционки с вытесняющей многозадачностью.

Сообщение отредактировал osnwt - Jul 3 2006, 09:20
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Lem   Автоматный подход (SWITCH)   Jul 2 2006, 17:17
- - Laptop   Я использую следующий подход. main выполняется в в...   Jul 2 2006, 19:09
- - vet   Да, собственно, выбор-то невелик - или КА, или зад...   Jul 2 2006, 19:22
|- - pitt   Цитата(vet @ Jul 2 2006, 15:22) ..задачи ...   Jul 2 2006, 21:28
||- - krdmitry   Цитата(pitt @ Jul 3 2006, 01:28) Цитата(v...   Jul 3 2006, 08:22
|- - tag   Цитата(vet @ Jul 2 2006, 23:22) Да, собст...   Sep 17 2007, 06:17
- - krdmitry   А есть ли еще программы-кодогенераторы, кроме Visu...   Jul 2 2006, 20:34
|- - Lem   Цитата(krdmitry @ Jul 3 2006, 00:34) А ес...   Jul 2 2006, 20:53
|- - tag   Цитата(krdmitry @ Jul 3 2006, 00:34) Врод...   Jul 10 2006, 15:17
|- - µµC   Цитата(Lem @ Jul 3 2006, 00:41) Причём, р...   Jul 14 2006, 12:34
|- - osnwt   Цитата(µµC @ Jul 14 2006, 15:34) Для mega...   Jul 14 2006, 12:43
|- - µµC   Цитата(osnwt @ Jul 14 2006, 16:43) Особен...   Jul 14 2006, 13:30
- - _artem_   имхо автомат конечных состояний и ртос это две раз...   Jul 3 2006, 09:33
|- - osnwt   Цитата(_artem_ @ Jul 3 2006, 12:33) имхо ...   Jul 3 2006, 09:44
|- - _artem_   Цитата(osnwt @ Jul 3 2006, 12:44) Цитата(...   Jul 3 2006, 09:53
|- - osnwt   Цитата(_artem_ @ Jul 3 2006, 12:53) Цитат...   Jul 3 2006, 10:51
- - sensor_ua   Посмотрите NesOS - Finite State Machine Operating ...   Jul 3 2006, 11:03
|- - osnwt   Цитата(sensor_ua @ Jul 3 2006, 14:03) Пос...   Jul 3 2006, 11:16
|- - =GM=   Еще один пример ОСРВ для МК и ДСП можно посмотреть...   Jul 3 2006, 12:37
- - _artem_   2 osnwt, в слючае роунд робин можно сделать так чт...   Jul 3 2006, 11:26
|- - osnwt   Цитата(_artem_ @ Jul 3 2006, 14:26) 2 osn...   Jul 3 2006, 11:36
|- - _artem_   ЦитатаЕсли разговор конкретно про jacos, то там пр...   Jul 3 2006, 13:10
|- - osnwt   Цитата(_artem_ @ Jul 3 2006, 16:10) Цитат...   Jul 3 2006, 14:09
- - bialix   вот еще один какбы генератор WhatOS: http://www.st...   Jul 3 2006, 12:20
- - pitt   RTOS большая и многогранная тема. Нет и не может б...   Jul 3 2006, 15:00
- - vesago   Вперве применил КА когда надо было сделать контрол...   Jul 4 2006, 08:13
|- - _artem_   Цитата(vesago @ Jul 4 2006, 11:13) Вперве...   Jul 4 2006, 08:43
|- - ig_z   Цитата(_artem_ @ Jul 4 2006, 11:43) Вызов...   Jul 4 2006, 10:30
||- - _artem_   Цитата(ig_z @ Jul 4 2006, 13:30) Цитата(_...   Jul 4 2006, 11:22
||- - bialix   Цитата(_artem_ @ Jul 4 2006, 14:22) Visua...   Jul 4 2006, 14:34
||- - _artem_   Цитата(bialix @ Jul 4 2006, 17:34) Цитата...   Jul 4 2006, 15:16
||- - bialix   Цитата(_artem_ @ Jul 4 2006, 18:16) Цитат...   Jul 4 2006, 17:10
|- - _Bill   Цитата(_artem_ @ Jul 4 2006, 11:43) Вызов...   Jul 4 2006, 11:21
|- - Kirill Frolov   Цитата(_artem_ @ Jul 4 2006, 12:43) Вызов...   Sep 16 2007, 14:22
|- - Dog Pawlowa   Цитата(Kirill Frolov @ Sep 16 2007, 17:22...   Sep 16 2007, 19:32
|- - singlskv   Цитата(Kirill Frolov @ Sep 16 2007, 18:22...   Sep 16 2007, 20:16
- - white.wind   Возможно полезным будет ресурс на тему http://soft...   Jul 4 2006, 08:24
- - bialix   Хотел бы пару слов сказать в ответ исходному посту...   Jul 4 2006, 14:54
|- - Crystaly   Цитата(krdmitry @ Jul 3 2006, 00:34) ...Е...   Jul 7 2006, 06:45
|- - bialix   Цитата(Crystaly @ Jul 7 2006, 09:45) Цита...   Jul 7 2006, 13:04
|- - krdmitry   Цитата(bialix @ Jul 7 2006, 17:04) Неправ...   Jul 7 2006, 19:34
||- - Lem   Цитата(krdmitry @ Jul 7 2006, 23:34) Цита...   Jul 7 2006, 19:56
||- - bialix   Цитата(krdmitry @ Jul 7 2006, 22:34) Цита...   Jul 10 2006, 09:45
|- - Crystaly   Цитата(bialix @ Jul 7 2006, 17:04) У вас ...   Jul 10 2006, 06:13
|- - bialix   [quote name='Crystaly' date='Jul 10 20...   Jul 10 2006, 09:58
- - _artem_   Ну думаю, что скорее всего осязание подвело Вас иб...   Jul 4 2006, 17:26
- - CD_Eater   Цитата(bialix @ Jul 4 2006, 18:54) Сам по...   Jul 6 2006, 21:54
|- - osnwt   Цитата(CD_Eater @ Jul 7 2006, 00:54) Имхо...   Jul 6 2006, 22:14
|- - bialix   Цитата(osnwt @ Jul 7 2006, 01:14) Цитата(...   Jul 7 2006, 05:57
- - Evgeny_CD   Может кому пригодится ****************************...   Jul 10 2006, 07:25
- - bialix   Перепишем алгоритм светофора в терминах классическ...   Jul 10 2006, 10:16
- - Tran   Раньше уже была тема о КА - http://electronix.ru/f...   Jul 10 2006, 11:27
- - bialix   По поводу диаграмм конечных автоматов в нотации UM...   Jul 11 2006, 05:36
- - sensor_ua   Cегодня такая вот прелесть попалась - 4 макроса дл...   Jul 11 2006, 18:22
- - sensor_ua   ЦитатаВо-первых оптимизирующий компилятор заменяет...   Sep 16 2007, 17:20
- - sansnotfor   Вот перевод упомянутой здесь статьи о конечных авт...   Mar 24 2011, 00:24
- - kovz   могу посоветовать вот это http://www.state-machine...   Mar 28 2011, 13:15


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

 


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


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