mbed heart

Dependencies:   TextLCD mbed-rtos mbed

Committer:
lucastai
Date:
Wed Dec 02 03:50:45 2015 +0000
Revision:
4:6d3ddf74b49a
Parent:
3:189e64d01258
Child:
5:8d9bcf25accb
LED

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lucastai 0:54ec65701097 1 #include "mbed.h"
lucastai 0:54ec65701097 2 #include "LPC17xx.h"
lucastai 0:54ec65701097 3 #include "TextLCD.h"
lucastai 0:54ec65701097 4 #include "rtos.h"
lucastai 0:54ec65701097 5 #include "Thread.h"
lucastai 0:54ec65701097 6
lucastai 0:54ec65701097 7 DigitalOut vsense(p23);
lucastai 0:54ec65701097 8 DigitalOut asense(p24);
lucastai 0:54ec65701097 9 DigitalIn apace(p22);
lucastai 0:54ec65701097 10 DigitalIn vpace(p21);
lucastai 0:54ec65701097 11
lucastai 4:6d3ddf74b49a 12 DigitalOut led_apace(LED1);
lucastai 4:6d3ddf74b49a 13 DigitalOut led_vpace(LED2);
lucastai 4:6d3ddf74b49a 14 DigitalOut led_asense(LED3);
lucastai 4:6d3ddf74b49a 15 DigitalOut led_vsense(LED4);
lucastai 4:6d3ddf74b49a 16
lucastai 0:54ec65701097 17 Serial serial_in(USBTX, USBRX);
lucastai 0:54ec65701097 18
lucastai 0:54ec65701097 19
lucastai 0:54ec65701097 20 int test_time_count;
lucastai 0:54ec65701097 21 int curr_test;
lucastai 2:4761ca8ba841 22 int minwaitV = 100000;
lucastai 2:4761ca8ba841 23 int minwaitA = 200000;
lucastai 0:54ec65701097 24
lucastai 0:54ec65701097 25 int needs_num_input = 0;
lucastai 0:54ec65701097 26
chadnach1 3:189e64d01258 27 enum mode {RANDOM,MANUAL,TEST};
lucastai 0:54ec65701097 28 mode test_curr_mode = RANDOM;
lucastai 0:54ec65701097 29 Timer t;
lucastai 0:54ec65701097 30
lucastai 0:54ec65701097 31
lucastai 0:54ec65701097 32
lucastai 0:54ec65701097 33
lucastai 0:54ec65701097 34
chadnach1 3:189e64d01258 35 void random_heart(void const *args)
chadnach1 3:189e64d01258 36 {
lucastai 0:54ec65701097 37 t.reset();
lucastai 0:54ec65701097 38 t.start();
lucastai 4:6d3ddf74b49a 39 while(1){
chadnach1 3:189e64d01258 40 while(test_curr_mode == RANDOM) {
lucastai 0:54ec65701097 41 int r = rand();
chadnach1 3:189e64d01258 42 if(r%2 == 0) {
lucastai 2:4761ca8ba841 43 serial_in.printf("timer was %i",t.read());
chadnach1 3:189e64d01258 44 if(1) {
lucastai 4:6d3ddf74b49a 45 led_asense = 1;
lucastai 0:54ec65701097 46 asense = 1;
lucastai 2:4761ca8ba841 47 serial_in.printf("asense ");
lucastai 0:54ec65701097 48 Thread::wait(10);
lucastai 0:54ec65701097 49 asense = 0;
lucastai 4:6d3ddf74b49a 50 led_asense = 0;
lucastai 2:4761ca8ba841 51 t.reset();
lucastai 2:4761ca8ba841 52
lucastai 0:54ec65701097 53 }
chadnach1 3:189e64d01258 54 } else {
chadnach1 3:189e64d01258 55 if(1) {
lucastai 4:6d3ddf74b49a 56 led_vsense = 1;
lucastai 0:54ec65701097 57 vsense = 1;
lucastai 2:4761ca8ba841 58 serial_in.printf("vsense ");
lucastai 0:54ec65701097 59 Thread::wait(10);
lucastai 0:54ec65701097 60 vsense = 0;
lucastai 4:6d3ddf74b49a 61 led_vsense = 0;
lucastai 2:4761ca8ba841 62 t.reset();
lucastai 2:4761ca8ba841 63
lucastai 0:54ec65701097 64 }
lucastai 0:54ec65701097 65 }
chadnach1 3:189e64d01258 66
lucastai 2:4761ca8ba841 67 Thread::wait(500);
lucastai 0:54ec65701097 68
lucastai 0:54ec65701097 69
lucastai 0:54ec65701097 70
lucastai 0:54ec65701097 71 }
lucastai 4:6d3ddf74b49a 72 }
lucastai 0:54ec65701097 73 }
lucastai 0:54ec65701097 74
lucastai 0:54ec65701097 75
chadnach1 3:189e64d01258 76 void kbd_intrp()
chadnach1 3:189e64d01258 77 {
lucastai 2:4761ca8ba841 78
lucastai 0:54ec65701097 79 char a = serial_in.getc();
lucastai 2:4761ca8ba841 80 serial_in.printf("char was " + a);
chadnach1 3:189e64d01258 81 if(needs_num_input) {
lucastai 0:54ec65701097 82 // DO O handling
lucastai 0:54ec65701097 83 needs_num_input = 0;
lucastai 0:54ec65701097 84 return;
lucastai 0:54ec65701097 85 }
lucastai 0:54ec65701097 86
chadnach1 3:189e64d01258 87 if(a == 'R') {
lucastai 0:54ec65701097 88 test_curr_mode = RANDOM;
chadnach1 3:189e64d01258 89 } else if(a == 'T') {
lucastai 0:54ec65701097 90 test_curr_mode = TEST;
chadnach1 3:189e64d01258 91 } else if(a == 'M') {
lucastai 0:54ec65701097 92 test_curr_mode = MANUAL;
lucastai 0:54ec65701097 93 }
chadnach1 3:189e64d01258 94
chadnach1 3:189e64d01258 95 if(a == 'A' && test_curr_mode == MANUAL) {
lucastai 0:54ec65701097 96 asense = 1;
lucastai 0:54ec65701097 97 Thread::wait(10);
lucastai 0:54ec65701097 98 asense = 0;
lucastai 0:54ec65701097 99 }
chadnach1 3:189e64d01258 100
chadnach1 3:189e64d01258 101 if(a == 'V' && test_curr_mode == MANUAL) {
lucastai 0:54ec65701097 102 vsense = 1;
lucastai 0:54ec65701097 103 Thread::wait(10);
lucastai 0:54ec65701097 104 vsense = 0;
lucastai 0:54ec65701097 105 }
chadnach1 3:189e64d01258 106
lucastai 0:54ec65701097 107 }
lucastai 0:54ec65701097 108
lucastai 4:6d3ddf74b49a 109 void rec_apace(){
lucastai 4:6d3ddf74b49a 110 led_apace = 1;
lucastai 4:6d3ddf74b49a 111 serial_in.printf("vssense fired\n");
lucastai 4:6d3ddf74b49a 112 Thread::wait(10);
lucastai 4:6d3ddf74b49a 113 led_apace = 0;
lucastai 4:6d3ddf74b49a 114 }
lucastai 0:54ec65701097 115
lucastai 4:6d3ddf74b49a 116 void rec_vpace(){
lucastai 4:6d3ddf74b49a 117 led_vpace = 1;
lucastai 4:6d3ddf74b49a 118 serial_in.printf("vssense fired\n");
lucastai 4:6d3ddf74b49a 119 Thread::wait(10);
lucastai 4:6d3ddf74b49a 120 led_vpace = 0;
lucastai 4:6d3ddf74b49a 121 }
lucastai 4:6d3ddf74b49a 122
lucastai 4:6d3ddf74b49a 123 void heart_response(void const *args){
lucastai 4:6d3ddf74b49a 124 while(1){
lucastai 4:6d3ddf74b49a 125 if(apace == 1){
lucastai 4:6d3ddf74b49a 126 rec_apace();
lucastai 4:6d3ddf74b49a 127 }
lucastai 4:6d3ddf74b49a 128
lucastai 4:6d3ddf74b49a 129 if(vpace == 1){
lucastai 4:6d3ddf74b49a 130 rec_vpace();
lucastai 4:6d3ddf74b49a 131 }
lucastai 4:6d3ddf74b49a 132 }
lucastai 4:6d3ddf74b49a 133
lucastai 4:6d3ddf74b49a 134 }
lucastai 0:54ec65701097 135
lucastai 0:54ec65701097 136 // interrupt function
chadnach1 3:189e64d01258 137 void interrupt_and_run_test()
chadnach1 3:189e64d01258 138 {
lucastai 0:54ec65701097 139 // zero timer, set for 1ms interrupt
chadnach1 3:189e64d01258 140
lucastai 0:54ec65701097 141 // wait for atrial pulse
chadnach1 3:189e64d01258 142
lucastai 0:54ec65701097 143 // check if timer was within event
chadnach1 3:189e64d01258 144
chadnach1 3:189e64d01258 145
lucastai 0:54ec65701097 146 // send vsense
chadnach1 3:189e64d01258 147
chadnach1 3:189e64d01258 148
lucastai 0:54ec65701097 149 // send asense
chadnach1 3:189e64d01258 150
lucastai 0:54ec65701097 151 // check if timer was in event
lucastai 0:54ec65701097 152
lucastai 0:54ec65701097 153 // wait for vpace
chadnach1 3:189e64d01258 154
lucastai 0:54ec65701097 155 // wait for atrial pulse
chadnach1 3:189e64d01258 156
lucastai 0:54ec65701097 157 // check if timer was within event
chadnach1 3:189e64d01258 158 }
lucastai 0:54ec65701097 159
chadnach1 3:189e64d01258 160 int main(void)
chadnach1 3:189e64d01258 161 {
chadnach1 3:189e64d01258 162
lucastai 2:4761ca8ba841 163 Thread t3(random_heart, (void *)"");
lucastai 4:6d3ddf74b49a 164 Thread t2(heart_response, (void *)"");
lucastai 2:4761ca8ba841 165
chadnach1 3:189e64d01258 166 char a = 'Z';
chadnach1 3:189e64d01258 167
chadnach1 3:189e64d01258 168 while(1) {
chadnach1 3:189e64d01258 169
chadnach1 3:189e64d01258 170 if(serial_in.readable()) {
chadnach1 3:189e64d01258 171 a = serial_in.getc();
chadnach1 3:189e64d01258 172 serial_in.printf("char was " + a);
chadnach1 3:189e64d01258 173 if(needs_num_input) {
chadnach1 3:189e64d01258 174 // DO O handling
chadnach1 3:189e64d01258 175 needs_num_input = 0;
chadnach1 3:189e64d01258 176 }
lucastai 2:4761ca8ba841 177
chadnach1 3:189e64d01258 178 if(a == 'R') {
chadnach1 3:189e64d01258 179 test_curr_mode = RANDOM;
chadnach1 3:189e64d01258 180 } else if(a == 'T') {
chadnach1 3:189e64d01258 181 test_curr_mode = TEST;
chadnach1 3:189e64d01258 182 } else if(a == 'M') {
chadnach1 3:189e64d01258 183 test_curr_mode = MANUAL;
chadnach1 3:189e64d01258 184 }
chadnach1 3:189e64d01258 185
chadnach1 3:189e64d01258 186 if(a == 'A' && test_curr_mode == MANUAL) {
chadnach1 3:189e64d01258 187 asense = 1;
chadnach1 3:189e64d01258 188 Thread::wait(10);
chadnach1 3:189e64d01258 189 asense = 0;
chadnach1 3:189e64d01258 190 }
chadnach1 3:189e64d01258 191
chadnach1 3:189e64d01258 192 if(a == 'V' && test_curr_mode == MANUAL) {
chadnach1 3:189e64d01258 193 vsense = 1;
chadnach1 3:189e64d01258 194 Thread::wait(10);
chadnach1 3:189e64d01258 195 vsense = 0;
chadnach1 3:189e64d01258 196 }
chadnach1 3:189e64d01258 197
chadnach1 3:189e64d01258 198
chadnach1 3:189e64d01258 199 }
lucastai 0:54ec65701097 200 }
lucastai 0:54ec65701097 201 }