Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@3:aac8dcbe6e18, 2020-01-24 (annotated)
- Committer:
- eencae
- Date:
- Fri Jan 24 13:18:25 2020 +0000
- Revision:
- 3:aac8dcbe6e18
- Parent:
- 2:bdd8b01141d1
- Child:
- 4:c6d3c2dea4b0
Gamepad2 version
Who changed what in which revision?
User | Revision | Line number | New 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 | // Gamepad switches |
eencae | 3:aac8dcbe6e18 | 19 | InterruptIn buttonA(PTC7); |
eencae | 3:aac8dcbe6e18 | 20 | InterruptIn buttonB(PTC9); |
eencae | 3:aac8dcbe6e18 | 21 | // LEDs on Gamepad (1 to 3) - active-low 0 = on and 1 = off |
eencae | 3:aac8dcbe6e18 | 22 | // BusOut arguments are LSB first |
eencae | 3:aac8dcbe6e18 | 23 | BusOut output(PTA2,PTC2,PTC3); |
eencae | 0:e8be38c50b44 | 24 | |
eencae | 0:e8be38c50b44 | 25 | // array of states in the FSM, each element is the output of the counter |
eencae | 2:bdd8b01141d1 | 26 | // set the output in binary to make it easier, 0 is LED on, 1 is LED off |
eencae | 3:aac8dcbe6e18 | 27 | int fsm[3] = {0b011,0b101,0b110}; |
eencae | 0:e8be38c50b44 | 28 | |
eencae | 0:e8be38c50b44 | 29 | |
eencae | 0:e8be38c50b44 | 30 | int main() |
eencae | 0:e8be38c50b44 | 31 | { |
eencae | 3:aac8dcbe6e18 | 32 | k64f_leds = 0b111; // turn off K64F LEDs |
eencae | 3:aac8dcbe6e18 | 33 | |
eencae | 0:e8be38c50b44 | 34 | // set inital state |
eencae | 0:e8be38c50b44 | 35 | int state = 0; |
eencae | 2:bdd8b01141d1 | 36 | |
eencae | 0:e8be38c50b44 | 37 | while(1) { // loop forever |
eencae | 0:e8be38c50b44 | 38 | |
eencae | 0:e8be38c50b44 | 39 | output = fsm[state]; // output current state |
eencae | 0:e8be38c50b44 | 40 | |
eencae | 0:e8be38c50b44 | 41 | // check which state we are in and see which the next state should be |
eencae | 0:e8be38c50b44 | 42 | switch(state) { |
eencae | 0:e8be38c50b44 | 43 | case 0: |
eencae | 0:e8be38c50b44 | 44 | state = 1; |
eencae | 0:e8be38c50b44 | 45 | break; |
eencae | 0:e8be38c50b44 | 46 | case 1: |
eencae | 0:e8be38c50b44 | 47 | state = 2; |
eencae | 0:e8be38c50b44 | 48 | break; |
eencae | 0:e8be38c50b44 | 49 | case 2: |
eencae | 0:e8be38c50b44 | 50 | state = 0; |
eencae | 0:e8be38c50b44 | 51 | break; |
eencae | 0:e8be38c50b44 | 52 | default: |
eencae | 3:aac8dcbe6e18 | 53 | error("Invalid state"); //invalid state - call Mbed error routine |
eencae | 0:e8be38c50b44 | 54 | // or could jump to starting state i.e. state = 0 |
eencae | 0:e8be38c50b44 | 55 | break; |
eencae | 0:e8be38c50b44 | 56 | } |
eencae | 0:e8be38c50b44 | 57 | |
eencae | 2:bdd8b01141d1 | 58 | wait(0.5); // small delay |
eencae | 0:e8be38c50b44 | 59 | |
eencae | 0:e8be38c50b44 | 60 | } |
eencae | 0:e8be38c50b44 | 61 | } |