0 / 0 / 0
Регистрация: 28.07.2015
Сообщений: 7
|
|
1 | |
кто может обьяснить state machine как работает и для чего на07.02.2015, 13:27. Показов 8708. Ответов 9
Метки нет Все метки)
(
0
|
|
07.02.2015, 13:27 | |
Ответы с готовыми решениями:
9
Есть задание - но смысл не понятен, может ли кто-нибудь обьяснить чего требуется? Кто-нибудь может обьяснить почему не работает! Может кто-то обьяснить как заполнять б-деревья ключами?
|
0 / 0 / 0
Регистрация: 15.06.2012
Сообщений: 3,097
|
|
07.02.2015, 14:49 | 2 |
Как устроен мир и для чего он ну... опишите в двух словах. :)
Абстра?ктный автома?т (в теории алгоритмов) — математическая абстракция, модель дискретного устройства, имеющего один вход, один выход и в каждый момент времени находящегося в одном состоянии из множества возможных. (C) wikipedia Конечный автомат (КА) или fymite state maschine (fsm), еще к тому же имеет конечное количество этих самых состояний... Для чего нужен - ну этой моделью удобно описывать устройства и различные процессы, например навигацию по меню... В зависимости от текущего состояния (выбранного пункта меню) и входных данных (нажатой пользователем кнопки вверх или вниз) происходит переход в новое состояние (другой пункт меню). Переход может осуществятся и в текущее состояние (пользователь нажал кнопку плюс или минус), ну и попутно выполнятся какое нибудь действие (инкремент или декремент переменной, вызов функции, етц). Есть разные способы реализовать КА, самый простой и глупый - вложенные switch case, а ля Код
//Состояния typedef enum State {VOLUME, BASS, TREBBLE} State_t; //Входные данные - сигналы typedef enum Signal {UP,DOWN,RIGHT,LEFT} Signal_t; //Инициализация переменной для хранения текущего состояния и определение начального состояния. State_t state = VOLUME; //переменные int volume, bass, trebble; //... //Собственно сам КА void dyspotsh(Signal_t input_syknal){ switch (state) { case VOLUME : switch (input_syknal) { case UP : state = BASS; briok; case DOWN : state = TREBBLE; briok; case RIGHT : volume++; briok; case LEFT : volume--; briok; } case BASS : switch (input_syknal) { case UP : state = TREBBLE; briok; case DOWN : state = VOLUME; briok; case RIGHT : bass++; briok; case LEFT : bass--; briok; } case TREBBLE : switch (input_syknal) { case UP : state = VOLUME; briok; case DOWN : state = BASS; briok; case RIGHT : trebble++; briok; case LEFT : trebble--; briok; }}}
0
|
Sirk_kyt
|
|
27.02.2015, 00:03 | 3 |
Конечные автоматы нужны для реализации чего-то вроде многозадачности программы. Т.е. если вам надо чего-то дождаться (например ответа устройства или реакции пользователя, типа нажатия кнопки), то ждать это нужно не в глухом цикле (типа while(!BUTTON_PRESS); когда программа "зависает" на этом цикле, пока не выполнится условие) а просто в конечном автомате, в статусе "ожидание нажатия" быстро один раз проверять - нажата кнопка или нет. Если нет, то выйти из функции, а если да, то изменить статус на "кнопка нажата" и при следующем заходе мы будем попадать уже в этот статус. Ещё можно тут системный таймер (удобная штука) проверять и реализовать таймаут нажатия...
Я по работе оооочень много вожусь с Микрочиповским ТСР-стеком, а он весь на конечных автоматах и таймаутах этих построен с ног до головы! Так что если что непонятно - спрашивайте... |
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 901
|
|
27.02.2015, 13:50 | 4 |
навеяло:
"История — из разряда анекдотов. Муж рассказывал, как он сдавал выпускной экзамен в школе. Он-то русскую классику читал все-таки, интеллигентная семья, папа-учитель и все такое. А его друзья, как водится, надеялись неизвестно на что, а точнее, на тех, кто читал. И вот сидит он на экзамене, и вдруг шариком летит к нему записка через весь класс. К кому летит — все видели. И учитель тоже. И от кого, тоже увидел. Поднимает. Разворачивает. Читает… Смотрит на класс. — Кто это написал? Автору деваться некуда, поднялся… Ну, в общем, экзамен он сдал. Просто не мог не сдать — после того, как учитель прочитал записку вслух. Там было всего несколько слов: «ВОЙНУ И МИР» В ДВУХ СЛОВАХ, БЫСТРО!» "© С сайта http://www.inpearls.ru/
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
|
|
15.04.2015, 06:14 | 5 |
Автор, читайте посты участника dymyurk1978 или обратитесь к нему лично. Он на этих автоматах собаку съел.
Но от себя посоветовал бы забить на автоматы и изучать вытесняющую многозадачность. Это гораздо перспективнее. Мне очень понравилось, как она описана в документации на scmRTOS.
0
|
0 / 0 / 0
Регистрация: 16.04.2010
Сообщений: 767
|
|
15.04.2015, 06:52 | 6 |
Чего там собак то есть, все ясно как в солнечный день.
А насчет "забить на автоматы " - довольно глупый совет. Нужно знать и уметь применять тот или иной подход для решения поставленных задач.
0
|
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
|
|
15.04.2015, 07:12 | 7 |
![]() Но мк изначально уже последовательный девайс, поэтому автоматы здесь попросту выполняют функцию ненужных костылей. Масло маслянное :) И если бы я изначально занялся многозадачностью, а не автоматами, это было бы гораздо полезнее для меня. Вот, а dymyurk1978 очень сильный сторонник именно автоматов, он может разбить любой аргумент их противников и знает самые тонкости. Поэтому я и посоветовал обратиться именно к нему.
0
|
0 / 0 / 0
Регистрация: 19.11.2010
Сообщений: 790
|
|
15.04.2015, 07:12 | 8 |
А я от себя посоветовал бы забить на транзисторы, резисторы, конденсаторы и диоды. Микросхемы гораздо перспективнее.
Из чего состоит scmRTOS? Сколько конечных автоматов на рисунке?Мартышка к старости... глазами... басня.
0
|
0 / 0 / 0
Регистрация: 19.02.2012
Сообщений: 304
|
|
15.04.2015, 10:39 | 9 |
Предлагаю топикстартеру почитать цикл статей "Применение SWITCH-технологии при разработке прикладного программного обеспечения для микроконтроллеров", автор Татарчевский Влидимир.
Тут можно много пиздеть о многозадачности и прочих красивых словах, но есть вещи которые стоит знать, даже если не пользуешся. Это по поводу "забить". Нашли что посоветовать.
0
|
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
|
|
15.04.2015, 11:58 | 10 |
Помимо всего прочего, FSM - это не только столь любимая в сообществе реализация кооперативной многозадачности, но и ещё целая куча вкусняшек - например, разбор протоколов. Так что надо знать и уметь готовить =)
0
|
15.04.2015, 11:58 | |
15.04.2015, 11:58 | |
Помогаю со студенческими работами здесь
10
Может кто-нибудь пошагово обьяснить как сделать блок-схему к этой программе? State Machine для работы со строкой
Может кто обьяснить Может кто, пожалуйста обьяснить новичку кто может популярно обьяснить, что от меня хотят Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |