ECG Study Group / Mbed 2 deprecated Programacao_marco

Dependencies:   mbed

Committer:
Jamess
Date:
Wed Apr 29 13:08:15 2015 +0000
Revision:
4:f7d06462819b
Parent:
3:7d014ee1c543
Child:
5:b58e5d191b17
; A programa??o do jeito que est? n?o ? a mais r?pida poss?vel, ? a mais f?cil de ser manuseada j? que utiliza a fun??o printf e envia ; Strings inteiras com os dados lidos das entradas anal?gicas. A vantagem ? que o usu?rio n?o necessita...

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 4:f7d06462819b 8 // Fazer uma interrupção Serial de Envio?
Jamess 4:f7d06462819b 9 // Utilizar Putc? Apenas se tiver o programaque concatena bytes.
Jamess 4:f7d06462819b 10 // Olhar Módulo Bluetooth.(Ver qual o melhor modo de blueth (i2C,SPI,UART);)
Jamess 0:d3db149c4040 11
Jamess 0:d3db149c4040 12 #include "mbed.h"
Jamess 0:d3db149c4040 13
Jamess 3:7d014ee1c543 14 /*--------------Signal Definition-----------------*/
Jamess 0:d3db149c4040 15
Jamess 0:d3db149c4040 16 #define ECG1 0
Jamess 0:d3db149c4040 17 #define ECG2 1
Jamess 0:d3db149c4040 18 #define RESP 2
Jamess 0:d3db149c4040 19 #define PPG 3
Jamess 0:d3db149c4040 20
Jamess 4:f7d06462819b 21 /*---------------- Sample Speed Timer --------------*/
Jamess 3:7d014ee1c543 22 #define TIMER_RATE 1
Jamess 3:7d014ee1c543 23
Jamess 0:d3db149c4040 24 /*-----READS THE ANALOG SIGNAL FROM THE SENSORS-----*/
Jamess 0:d3db149c4040 25
Jamess 0:d3db149c4040 26 AnalogIn Ecg1(A0);
Jamess 0:d3db149c4040 27 AnalogIn Ecg2(A1);
Jamess 0:d3db149c4040 28 AnalogIn Resp(A3);
Jamess 0:d3db149c4040 29 AnalogIn Ppg(A4);
Jamess 0:d3db149c4040 30
Jamess 2:769c937f9228 31
Jamess 0:d3db149c4040 32 /*------CONTROLS THE DATA RATE OF THE READING------*/
Jamess 0:d3db149c4040 33 Ticker t0;
Jamess 0:d3db149c4040 34 Serial pc(USBTX,USBRX);
Jamess 0:d3db149c4040 35
Jamess 1:94681b7c2565 36
Jamess 4:f7d06462819b 37 /*---HANDLES THE TIMER AND SERIAL INTERRUPTIONS-----*/
Jamess 0:d3db149c4040 38
Jamess 0:d3db149c4040 39 void t0_handler(void);
Jamess 0:d3db149c4040 40 void rx_Handler(void);
Jamess 3:7d014ee1c543 41
Jamess 1:94681b7c2565 42 char test = 0; // Tests the data received from the computer in order to start the reading
Jamess 3:7d014ee1c543 43 bool Valor=0;
Jamess 3:7d014ee1c543 44 bool rx_Interrupt = 0;
Jamess 3:7d014ee1c543 45 bool TimerStatus = 0;
Jamess 0:d3db149c4040 46
Jamess 0:d3db149c4040 47 /*------------BUFFER TO STORE DATA------------------*/
Jamess 0:d3db149c4040 48
Jamess 1:94681b7c2565 49 int buffer[4] = {0,0,0,0};
Jamess 0:d3db149c4040 50
Jamess 0:d3db149c4040 51
Jamess 0:d3db149c4040 52
Jamess 0:d3db149c4040 53 int main() {
Jamess 3:7d014ee1c543 54 pc.printf("main");
Jamess 0:d3db149c4040 55 pc.attach(&rx_Handler, pc.RxIrq);
Jamess 1:94681b7c2565 56
Jamess 3:7d014ee1c543 57 while(1){
Jamess 3:7d014ee1c543 58
Jamess 3:7d014ee1c543 59 while(rx_Interrupt){
Jamess 3:7d014ee1c543 60
Jamess 3:7d014ee1c543 61 if(test == '2'|| test == '2')
Jamess 3:7d014ee1c543 62 { // wake up routine
Jamess 4:f7d06462819b 63 pc.printf("Should go to timer");
Jamess 3:7d014ee1c543 64 t0.attach(&t0_handler,TIMER_RATE); //start counting ----Data read in a 1kHz freq. (1mS)
Jamess 3:7d014ee1c543 65
Jamess 3:7d014ee1c543 66 }else if (test=='3'|| test == '3')
Jamess 3:7d014ee1c543 67 {
Jamess 3:7d014ee1c543 68 t0.detach();
Jamess 3:7d014ee1c543 69 }
Jamess 3:7d014ee1c543 70
Jamess 3:7d014ee1c543 71
Jamess 3:7d014ee1c543 72 rx_Interrupt = 0;
Jamess 3:7d014ee1c543 73 }
Jamess 3:7d014ee1c543 74
Jamess 3:7d014ee1c543 75 if (TimerStatus){
Jamess 3:7d014ee1c543 76
Jamess 3:7d014ee1c543 77 buffer[ECG1] = Ecg1.read_u16();
Jamess 3:7d014ee1c543 78 buffer[ECG2] = Ecg2.read_u16();
Jamess 3:7d014ee1c543 79 buffer[RESP] = Resp.read_u16();
Jamess 3:7d014ee1c543 80 buffer[PPG] = Ppg.read_u16();
Jamess 4:f7d06462819b 81 pc.printf("%i,%i,%i,%i\n",buffer[ECG1],buffer[ECG2],buffer[RESP],buffer[PPG]);//PUTC
Jamess 3:7d014ee1c543 82 TimerStatus = 0;
Jamess 3:7d014ee1c543 83 }
Jamess 1:94681b7c2565 84
Jamess 3:7d014ee1c543 85 }}
Jamess 0:d3db149c4040 86
Jamess 0:d3db149c4040 87 /*----------------------FUNCTIONS-----------------------*/
Jamess 0:d3db149c4040 88
Jamess 0:d3db149c4040 89 //Reads and send data to the computer
Jamess 0:d3db149c4040 90
Jamess 0:d3db149c4040 91 void t0_handler(void){
Jamess 3:7d014ee1c543 92 TimerStatus = 1;
Jamess 0:d3db149c4040 93 }
Jamess 0:d3db149c4040 94
Jamess 4:f7d06462819b 95 //This function must
Jamess 4:f7d06462819b 96
Jamess 0:d3db149c4040 97 void rx_Handler(void){
Jamess 3:7d014ee1c543 98 // A programação não estava funcionando poisnão se deve utilizar interrupções para realizar grandes tarefas;
Jamess 3:7d014ee1c543 99 // Elas travam e não funciona mais nada.
Jamess 3:7d014ee1c543 100 // Como fazer para não ficar testando no main?? Sexta feira no globo reporter
Jamess 3:7d014ee1c543 101
Jamess 3:7d014ee1c543 102 rx_Interrupt = 1;
Jamess 3:7d014ee1c543 103 test = pc.getc(); // it gets the received character
Jamess 3:7d014ee1c543 104 pc.putc(test);
Jamess 3:7d014ee1c543 105
Jamess 1:94681b7c2565 106 }
Jamess 4:f7d06462819b 107 /*Commit
Jamess 4:f7d06462819b 108
Jamess 4:f7d06462819b 109 A programação do jeito que está não é a mais rápida possível, é a mais fácil de ser manuseada já que utiliza a função printf e envia
Jamess 4:f7d06462819b 110 Strings inteiras com os dados lidos das entradas analógicas. A vantagem é que o usuário não necessita concatenar dois bytes como teria defazê-lo caso utilizasse
Jamess 4:f7d06462819b 111 a função putchar.
Jamess 4:f7d06462819b 112
Jamess 4:f7d06462819b 113 Caso queria otimizar a velocidade de envio, deve-se utilizar a função putchar e concatenar os dados!!
Jamess 4:f7d06462819b 114
Jamess 4:f7d06462819b 115 Quanto ao consumo, ainda deve ser verificado as funções que reduziriam.
Jamess 4:f7d06462819b 116
Jamess 4:f7d06462819b 117 Neste código, algumas variáveis ficam constantemente sendo testadas no Main, isso pode reduzir a eficiencia energética do projeto
Jamess 4:f7d06462819b 118
Jamess 4:f7d06462819b 119 */