ECG Study Group / Mbed 2 deprecated Programacao_marco

Dependencies:   mbed

Committer:
Jamess
Date:
Thu Apr 30 22:26:37 2015 +0000
Revision:
8:dd65c0eb9927
Parent:
7:76f16051b775
Falta ver porque o tempo de envio est? t?o alto.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jamess 0:d3db149c4040 1 // Goal: Program that receives and send 4 channels of data.
Jamess 0:d3db149c4040 2 // Receives: 1kHz
Jamess 0:d3db149c4040 3 // Sends: 70kbits/s
Jamess 4:f7d06462819b 4
Jamess 4:f7d06462819b 5 //DONE:
Jamess 4:f7d06462819b 6 // O programa lê e envia dados da taxa indicada por TIMER_RATE
Jamess 4:f7d06462819b 7 //TODO:
Jamess 8:dd65c0eb9927 8 // Comunicação com bluetooth
Jamess 8:dd65c0eb9927 9 // Ver porque o tempo de envio está tão alto.
Jamess 0:d3db149c4040 10
Jamess 0:d3db149c4040 11 #include "mbed.h"
Jamess 0:d3db149c4040 12
Jamess 3:7d014ee1c543 13 /*--------------Signal Definition-----------------*/
Jamess 5:b58e5d191b17 14 //16bits buffer
Jamess 0:d3db149c4040 15 #define ECG1 0
Jamess 0:d3db149c4040 16 #define ECG2 1
Jamess 0:d3db149c4040 17 #define RESP 2
Jamess 0:d3db149c4040 18 #define PPG 3
Jamess 0:d3db149c4040 19
Jamess 5:b58e5d191b17 20 //8bits buffer
Jamess 5:b58e5d191b17 21 #define LSB_ECG1 0
Jamess 5:b58e5d191b17 22 #define MSB_ECG1 1
Jamess 5:b58e5d191b17 23 #define LSB_ECG2 2
Jamess 5:b58e5d191b17 24 #define MSB_ECG2 3
Jamess 5:b58e5d191b17 25 #define LSB_RESP 4
Jamess 5:b58e5d191b17 26 #define MSB_RESP 5
Jamess 5:b58e5d191b17 27 #define LSB_PPG 6
Jamess 5:b58e5d191b17 28 #define MSB_PPG 7
Jamess 5:b58e5d191b17 29
Jamess 5:b58e5d191b17 30
Jamess 4:f7d06462819b 31 /*---------------- Sample Speed Timer --------------*/
Jamess 8:dd65c0eb9927 32 #define TIMER_RATE 0.01
Jamess 3:7d014ee1c543 33
Jamess 0:d3db149c4040 34 /*-----READS THE ANALOG SIGNAL FROM THE SENSORS-----*/
Jamess 0:d3db149c4040 35
Jamess 0:d3db149c4040 36 AnalogIn Ecg1(A0);
Jamess 0:d3db149c4040 37 AnalogIn Ecg2(A1);
Jamess 0:d3db149c4040 38 AnalogIn Resp(A3);
Jamess 0:d3db149c4040 39 AnalogIn Ppg(A4);
Jamess 0:d3db149c4040 40
Jamess 5:b58e5d191b17 41 DigitalOut testSpeed(PTE1);
Jamess 5:b58e5d191b17 42
Jamess 2:769c937f9228 43
Jamess 0:d3db149c4040 44 /*------CONTROLS THE DATA RATE OF THE READING------*/
Jamess 0:d3db149c4040 45 Ticker t0;
Jamess 0:d3db149c4040 46 Serial pc(USBTX,USBRX);
Jamess 0:d3db149c4040 47
Jamess 1:94681b7c2565 48
Jamess 4:f7d06462819b 49 /*---HANDLES THE TIMER AND SERIAL INTERRUPTIONS-----*/
Jamess 0:d3db149c4040 50
Jamess 0:d3db149c4040 51 void t0_handler(void);
Jamess 0:d3db149c4040 52 void rx_Handler(void);
Jamess 3:7d014ee1c543 53
Jamess 1:94681b7c2565 54 char test = 0; // Tests the data received from the computer in order to start the reading
Jamess 5:b58e5d191b17 55
Jamess 0:d3db149c4040 56
Jamess 0:d3db149c4040 57 /*------------BUFFER TO STORE DATA------------------*/
Jamess 0:d3db149c4040 58
Jamess 6:27a323008a53 59 uint16_t buffer_16[4] = {0,0,0,0};
Jamess 7:76f16051b775 60 char buffer_8[8] = {0,0,0,0,0,0,0,0};
Jamess 0:d3db149c4040 61
Jamess 0:d3db149c4040 62
Jamess 0:d3db149c4040 63 int main() {
Jamess 3:7d014ee1c543 64 pc.printf("main");
Jamess 0:d3db149c4040 65 pc.attach(&rx_Handler, pc.RxIrq);
Jamess 1:94681b7c2565 66
Jamess 5:b58e5d191b17 67
Jamess 5:b58e5d191b17 68 while(1){}
Jamess 5:b58e5d191b17 69
Jamess 5:b58e5d191b17 70 //aciona porta
Jamess 3:7d014ee1c543 71
Jamess 5:b58e5d191b17 72 //pc.printf("%i,%i,%i,%i\n",buffer[ECG1],buffer[ECG2],buffer[RESP],buffer[PPG]);//PUTC
Jamess 5:b58e5d191b17 73
Jamess 5:b58e5d191b17 74
Jamess 5:b58e5d191b17 75 }
Jamess 0:d3db149c4040 76
Jamess 0:d3db149c4040 77 /*----------------------FUNCTIONS-----------------------*/
Jamess 0:d3db149c4040 78
Jamess 0:d3db149c4040 79 //Reads and send data to the computer
Jamess 0:d3db149c4040 80
Jamess 0:d3db149c4040 81 void t0_handler(void){
Jamess 5:b58e5d191b17 82
Jamess 5:b58e5d191b17 83 //Reads the Analog Ports
Jamess 5:b58e5d191b17 84 buffer_16[ECG1] = Ecg1.read_u16();
Jamess 5:b58e5d191b17 85 buffer_16[ECG2] = Ecg2.read_u16();
Jamess 5:b58e5d191b17 86 buffer_16[RESP] = Resp.read_u16();
Jamess 5:b58e5d191b17 87 buffer_16[PPG] = Ppg.read_u16();
Jamess 5:b58e5d191b17 88
Jamess 5:b58e5d191b17 89 //Divides de buffer 16 into multiple buffers;
Jamess 6:27a323008a53 90 //Falta rotacionar:
Jamess 6:27a323008a53 91 //Ver Ser a rotação está correta
Jamess 5:b58e5d191b17 92
Jamess 7:76f16051b775 93 buffer_8[LSB_ECG1] = (char)(buffer_16[ECG1]);
Jamess 7:76f16051b775 94 buffer_8[MSB_ECG1] = (char)((buffer_16[ECG1]&0xFF)>>8);
Jamess 5:b58e5d191b17 95
Jamess 7:76f16051b775 96 buffer_8[LSB_ECG2] = (char)(buffer_16[ECG2]);
Jamess 7:76f16051b775 97 buffer_8[LSB_ECG2] = (char)((buffer_16[ECG2]&0xFF)>>8);
Jamess 5:b58e5d191b17 98
Jamess 7:76f16051b775 99 buffer_8[LSB_RESP] = (char)(buffer_16[RESP]);
Jamess 7:76f16051b775 100 buffer_8[MSB_RESP] = (char)((buffer_16[RESP]&0xFF)>>8);
Jamess 5:b58e5d191b17 101
Jamess 7:76f16051b775 102 buffer_8[LSB_PPG] = (char)(buffer_16[PPG]);
Jamess 7:76f16051b775 103 buffer_8[MSB_PPG] = (char)((buffer_16[PPG]&0xFF)>>8);
Jamess 5:b58e5d191b17 104
Jamess 5:b58e5d191b17 105 //Sends to the computer
Jamess 8:dd65c0eb9927 106 testSpeed = 1;
Jamess 6:27a323008a53 107
Jamess 8:dd65c0eb9927 108 pc.putc(buffer_8[LSB_ECG1]); //texto se foi bem sucedida
Jamess 8:dd65c0eb9927 109 pc.putc(buffer_8[MSB_ECG1]);
Jamess 8:dd65c0eb9927 110 pc.putc(buffer_8[LSB_ECG2]);
Jamess 8:dd65c0eb9927 111 pc.putc(buffer_8[MSB_ECG2]);
Jamess 8:dd65c0eb9927 112 pc.putc(buffer_8[LSB_RESP]);
Jamess 8:dd65c0eb9927 113 pc.putc(buffer_8[MSB_RESP]);
Jamess 8:dd65c0eb9927 114 pc.putc(buffer_8[LSB_PPG]);
Jamess 8:dd65c0eb9927 115 pc.putc(buffer_8[MSB_PPG]);
Jamess 8:dd65c0eb9927 116
Jamess 8:dd65c0eb9927 117
Jamess 8:dd65c0eb9927 118 testSpeed = 0;
Jamess 5:b58e5d191b17 119
Jamess 5:b58e5d191b17 120
Jamess 0:d3db149c4040 121 }
Jamess 0:d3db149c4040 122
Jamess 4:f7d06462819b 123 //This function must
Jamess 4:f7d06462819b 124
Jamess 0:d3db149c4040 125 void rx_Handler(void){
Jamess 3:7d014ee1c543 126 // A programação não estava funcionando poisnão se deve utilizar interrupções para realizar grandes tarefas;
Jamess 3:7d014ee1c543 127 // Elas travam e não funciona mais nada.
Jamess 3:7d014ee1c543 128 // Como fazer para não ficar testando no main?? Sexta feira no globo reporter
Jamess 3:7d014ee1c543 129
Jamess 3:7d014ee1c543 130 test = pc.getc(); // it gets the received character
Jamess 5:b58e5d191b17 131 pc.putc(test);//debug
Jamess 5:b58e5d191b17 132
Jamess 5:b58e5d191b17 133 //--Tests the Receive Character----
Jamess 5:b58e5d191b17 134
Jamess 5:b58e5d191b17 135 if(test == '2'|| test == '2')
Jamess 5:b58e5d191b17 136 {
Jamess 5:b58e5d191b17 137 t0.attach(&t0_handler,TIMER_RATE);
Jamess 5:b58e5d191b17 138
Jamess 5:b58e5d191b17 139 }else if (test=='3'|| test == '3')
Jamess 5:b58e5d191b17 140 {
Jamess 5:b58e5d191b17 141 t0.detach();
Jamess 5:b58e5d191b17 142 }
Jamess 5:b58e5d191b17 143
Jamess 3:7d014ee1c543 144
Jamess 1:94681b7c2565 145 }