Craig Evans / Mbed 2 deprecated ELEC2645_FSM_Counter

Dependencies:   mbed

Committer:
eencae
Date:
Fri Jan 24 13:26:47 2020 +0000
Revision:
4:c6d3c2dea4b0
Parent:
3:aac8dcbe6e18
Remove unused switches;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:e8be38c50b44 1 /*
eencae 0:e8be38c50b44 2
eencae 1:81b129bec569 3 2645_FSM_Counter
eencae 0:e8be38c50b44 4
eencae 2:bdd8b01141d1 5 Sample code from ELEC2645
eencae 0:e8be38c50b44 6
eencae 0:e8be38c50b44 7 Demonstrates how to implement a simple FSM counter
eencae 0:e8be38c50b44 8
eencae 0:e8be38c50b44 9 (c) Craig A. Evans, University of Leeds, Jan 2016
eencae 3:aac8dcbe6e18 10 Updated January 2020
eencae 0:e8be38c50b44 11
eencae 0:e8be38c50b44 12 */
eencae 0:e8be38c50b44 13
eencae 0:e8be38c50b44 14 #include "mbed.h"
eencae 0:e8be38c50b44 15
eencae 0:e8be38c50b44 16 // K64F on-board LEDs
eencae 3:aac8dcbe6e18 17 BusOut k64f_leds(LED_RED, LED_GREEN, LED_BLUE);
eencae 3:aac8dcbe6e18 18 // LEDs on Gamepad (1 to 3) - active-low 0 = on and 1 = off
eencae 3:aac8dcbe6e18 19 // BusOut arguments are LSB first
eencae 3:aac8dcbe6e18 20 BusOut output(PTA2,PTC2,PTC3);
eencae 0:e8be38c50b44 21
eencae 0:e8be38c50b44 22 // array of states in the FSM, each element is the output of the counter
eencae 2:bdd8b01141d1 23 // set the output in binary to make it easier, 0 is LED on, 1 is LED off
eencae 3:aac8dcbe6e18 24 int fsm[3] = {0b011,0b101,0b110};
eencae 0:e8be38c50b44 25
eencae 0:e8be38c50b44 26
eencae 0:e8be38c50b44 27 int main()
eencae 0:e8be38c50b44 28 {
eencae 3:aac8dcbe6e18 29 k64f_leds = 0b111; // turn off K64F LEDs
eencae 3:aac8dcbe6e18 30
eencae 0:e8be38c50b44 31 // set inital state
eencae 0:e8be38c50b44 32 int state = 0;
eencae 2:bdd8b01141d1 33
eencae 0:e8be38c50b44 34 while(1) { // loop forever
eencae 0:e8be38c50b44 35
eencae 0:e8be38c50b44 36 output = fsm[state]; // output current state
eencae 0:e8be38c50b44 37
eencae 0:e8be38c50b44 38 // check which state we are in and see which the next state should be
eencae 0:e8be38c50b44 39 switch(state) {
eencae 0:e8be38c50b44 40 case 0:
eencae 0:e8be38c50b44 41 state = 1;
eencae 0:e8be38c50b44 42 break;
eencae 0:e8be38c50b44 43 case 1:
eencae 0:e8be38c50b44 44 state = 2;
eencae 0:e8be38c50b44 45 break;
eencae 0:e8be38c50b44 46 case 2:
eencae 0:e8be38c50b44 47 state = 0;
eencae 0:e8be38c50b44 48 break;
eencae 0:e8be38c50b44 49 default:
eencae 3:aac8dcbe6e18 50 error("Invalid state"); //invalid state - call Mbed error routine
eencae 0:e8be38c50b44 51 // or could jump to starting state i.e. state = 0
eencae 0:e8be38c50b44 52 break;
eencae 0:e8be38c50b44 53 }
eencae 0:e8be38c50b44 54
eencae 2:bdd8b01141d1 55 wait(0.5); // small delay
eencae 0:e8be38c50b44 56
eencae 0:e8be38c50b44 57 }
eencae 0:e8be38c50b44 58 }