Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 20 mar 2026, o 23:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 22 sty 2018, o 11:17 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

Czy mógłby mi ktoś wyjaśnić o co chodzi z pojęciem "maszyna stanów". Oczywiście po wpisaniu w google hasła wyskakuje mnóstwo odnośników, ale przyznam, że nie mogę załapać o co chodzi. Mam nieodparte wrażeniem, że większość opisów, prób wyjaśnienia pisana jest przez ludzi którzy znają temat dla ludzi którzy też wiedzą o co chodzi. Używane są pojęcia i skróty myślowe przez które nie mogę zrozumieć w ogóle idei działania i sensu stosowania. Jeśli miałby ktoś ochotę i chwilę czasu proszę o wyjaśnienie, ale "tak po naszemu".
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 12:09 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 291
Pomógł: 6

W technice cyfrowej są tzw.
-Układy logiczne
Wyjście zależy tylko od wejścia np:
- AND https://scratch.mit.edu/projects/195561019/
- OR https://scratch.mit.edu/projects/195562069/
- XOR https://scratch.mit.edu/projects/183076426/
Układy logiczne nie mają pamięci inaczej przerzutników.

-Automaty inaczej np maszyna stanów
Mają pamięć!
Wyjście zależy nie tylko od wejścia ale także od stanu w jakim jest automat. Stan to w skrócie stan jego pamięci!
Np. Licznik ma 1 na wejściu liczącym x oraz jego stan np. 1232
Zauważ, że jego stan następny zależy od wejścia x ale także od jego stanu aktualnego
Gdy stan aktualny=1232 to stan następny=1233

Innym przykładem jest podstawowy układ w mikroprocesorze akumulator w którym akumulator w stanie następnym
= aktualny stan akumulatora + wejście cyfrowe


Np. stanem aktualnym akumulatora jest 2568 (w jego pamięci inaczej w rejestrze) a jego wejście cyfrowe 1327 to stanem następnym będzie akumulatora będzie 3895
Zauważ że nie jesteś w stanie ustalić wyjścia akumulatora tylko na podstawie jego wejścia 1327. Musisz znać także jego stan pamięci 2568!



Ostatnio edytowano 22 sty 2018, o 13:01 przez mg101, łącznie edytowano 5 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 12:16 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

dambo
No, ok. Trochę jaśniej :)
Przykład fajny, czy masz może równie prosty przykład, ale w C dla mikrokontrloera? Tak żebym mógł zobaczyć jak to teraz jest zrealizowane w praktyce.
Ja zrobiłbym to zapewne na "tysiącu" if-ach, a to chyba nie tak. Właśnie rzecz w tym jak to robić poprawnie?

mg101 nic nie zrozumiałem :oops:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 12:42 
Offline
Użytkownik

Dołączył(a): 27 lis 2012
Posty: 291
Pomógł: 6

Cytuj:
mg101 nic nie zrozumiałem :oops:

Dambo
Akumulator jest przykładem z mikrokontrolerów
zwykły sumator jest układem logicznym z wyjściem suma ma 2 wejścia x i y daje na wyjściu suma=x+y. Nie jest to maszyna stanów

Akumulator jest maszyną stanów ma w swojej pamięci stan np. 1000 oraz wejście 2000. Jego pamięć An jest też wyjściem

Jego następny stan to A(n+1)=A(n) + wejście
Tu w odróżnieniu od sumatora wyjście zależy nie tylko od wejścia, ale od jego aktualnego stanu A(n+1)=A(n)+wejście=3000=1000 + 2000

Gdyby stanem aktualnym było np. A(n)=500 to stanem następnym (An+1)=1500



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 14:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

Ogólnie maszyna stanów opisuje stany w jakich może znajdować się urządzenie oraz przejścia między nimi.
Jeżeli masz system który może przyjmować zadane stany i zmienia je asynchronicznie od innych operacji, to by wiedzieć w jakim stanie aktualnie jesteś, to używa się znaczniki stanu. Przy okazji masz podefiniowane, że dane zdarzenia zmieniają twój stan na wskazany inny.
Praktycznym zastosowaniem jest na przykład interface USB, gdzie możesz być w stanie uninit, ready, selected, stop, itp. i pewne zdarzenia na magistrali powodują zmiany tych stanów. Przykładowy graf dla maszyny stanów USB: http://chibios.sourceforge.net/docs/hal ... u_s_b.html

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 14:28 
Online
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

NAJPROSTSZA MASZYNA STANÓW ;)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


czy może być coś prostszego ? ;) Właśnie powołaliśmy do życia NAJPROSTSZĄ maszynę stanów dzięki jednej zmiennej, która właśnie robi nam za "MASZYNĘ STANÓW" w programie. Brzmi może okropnie -"MASZYNA STANÓW" no ale tak to jest ;)

Chcemy bardziej skomplikowaną maszynkę ? To zastanówmy się co ona ma teraz robić ;) Proponuję dołożyć drugą diodę LED i założenie będzie takie, że pierwsza dioda ma mrugać jak ta wyżej w zależności od zmiennej ale teraz "maszynka1" ale druga dioda .. hmmm np ma np zapalać się gdy ta pierwsza zamruga 16 i być zapaloną do czasu gdy pierwsza zamruga kolejne 16 razy i tak w kółko ;)


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać w drugim przypadku do budowy "MASZYNY STANÓW" użyliśmy dwóch zmiennych "maszynka1" oraz "maszynka2" gdzie jak widać działanie tej całej maszynerii składa się z dwóch TRYBÓW ;) jeden się kręci cały czas, zaś drugi kręci się tylko co któryś obrót pierwszego i drugi zależy od pierwszego. Bez pierwszego TRYBU drugi nigdy by nie zadziałał ...

no i tak można to wymyślać coraz bardziej skomplikowane maszyny stanów - ale pokazałem to tak WPROST w kodzie - żeby było widać, że jednak ten mechanizm bywa często potrzebny podczas programowania.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sty 2018, o 20:49 
Offline
Użytkownik

Dołączył(a): 21 lip 2014
Posty: 28
Pomógł: 4

Polecam bardzo fajny artykuł na ten temat: https://ep.com.pl/files/1436.pdf



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sty 2018, o 08:34 
Offline
Użytkownik

Dołączył(a): 08 wrz 2012
Posty: 505
Pomógł: 6

rudy.ini właśnie od tego artykułu się zaczęło :) . Trafiłem na opis w EP przez przypadek i mocno mnie zainteresował temat, ale nie do końca zrozumiałem, a właściwie to niewiele zrozumiałem z samego artykułu. Dla tego prosiłem o szersze wyjaśnienie.
Dziękuję wszystkim za rozświetlenie tematu.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 sty 2018, o 22:08 
Offline
Użytkownik

Dołączył(a): 13 mar 2013
Posty: 123
Pomógł: 1

rudy.ini napisał(a):
Polecam bardzo fajny artykuł na ten temat: https://ep.com.pl/files/1436.pdf
Artykuł jest rzeczywiście fajny i co najciekawsze opisuje maszynę zaimplementowaną w preprocesorze co jest idealne dla małych procków. Jedyny problem w tym, że link do kodu zniknął. Autor sprzedał domenę i tyle. Czy ktoś może dysponuje tą biblioteką? Nazywa się sm-lib a autor Tomasz Orłowski. Pozdrawiam
W.

Wysłane z mojego XT1580 przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO