Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdPatricia Hermans Laatst gewijzigd meer dan 9 jaar geleden
1
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Finite State Machine (Eindige Toestands Machine) techniek Bespreking ”sudo oplossen” decomposities
2
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 Finite State Machine (= Eindige Toestands Machine) states (toestanden) events (gebeurtenissen, boodschappen, triggers) actions (wat je programma doet) Diverse notaties in gebruik, schrik niet als je een iets andere notatie tegenkomt.
3
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 FSM voorbeeld : knipper LED op 2 Hz States : –LED is aan –LED is uit Events : –1 seconde timer tick Actions : –LED aanzetten –LED uitzetten
4
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 knipper LED op 2 Hz : FSM diagram LED is uitLED is aan init LED uitzetten 1s timer tick LED aanzetten 1s timer tick LED uitzetten
5
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 knipper LED op 2 Hz : State-Transistion diagram Event State 1s timer tick LED is uitLED aanzetten LED is aan LED uitzetten LED is uit
6
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 FSM voorbeeld : knipper LED op 2 Hz // states #define knipper_state_init 0 #define knipper_state_uit 1 #define knipper_state_aan 2 // events #define knipper_event_tick 100 // current state int knipper_state = knipper_state_init; // acties void Zet_LED( int x ){... } void fsm_knipper( int event ){ if( state == knipper_state_init ){ Zet_LED( 0 ); state = knipper_state_uit; return; } if( state == knipper_state_uit ){ if( event == knipper_event_tick ){ Zet_LED( 1 ); state = knipper_state_aan; return; } if( state == knipper_state_aan ){ if( event == knipper_event_tick ){ Zet_LED( 0 ); state = knipper_state_uit; return; }
7
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 FSM voorbeeld : Toegangspoort 1
8
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 FSM voorbeeld : Toegangspoort 2
9
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 FSM voorbeeld : Toegangspoort 3
10
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 FSM voorbeeld : Toegangspoort 3 Event State 1s timer tick LockedLED aanzetten LED is aan UnlockedLED uitzetten LED is uit
11
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 FSM voorbeeld : Toegangspoort 3 Event State CoinPassResetReady LockedUnlock() Unlocked Alarm() ViolationLocked UnlockedThankyou() Unlocked Lock() LockedUnlocked Violation ResetAlarm() Violation Lock() ResetAlarm() Locked
12
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 // states #define poort_state_init 0 #define poort_state_locked 1 #define poort_state_unlocked 2 #define poort_state_violation 3 // events #define poort_event_coin 100 #define poort_event_pass 100 #define poort_event_reset 100 // current state int poort_state = poort_state_init; // actions void poort_thankyou( void ); void poort_lock( void ); void poort_unlock( void ); void poort_start_alarm( void ); void poort_stop_alarm( void ); void fms_poort( int event ){ if( state == poort_state_init ){ poort_lock(); state = poort_state_locked; return; } if( state == poort_state_locked ){ if( event == poort_event_coin ){ poort_unlock(); state = poort_state_unlocked(); } if( event == poort_event_pass ){ poort_alarm(); state = poort_state_violation(); } return; }... }
13
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 Rotary encoder (quadrature encoder) Sensor voor het bijhouden van de draaiing van een as. Toegepassingen: –user interface (afstemknop) –computermuis –motorsturing
14
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14
15
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 Opdracht 1 ”rotary encoder” Een rotary encoder FSM moet in een globale integer de stand van een rotary encoder bijhouden. Bij een click naar rechts +1, bij een klick naar links -1. Er moet rekening gehouden worden met denderen en ‘halve bewegingen’ (= effect is hetzelfde als denderen).
16
vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 Opdracht 1 ”rotary encoder” Stel de lijst van states (4), events (4) en acties (2), op voor een rotary encoder FSM -Maak naar keuze een State Transition Diagram of een State Transition Table voor de FSM (er zijn ‘onmogelijke’ events, die hoef je niet te laten zien) -Vertaal je STD of STT naar C code
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.