User Manual

114
Ukažme si tento příklad zredukovaný do nezbytného základního principu. Stavo automat
obsahuje růz stavy a přechody mezi nimi. V našem příkladu máme čtyři stavy:
STATE_START a STATE_1 až SATE_3.
Stavo automat můžeme zzornit také sledujícím stavovým diagramem:
S je počáteční stav. Není zde použitý žádný podmíněný stav, proto bude systém postupně
měnit stavy až do stavu 3 a restart v kterémkoliv kroku začne posloupnost od stavu S. Pro lepší
vizualizaci je mezi změny jednotlivých stavů vloženo zpoždění 500ms.
Program bude vytřet sledující výstup:
START
Stav 1
Stav 2
Stav 3
START
Stav 1
Stav 2
...
... atd.
Program může tento pis prodlužovat do nekonečna.
Ukázko program v souboru RP6Base_Move_04_FSM.c obsahuje mnohem složitější stavo
automat, představovaný 8 stavy. Základní strukturu ukazuje sledující stavo diagram (v
tomto přehledm schématu zkracujeme označení jednotlich stavů):
Stavo automat začí ve stavu
S a okamžitě přeczí do stavu B
(přitom zobrazí krátkou textovou
zprávu). Po přechodu do stavu B,
bude systém čekat než se stiskne
jeden z razníků. Pokud se stiskne
le razník, přejde stavový
automat do stavu LD1 (Le dole
1”) a při stisknu pravého razníku
do stavu RD1. Následující přechod
je podmíněný opět uvolněním
razníku. Pokud se tak stane,
změní se stav na některý ze stavů
LU nebo RU. V obou těchto stavech
bude automat reagovat pouze na
některý mikrospínač nárazníků (levý nebo pra) a naopak ignorovat ostatní aktivity systému.
Pouze kd znovu stisknete vybraný razník, přejde stavo automat do stavů RD2 respektive
LD2. Opakova uvolnění nárazníku vrásystém do stavu S.
Tento ukázkový příklad bude samozřejmě vysílat příslušnou zprávu při každé změně stavu a
podle toho nastaví stav LED, ale v diagramu není místo pro další informace. Ukazuje jen
obecnou vrstvu konečného stavového automatu.