Version 0.1

Dependencies:   mbed

Committer:
ocsid
Date:
Tue Jun 16 14:36:59 2015 +0000
Revision:
0:b8dbe4592e91
Version 0.1 FTKL_Test_Gruppe_A

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ocsid 0:b8dbe4592e91 1 #include "mbed.h"
ocsid 0:b8dbe4592e91 2
ocsid 0:b8dbe4592e91 3 #define ARR_SIZE 5
ocsid 0:b8dbe4592e91 4
ocsid 0:b8dbe4592e91 5 BusOut _led1(LED1), _led2(LED2), _led3(LED3), _led4(LED4);
ocsid 0:b8dbe4592e91 6 Serial _pc(USBTX, USBRX);
ocsid 0:b8dbe4592e91 7 InterruptIn _async(P1_16);
ocsid 0:b8dbe4592e91 8 Timer t1;
ocsid 0:b8dbe4592e91 9 char _recChar = 0, _recArr[ARR_SIZE];
ocsid 0:b8dbe4592e91 10 int _index = 0, _failstate = 0;
ocsid 0:b8dbe4592e91 11
ocsid 0:b8dbe4592e91 12 void ReadData();
ocsid 0:b8dbe4592e91 13 void Interrupt();
ocsid 0:b8dbe4592e91 14 void Error();
ocsid 0:b8dbe4592e91 15 void WriteData();
ocsid 0:b8dbe4592e91 16 void ToggleLeds();
ocsid 0:b8dbe4592e91 17 void FlushSerialBuffer();
ocsid 0:b8dbe4592e91 18 void Start();
ocsid 0:b8dbe4592e91 19 void Init();
ocsid 0:b8dbe4592e91 20 void Output();
ocsid 0:b8dbe4592e91 21 void Failstate();
ocsid 0:b8dbe4592e91 22
ocsid 0:b8dbe4592e91 23 int main(){
ocsid 0:b8dbe4592e91 24 Init();
ocsid 0:b8dbe4592e91 25 Start();
ocsid 0:b8dbe4592e91 26 _pc.attach(&ReadData);
ocsid 0:b8dbe4592e91 27 Interrupt();
ocsid 0:b8dbe4592e91 28 while(1){
ocsid 0:b8dbe4592e91 29 if(_failstate == 1){
ocsid 0:b8dbe4592e91 30 t1.start();
ocsid 0:b8dbe4592e91 31 if(t1.read_ms() >= 100 && _failstate == 1){
ocsid 0:b8dbe4592e91 32 ToggleLeds();
ocsid 0:b8dbe4592e91 33 t1.stop();
ocsid 0:b8dbe4592e91 34 t1.reset();
ocsid 0:b8dbe4592e91 35 }
ocsid 0:b8dbe4592e91 36 }
ocsid 0:b8dbe4592e91 37 }
ocsid 0:b8dbe4592e91 38 }
ocsid 0:b8dbe4592e91 39 void ReadData(){
ocsid 0:b8dbe4592e91 40 _recChar = _pc.getc();
ocsid 0:b8dbe4592e91 41 _recArr[_index] = _recChar;
ocsid 0:b8dbe4592e91 42 _index++;
ocsid 0:b8dbe4592e91 43 if(_recChar == 'a' || _recChar == 'A'){
ocsid 0:b8dbe4592e91 44 _led1 = _led2 = _led3 = _led4 = 0;
ocsid 0:b8dbe4592e91 45 Output();
ocsid 0:b8dbe4592e91 46 _recArr[_index] = 0;
ocsid 0:b8dbe4592e91 47 _index = 0;
ocsid 0:b8dbe4592e91 48 FlushSerialBuffer();
ocsid 0:b8dbe4592e91 49 }
ocsid 0:b8dbe4592e91 50 else if(_recChar == 'e' || _recChar == 'E'){
ocsid 0:b8dbe4592e91 51 _led1 = _led2 = _led3 = _led4 = 1;
ocsid 0:b8dbe4592e91 52 Output();
ocsid 0:b8dbe4592e91 53 _recArr[_index] = 0;
ocsid 0:b8dbe4592e91 54 _index = 0;
ocsid 0:b8dbe4592e91 55 FlushSerialBuffer();
ocsid 0:b8dbe4592e91 56 }
ocsid 0:b8dbe4592e91 57 else if(_recChar == 't' || _recChar == 'T'){
ocsid 0:b8dbe4592e91 58 ToggleLeds();
ocsid 0:b8dbe4592e91 59 Output();
ocsid 0:b8dbe4592e91 60 _recArr[_index] = 0;
ocsid 0:b8dbe4592e91 61 _index = 0;
ocsid 0:b8dbe4592e91 62 FlushSerialBuffer();
ocsid 0:b8dbe4592e91 63 }
ocsid 0:b8dbe4592e91 64 else{
ocsid 0:b8dbe4592e91 65 Failstate();
ocsid 0:b8dbe4592e91 66 FlushSerialBuffer();
ocsid 0:b8dbe4592e91 67 }
ocsid 0:b8dbe4592e91 68 }
ocsid 0:b8dbe4592e91 69 void Interrupt(){
ocsid 0:b8dbe4592e91 70 _async.rise(&Error);
ocsid 0:b8dbe4592e91 71 }
ocsid 0:b8dbe4592e91 72 void Error(){
ocsid 0:b8dbe4592e91 73 _failstate = 0;
ocsid 0:b8dbe4592e91 74 _led1 = _led4 = 1; _led2 = _led3 = 0;
ocsid 0:b8dbe4592e91 75 }
ocsid 0:b8dbe4592e91 76 void ToggleLeds(){
ocsid 0:b8dbe4592e91 77 _led1 = !_led1; _led2 = !_led2; _led3 = !_led3; _led4 = !_led4;
ocsid 0:b8dbe4592e91 78 }
ocsid 0:b8dbe4592e91 79 void FlushSerialBuffer(){
ocsid 0:b8dbe4592e91 80 while(_pc.readable()){
ocsid 0:b8dbe4592e91 81 _pc.getc();
ocsid 0:b8dbe4592e91 82 }
ocsid 0:b8dbe4592e91 83 }
ocsid 0:b8dbe4592e91 84 void Start(){
ocsid 0:b8dbe4592e91 85 _pc.printf("Hallo\r\nBitte geben Sie einen Steuerstring nach untem stehenden Format ein\r\nFormat des Strings:\r\n\ a oder A --> LEDs aus\r\n e oder E --> LEDs ein\r\n Lx,E --> LED x ein (x = 1..4)\r\n Lx,A --> LED x aus (x = 1..4)\r\n t --> alle LEDs toggeln (leuchtende LEDs aus, dunkle LEDs ein)\r\n");
ocsid 0:b8dbe4592e91 86 }
ocsid 0:b8dbe4592e91 87 void Init(){
ocsid 0:b8dbe4592e91 88 _led1 = _led2 = _led3 = _led4 = 0;
ocsid 0:b8dbe4592e91 89 _pc.baud(115200);
ocsid 0:b8dbe4592e91 90 _pc.format(8,SerialBase::None, 1);
ocsid 0:b8dbe4592e91 91 }
ocsid 0:b8dbe4592e91 92 void Output(){
ocsid 0:b8dbe4592e91 93 _pc.printf("Steuerbefehl <%s> ausgefuehrt\r\nBitte geben Sie einen Steuerstring ein\r\n", _recArr);
ocsid 0:b8dbe4592e91 94 }
ocsid 0:b8dbe4592e91 95 void Failstate(){
ocsid 0:b8dbe4592e91 96 _failstate = 1;
ocsid 0:b8dbe4592e91 97 _led1 = _led2 = _led3 = _led4 = 0;
ocsid 0:b8dbe4592e91 98 _pc.printf("Ein Fehler ist aufgetreten\r\n");
ocsid 0:b8dbe4592e91 99 _recArr[_index] = 0;
ocsid 0:b8dbe4592e91 100 _index = 0;
ocsid 0:b8dbe4592e91 101 }