Перейти к содержанию
    

Сайты:

http://is.ifmo.ru

http://softcraft.ru - раздел Автоматы

 

еще см. на сайте iar.com программу VisualState

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

...посмотреть примеры на С, асме

 

Прямо здесь :) и сейчас :excl: :

 

void main (void)

{

 

 

while (1)

{

 

automat_1 ();

automat_2 ();

...

automat_N ();

 

 

}

 

 

 

 

}

 

 

void automat_i (void)

{

static char state=0;

 

switch (state)

{

case 0:

// чтото полезное может быть делаем

if (некоторое условие) state=... ;

// если условие выполнено, перейдем в другое состояние

return;

 

case 1:

// используем подчиненный автомат:

if (slave_automat_1 ()) state = .. ;

return;

 

...

case K:

return;

 

default: state=0; return; // авария !!

 

 

}

 

 

}

 

Важно понимать на уровне инстинктов:

- Все обьекты материального Мира - автоматы состояний

- придется полностю перестроить мозги

- возможно это удасться не сразу, зато окупится потом.

 

- что переход из состояния в состояние это как правило

наиболее сложная часть и может быть представлена

множеством состояний а лучше отдельным подчиненным автоматом.

Или их совокупностью.

 

- "автомат в состоянии" - это как правило ожидание условия

перехода в другие состояния. Но не всегда.

 

:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. IAR VisualSTATE - в пакете примеры (под разные контроллеры), есть симулятор самого автомата, т.е. в среде можно отладить логику работы автомата

 

2. TS Controls - программа для разработки автоматов состояний с генерацией кода на C и С++

TS_Controls.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2. TS Controls - программа для разработки автоматов состояний с генерацией кода на C и С++

 

Что то не ставится на ХР. Или это аддон к чему - то?

Может есть какой нибудь официальный сайт или мож какое нибудь описание?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что то не ставится на ХР. Или это аддон к чему - то?

Может есть какой нибудь официальный сайт или мож какое нибудь описание?

 

Вроде нормально встал

http://www.tscontrols.com/support.html - вот такое адрес

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может коротенько объясните, зачем это нужно и в каких случаях стоит применять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может коротенько объясните, зачем это нужно и в каких случаях стоит применять?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что то не ставится на ХР. Или это аддон к чему - то?

Может есть какой нибудь официальный сайт или мож какое нибудь описание?

 

Прекрастно ставится и на XP и w2k и NT.

Сам файл программы называется VState.exe

 

Сайта поддержки нет. (Прога - что называется проверенная временем)

В комплекте справка и примеры - все довольно прозрачно.

 

Выходной код С и С++;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

SWITCH MACRO

local MYP

CLR ZH

ADZ (MYP>>1)

IJMP /*Уйдем на обработчик*/

MYP

MyPrep VAR $

REPT \1

RJMP \2

ENDR

ENDM

 

 

CASE MACRO

val VAR $

ORG MyPrep+2*(\1)

RJMP ?Prg\1

ORG val

Public ?Prg\1

?Prg\1

ENDM

 

 

SWITCHC $80,?badEvnt

/*где $80 - индекс переключателЯ*/

 

 

?badEvnt /*прекратить разбор -обработка ошибки*/

RET

 

 

CASE $48 /*48 -команда */

CASE $4A /*4A -команда */

RJMP ?exit1

 

CASE $42 /*42 -команда */

CASE $44 /*44 -команда */

CASE $46 /*46 -команда */

RET

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уважаемые, подскажите, пожалуйста, среды разработки для конечных автоматов. Я попробовал работать и на VisualState и на TS Control, обе генерят медленный код. Может, есть какие-нибудь другие проги?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно почитать теорию графов, там заложен базовый смысл всего этого.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот хорошие объяснения с примерами есть:

 

 

State-Oriented Programming

http://www.embedded.com/2000/0008/0008feat1.htm

 

Embedded State Machine Implementation

http://www.embedded.com/2000/0012/0012feat1.htm

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

/***************************************************
* definitions Section
***************************************************/
typedef void(*PVOID)(void);
typedef PVOID(*STATE)(void);

/***************************************************
* Export Variables Section
***************************************************/
STATE State_ptr = state_1;

/***************************************************
*   Function Prototype Section
***************************************************/
STATE State_1();
STATE State_2();
STATE State_3();

/**************************************************
* Function name    : void main (void)
* Created by  : tmx
* Date created  : 12.09.2005 14:27
* Description  : main
**************************************************/
void main (void)
{
    while (1)
    {
 State_ptr = (STATE) State_ptr();
    }
}

/**************************************************
* Function name    : STATE State_1()
* Created by  : tmx
* Date created  : 12.09.2005 14:23
* Description  : STATE function
* Notes      : called by ptr from main cycle in bgnd
**************************************************/
STATE State_1()
{
    if (event_1)
    {
 return (STATE) State_2;
    }
    else
 return (STATE) State_1;
}

/**************************************************
* Function name    : STATE State_2()
* Created by  : tmx
* Date created  : 12.09.2005 14:24
* Description  : STATE function
* Notes      : called by ptr from main cycle in bgnd
**************************************************/
STATE State_1()
{
    if (event_1)
    {
 return (STATE) State_3;
    }
    else
 return (STATE) State_2;
}

/**************************************************
* Function name    : STATE State_3()
* Created by  : tmx
* Date created  : 12.09.2005 14:24
* Description  : STATE function
* Notes      : called by ptr from main cycle in bgnd
**************************************************/
STATE State_3()
{
    if (event_3)
    {
 return (STATE) State_1;
    }
    else
 return (STATE) State_3;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Этот код Вы наверняка писали руками. А есть ли проги, в которых можно нарисовать граф переходов, отладить, а потом сгенерить код по этому графу? Есть VisualState и на TS Control, но код они генерят - просто атас, особенно VisualState. В качестве примера я как-то сваял такой граф. Power - всегда нажатая кнопка, LEDon и LEDoff - состояния, в которых диод горит или потушен соответственно. Гонял на MSP430 на частоте 8,192 МГц. В случае VisualState диод моргал с частотой около 3 кГц, т.е. переход по состояниям выполнялся с частотой 6 кГц, или один переход выполнялся через 8192/6 = 1365 тиков тактовой частоты. Многовато для такого простого графа. В случае TS Control диод моргал с частотой 20 кГц, если отключить очередь событий, то 40 Кгц, т.е. один переход через 100 тиков. Лучше, конечно, но в TS Control нет симулятора.

Так вот может кто знает прогу , в которой есть симулятор и которая генерит более-менее приемлемый код? А теорию я знаю.

post-70-1126523022_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...