WIZwiki-W7500 & Finite State Machines & Micro­Controller

Dependencies:   mbed

Committer:
Fo170
Date:
Sat May 14 14:51:24 2016 +0000
Revision:
0:1deb2ad76751
WIZwiki-W7500 & Finite?State?Machines?&?Micro?Controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Fo170 0:1deb2ad76751 1 /* mbed Example Program
Fo170 0:1deb2ad76751 2 * Copyright (c) 2006-2014 ARM Limited
Fo170 0:1deb2ad76751 3 *
Fo170 0:1deb2ad76751 4 * Licensed under the Apache License, Version 2.0 (the "License");
Fo170 0:1deb2ad76751 5 * you may not use this file except in compliance with the License.
Fo170 0:1deb2ad76751 6 * You may obtain a copy of the License at
Fo170 0:1deb2ad76751 7 *
Fo170 0:1deb2ad76751 8 * http://www.apache.org/licenses/LICENSE-2.0
Fo170 0:1deb2ad76751 9 *
Fo170 0:1deb2ad76751 10 * Unless required by applicable law or agreed to in writing, software
Fo170 0:1deb2ad76751 11 * distributed under the License is distributed on an "AS IS" BASIS,
Fo170 0:1deb2ad76751 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Fo170 0:1deb2ad76751 13 * See the License for the specific language governing permissions and
Fo170 0:1deb2ad76751 14 * limitations under the License.
Fo170 0:1deb2ad76751 15 */
Fo170 0:1deb2ad76751 16 #include "mbed.h"
Fo170 0:1deb2ad76751 17 #if defined(TARGET_WIZwiki_W7500)
Fo170 0:1deb2ad76751 18 Serial pc(USBTX, USBRX); // tx, rx
Fo170 0:1deb2ad76751 19
Fo170 0:1deb2ad76751 20 /* W7500
Fo170 0:1deb2ad76751 21 LED1 = LED_RED = LEDR = PC_8
Fo170 0:1deb2ad76751 22 LED2 = LED_GREEN = LEDG = PC_9
Fo170 0:1deb2ad76751 23 LED3 = LED_BLUE = LEDB = PC_5
Fo170 0:1deb2ad76751 24 LED4 = LED_BLUE
Fo170 0:1deb2ad76751 25 */
Fo170 0:1deb2ad76751 26 DigitalOut red(LED_RED);
Fo170 0:1deb2ad76751 27 DigitalOut green(LED_GREEN);
Fo170 0:1deb2ad76751 28 DigitalOut blue(LED_BLUE);
Fo170 0:1deb2ad76751 29 #endif
Fo170 0:1deb2ad76751 30
Fo170 0:1deb2ad76751 31 Ticker toggle_led_ticker;
Fo170 0:1deb2ad76751 32
Fo170 0:1deb2ad76751 33 int j = 1;
Fo170 0:1deb2ad76751 34
Fo170 0:1deb2ad76751 35 void toggle_led()
Fo170 0:1deb2ad76751 36 {
Fo170 0:1deb2ad76751 37 ++j;
Fo170 0:1deb2ad76751 38 if(j == 7) j = 1;
Fo170 0:1deb2ad76751 39 }
Fo170 0:1deb2ad76751 40
Fo170 0:1deb2ad76751 41 // Finite State Machines & Micro­Controllers
Fo170 0:1deb2ad76751 42 // http://www.allaboutcircuits.com/technical-articles/finite-state-machines-microcontrollers/
Fo170 0:1deb2ad76751 43 #define _ERROR_ -1
Fo170 0:1deb2ad76751 44 #define _START_ 0
Fo170 0:1deb2ad76751 45 #define _INIT_ 1
Fo170 0:1deb2ad76751 46 #define _RUNNING_ 2
Fo170 0:1deb2ad76751 47 #define _STOP_ 3
Fo170 0:1deb2ad76751 48
Fo170 0:1deb2ad76751 49 #define LED_ON 0
Fo170 0:1deb2ad76751 50 #define LED_OFF 1
Fo170 0:1deb2ad76751 51
Fo170 0:1deb2ad76751 52 int state;
Fo170 0:1deb2ad76751 53 int i;
Fo170 0:1deb2ad76751 54
Fo170 0:1deb2ad76751 55 void start_code(void)
Fo170 0:1deb2ad76751 56 {
Fo170 0:1deb2ad76751 57 pc.printf("\n\rStart Code %d\n\r", state);
Fo170 0:1deb2ad76751 58
Fo170 0:1deb2ad76751 59 for(i=0; i<300; i++)
Fo170 0:1deb2ad76751 60 {
Fo170 0:1deb2ad76751 61 red = LED_OFF;
Fo170 0:1deb2ad76751 62 green = LED_OFF;
Fo170 0:1deb2ad76751 63 blue = LED_OFF;
Fo170 0:1deb2ad76751 64 wait(0.1);
Fo170 0:1deb2ad76751 65 red = LED_OFF;
Fo170 0:1deb2ad76751 66 green = LED_OFF;
Fo170 0:1deb2ad76751 67 blue = LED_ON;
Fo170 0:1deb2ad76751 68 }
Fo170 0:1deb2ad76751 69 wait(2.0);
Fo170 0:1deb2ad76751 70 state = _INIT_;
Fo170 0:1deb2ad76751 71 }
Fo170 0:1deb2ad76751 72
Fo170 0:1deb2ad76751 73 void init_code(void)
Fo170 0:1deb2ad76751 74 {
Fo170 0:1deb2ad76751 75 pc.printf("init Code %d\n\r", state);
Fo170 0:1deb2ad76751 76 red = LED_OFF;
Fo170 0:1deb2ad76751 77 green = LED_ON;
Fo170 0:1deb2ad76751 78 blue = LED_OFF;
Fo170 0:1deb2ad76751 79 wait(3.0);
Fo170 0:1deb2ad76751 80 state = _RUNNING_;
Fo170 0:1deb2ad76751 81 }
Fo170 0:1deb2ad76751 82
Fo170 0:1deb2ad76751 83 void running_code(void)
Fo170 0:1deb2ad76751 84 {
Fo170 0:1deb2ad76751 85 pc.printf("Running Code %d\n\r", state);
Fo170 0:1deb2ad76751 86 red = LED_ON;
Fo170 0:1deb2ad76751 87 green = LED_ON;
Fo170 0:1deb2ad76751 88 blue = LED_ON;
Fo170 0:1deb2ad76751 89 wait(10.0);
Fo170 0:1deb2ad76751 90
Fo170 0:1deb2ad76751 91 for(i=1; i<100; i++)
Fo170 0:1deb2ad76751 92 {
Fo170 0:1deb2ad76751 93 red = j & 1;
Fo170 0:1deb2ad76751 94 blue = j & 2;
Fo170 0:1deb2ad76751 95 green = j & 4;
Fo170 0:1deb2ad76751 96 wait(0.1);
Fo170 0:1deb2ad76751 97 }
Fo170 0:1deb2ad76751 98
Fo170 0:1deb2ad76751 99 red = LED_ON;
Fo170 0:1deb2ad76751 100 green = LED_ON;
Fo170 0:1deb2ad76751 101 blue = LED_ON;
Fo170 0:1deb2ad76751 102 wait(10.0);
Fo170 0:1deb2ad76751 103
Fo170 0:1deb2ad76751 104 state = _STOP_;
Fo170 0:1deb2ad76751 105 }
Fo170 0:1deb2ad76751 106
Fo170 0:1deb2ad76751 107 void stop_code(void)
Fo170 0:1deb2ad76751 108 {
Fo170 0:1deb2ad76751 109 pc.printf("Stop Code %d\n\r", state);
Fo170 0:1deb2ad76751 110 red = LED_OFF;
Fo170 0:1deb2ad76751 111 green = LED_OFF;
Fo170 0:1deb2ad76751 112 blue = LED_OFF;
Fo170 0:1deb2ad76751 113 wait(2.0);
Fo170 0:1deb2ad76751 114 state = _ERROR_; // mise en erreur pour test
Fo170 0:1deb2ad76751 115 }
Fo170 0:1deb2ad76751 116
Fo170 0:1deb2ad76751 117 void error_code(void)
Fo170 0:1deb2ad76751 118 {
Fo170 0:1deb2ad76751 119 pc.printf("Error Code %d\n\r", state);
Fo170 0:1deb2ad76751 120 red = LED_ON;
Fo170 0:1deb2ad76751 121 green = LED_OFF;
Fo170 0:1deb2ad76751 122 blue = LED_OFF;
Fo170 0:1deb2ad76751 123 wait(15.0);
Fo170 0:1deb2ad76751 124 red = LED_OFF;
Fo170 0:1deb2ad76751 125 green = LED_OFF;
Fo170 0:1deb2ad76751 126 blue = LED_OFF;
Fo170 0:1deb2ad76751 127 state = _START_;
Fo170 0:1deb2ad76751 128 }
Fo170 0:1deb2ad76751 129
Fo170 0:1deb2ad76751 130 int main()
Fo170 0:1deb2ad76751 131 {
Fo170 0:1deb2ad76751 132 // Serial port configuration (valeurs par defaut) : 9600 baud, 8-bit data, no parity, stop bit
Fo170 0:1deb2ad76751 133 pc.baud(9600);
Fo170 0:1deb2ad76751 134 pc.format(8, SerialBase::None, 1);
Fo170 0:1deb2ad76751 135
Fo170 0:1deb2ad76751 136 pc.printf("\n\rHello World!\n\r");
Fo170 0:1deb2ad76751 137
Fo170 0:1deb2ad76751 138 state = _ERROR_;
Fo170 0:1deb2ad76751 139
Fo170 0:1deb2ad76751 140 // Init the ticker with the address of the function (toggle_led) to be attached and the interval (100 ms)
Fo170 0:1deb2ad76751 141 toggle_led_ticker.attach(&toggle_led, 0.25);
Fo170 0:1deb2ad76751 142 //-------------
Fo170 0:1deb2ad76751 143 while(true)
Fo170 0:1deb2ad76751 144 {
Fo170 0:1deb2ad76751 145 switch(state)
Fo170 0:1deb2ad76751 146 {
Fo170 0:1deb2ad76751 147 case _START_:
Fo170 0:1deb2ad76751 148 start_code();
Fo170 0:1deb2ad76751 149 break;
Fo170 0:1deb2ad76751 150
Fo170 0:1deb2ad76751 151 case _INIT_:
Fo170 0:1deb2ad76751 152 init_code();
Fo170 0:1deb2ad76751 153 break;
Fo170 0:1deb2ad76751 154
Fo170 0:1deb2ad76751 155 case _RUNNING_:
Fo170 0:1deb2ad76751 156 running_code();
Fo170 0:1deb2ad76751 157 break;
Fo170 0:1deb2ad76751 158
Fo170 0:1deb2ad76751 159 case _STOP_:
Fo170 0:1deb2ad76751 160 stop_code();
Fo170 0:1deb2ad76751 161 break;
Fo170 0:1deb2ad76751 162
Fo170 0:1deb2ad76751 163 case _ERROR_:
Fo170 0:1deb2ad76751 164 error_code();
Fo170 0:1deb2ad76751 165 break;
Fo170 0:1deb2ad76751 166
Fo170 0:1deb2ad76751 167 default:
Fo170 0:1deb2ad76751 168 start_code();
Fo170 0:1deb2ad76751 169 }
Fo170 0:1deb2ad76751 170 // Do other things...
Fo170 0:1deb2ad76751 171 }
Fo170 0:1deb2ad76751 172 //--------------
Fo170 0:1deb2ad76751 173 }