serial teste pulga to pulga
Source/main.cpp@2:b39f5ce4d5bd, 2020-05-03 (annotated)
- Committer:
- ruschigo
- Date:
- Sun May 03 15:22:29 2020 +0000
- Revision:
- 2:b39f5ce4d5bd
- Parent:
- 1:10de89ea1f70
a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ruschigo | 1:10de89ea1f70 | 1 | #include "definitions.txt" |
ruschigo | 1:10de89ea1f70 | 2 | |
ruschigo | 1:10de89ea1f70 | 3 | |
ruschigo | 1:10de89ea1f70 | 4 | /*Defines for PicID of display*/ |
ruschigo | 1:10de89ea1f70 | 5 | #define SCREEN_OFF 0x00 |
ruschigo | 1:10de89ea1f70 | 6 | #define SCREEN_STARTUP 0x01 |
ruschigo | 1:10de89ea1f70 | 7 | #define SCREEN_INIT 10 |
ruschigo | 1:10de89ea1f70 | 8 | #define SCREEN_CALIBRATING 0x14 |
ruschigo | 1:10de89ea1f70 | 9 | #define SCREEN_MAIN_MENU 0x28 |
ruschigo | 1:10de89ea1f70 | 10 | #define SCREEN_IN_OPERATION 0x32 |
ruschigo | 1:10de89ea1f70 | 11 | |
ruschigo | 1:10de89ea1f70 | 12 | #define OPTION_CMD_VP 0x8/* OKadress to write cmd, send from display to mcu |
ruschigo | 1:10de89ea1f70 | 13 | the value in this address must be the ascii value for the char*/ |
ruschigo | 1:10de89ea1f70 | 14 | #define MOV_MOTOR_VP 0x102 |
ruschigo | 1:10de89ea1f70 | 15 | #define DRIVE_PRESSURE_VP 0x100 //Pressao P.P tela 40 |
ruschigo | 1:10de89ea1f70 | 16 | #define PEEP_TARGET_VP 0x340 //OK Pressao Peep tela 40 |
ruschigo | 1:10de89ea1f70 | 17 | #define TINS_VP 0x110 //T. INspiracao tela40 |
ruschigo | 1:10de89ea1f70 | 18 | #define BPM_VP 0x120 //Bpm tela 40 |
ruschigo | 1:10de89ea1f70 | 19 | #define BREATH_TURN_ONOFF_VP 0x03E1//OK Botão Inicia da tela 40 |
ruschigo | 1:10de89ea1f70 | 20 | #define ASSISTED_SENSIBILITY_VP 0x350 //Modo Assistido tela 40 |
ruschigo | 1:10de89ea1f70 | 21 | #define KI_VP 0x110 |
ruschigo | 1:10de89ea1f70 | 22 | #define KP_VP 0x112 |
ruschigo | 1:10de89ea1f70 | 23 | #define KD_VP 0x114 |
ruschigo | 1:10de89ea1f70 | 24 | #define FIO2_VP 0x125 //FiO2 Tela 40 |
ruschigo | 1:10de89ea1f70 | 25 | #define ONOFF_ASSISTED_MODE_VP 0x170 //MODO ASSISTIDO tela 40 |
ruschigo | 1:10de89ea1f70 | 26 | |
ruschigo | 2:b39f5ce4d5bd | 27 | #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512 |
ruschigo | 2:b39f5ce4d5bd | 28 | #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 1024 |
ruschigo | 2:b39f5ce4d5bd | 29 | |
ruschigo | 1:10de89ea1f70 | 30 | Timer timer_main; |
ruschigo | 1:10de89ea1f70 | 31 | |
ruschigo | 2:b39f5ce4d5bd | 32 | Serial serial_to_pulga(P0_11, P0_8); |
ruschigo | 1:10de89ea1f70 | 33 | |
ruschigo | 1:10de89ea1f70 | 34 | float rx_pot[4]; |
ruschigo | 1:10de89ea1f70 | 35 | |
ruschigo | 1:10de89ea1f70 | 36 | /*convert float data to fixed point data type*/ |
ruschigo | 1:10de89ea1f70 | 37 | uint16_t float_to_fixed(float input, int fix_bits) |
ruschigo | 1:10de89ea1f70 | 38 | { |
ruschigo | 1:10de89ea1f70 | 39 | return (uint16_t)(input * (1 << fix_bits)); |
ruschigo | 1:10de89ea1f70 | 40 | } |
ruschigo | 1:10de89ea1f70 | 41 | |
ruschigo | 1:10de89ea1f70 | 42 | |
ruschigo | 1:10de89ea1f70 | 43 | |
ruschigo | 1:10de89ea1f70 | 44 | /*Do the scale converstion between analogic input (0 - 1) to Scale type wished |
ruschigo | 1:10de89ea1f70 | 45 | @scale: scale to convert the pot val |
ruschigo | 1:10de89ea1f70 | 46 | @pot_val: Analog input from potentiometer, it will take only 2 decimal digits, |
ruschigo | 1:10de89ea1f70 | 47 | it is necessary to avoid floating of number to control code |
ruschigo | 1:10de89ea1f70 | 48 | */ |
ruschigo | 1:10de89ea1f70 | 49 | float calc_scaled_value(unsigned int scale, float pot_val){ |
ruschigo | 1:10de89ea1f70 | 50 | float ret; |
ruschigo | 1:10de89ea1f70 | 51 | int temp; |
ruschigo | 1:10de89ea1f70 | 52 | temp = (pot_val * 100); |
ruschigo | 1:10de89ea1f70 | 53 | pot_val = (temp / 100); |
ruschigo | 1:10de89ea1f70 | 54 | switch(scale){ |
ruschigo | 1:10de89ea1f70 | 55 | case SCALE_PP_PRESSURE: |
ruschigo | 1:10de89ea1f70 | 56 | ret = (pot_val * 34) + 1; |
ruschigo | 1:10de89ea1f70 | 57 | break; |
ruschigo | 1:10de89ea1f70 | 58 | case SCALE_PEEP_PRESSURE: |
ruschigo | 1:10de89ea1f70 | 59 | ret = (10 * pot_val) + 5; |
ruschigo | 1:10de89ea1f70 | 60 | break; |
ruschigo | 1:10de89ea1f70 | 61 | case SCALE_BPM: |
ruschigo | 1:10de89ea1f70 | 62 | ret = (20 * pot_val) + 10; |
ruschigo | 1:10de89ea1f70 | 63 | break; |
ruschigo | 1:10de89ea1f70 | 64 | case SCALE_TINSP: |
ruschigo | 1:10de89ea1f70 | 65 | ret = (2.5 * pot_val) + 0.5; |
ruschigo | 1:10de89ea1f70 | 66 | break; |
ruschigo | 1:10de89ea1f70 | 67 | case SCALE_FIO2: |
ruschigo | 1:10de89ea1f70 | 68 | ret = (79 * pot_val) + 21; |
ruschigo | 1:10de89ea1f70 | 69 | break; |
ruschigo | 1:10de89ea1f70 | 70 | case SCALE_SENS_ASSISTED_MOD: |
ruschigo | 1:10de89ea1f70 | 71 | ret = (9 * pot_val) + 1; |
ruschigo | 1:10de89ea1f70 | 72 | break; |
ruschigo | 1:10de89ea1f70 | 73 | default: |
ruschigo | 1:10de89ea1f70 | 74 | ret = pot_val; |
ruschigo | 1:10de89ea1f70 | 75 | break; |
ruschigo | 1:10de89ea1f70 | 76 | } |
ruschigo | 1:10de89ea1f70 | 77 | return ret; |
ruschigo | 1:10de89ea1f70 | 78 | } |
ruschigo | 1:10de89ea1f70 | 79 | |
ruschigo | 1:10de89ea1f70 | 80 | |
ruschigo | 1:10de89ea1f70 | 81 | int update_parameter(float scaled_value, uint16_t vp, float min, float max, int fix_bits){ |
ruschigo | 1:10de89ea1f70 | 82 | uint16_t data[1]; |
ruschigo | 1:10de89ea1f70 | 83 | uint16_t aux; |
ruschigo | 1:10de89ea1f70 | 84 | if(scaled_value > max) scaled_value = max; |
ruschigo | 1:10de89ea1f70 | 85 | if(scaled_value < min) scaled_value = min; |
ruschigo | 1:10de89ea1f70 | 86 | if(fix_bits >0){ |
ruschigo | 1:10de89ea1f70 | 87 | scaled_value = scaled_value * 10; |
ruschigo | 1:10de89ea1f70 | 88 | data[0] = (uint16_t)scaled_value; |
ruschigo | 1:10de89ea1f70 | 89 | } |
ruschigo | 1:10de89ea1f70 | 90 | else |
ruschigo | 1:10de89ea1f70 | 91 | data[0] = (uint16_t)scaled_value; |
ruschigo | 1:10de89ea1f70 | 92 | proculus_set_vp(0x5, vp, data); |
ruschigo | 1:10de89ea1f70 | 93 | return 0; |
ruschigo | 1:10de89ea1f70 | 94 | } |
ruschigo | 1:10de89ea1f70 | 95 | |
ruschigo | 1:10de89ea1f70 | 96 | |
ruschigo | 1:10de89ea1f70 | 97 | |
ruschigo | 1:10de89ea1f70 | 98 | /*specific routine to get the screen at rx irq routine*/ |
ruschigo | 1:10de89ea1f70 | 99 | void get_screen_at_irq(){ |
ruschigo | 1:10de89ea1f70 | 100 | proculus_get_ctrl(0x3, PIC_ID_H, 0x2); |
ruschigo | 1:10de89ea1f70 | 101 | } |
ruschigo | 1:10de89ea1f70 | 102 | |
ruschigo | 1:10de89ea1f70 | 103 | void update_screen(){ |
ruschigo | 1:10de89ea1f70 | 104 | //update P.P Pressure |
ruschigo | 1:10de89ea1f70 | 105 | update_parameter(calc_scaled_value(SCALE_PP_PRESSURE, rx_pot[0]), |
ruschigo | 1:10de89ea1f70 | 106 | DRIVE_PRESSURE_VP, 1.0, 35, 1 |
ruschigo | 1:10de89ea1f70 | 107 | ); |
ruschigo | 1:10de89ea1f70 | 108 | //update BPM ok |
ruschigo | 1:10de89ea1f70 | 109 | update_parameter(calc_scaled_value(SCALE_BPM, rx_pot[1]), |
ruschigo | 1:10de89ea1f70 | 110 | BPM_VP, 10, 30, 0 |
ruschigo | 1:10de89ea1f70 | 111 | ); |
ruschigo | 1:10de89ea1f70 | 112 | //update TINSP |
ruschigo | 1:10de89ea1f70 | 113 | update_parameter(calc_scaled_value(SCALE_TINSP, rx_pot[2]), |
ruschigo | 1:10de89ea1f70 | 114 | TINS_VP, 0.5, 3.0, 1 |
ruschigo | 1:10de89ea1f70 | 115 | ); |
ruschigo | 1:10de89ea1f70 | 116 | //update FIO2 (Oxigen%) |
ruschigo | 1:10de89ea1f70 | 117 | update_parameter(calc_scaled_value(SCALE_FIO2, rx_pot[3]), |
ruschigo | 1:10de89ea1f70 | 118 | FIO2_VP, 21, 100, 0 |
ruschigo | 1:10de89ea1f70 | 119 | ); |
ruschigo | 1:10de89ea1f70 | 120 | } |
ruschigo | 1:10de89ea1f70 | 121 | |
ruschigo | 1:10de89ea1f70 | 122 | int bc = 0;//byte couter |
ruschigo | 1:10de89ea1f70 | 123 | int i_rx = 0;//counter to start receive rx at serial |
ruschigo | 1:10de89ea1f70 | 124 | |
ruschigo | 2:b39f5ce4d5bd | 125 | void clear_display_buffer(){ |
ruschigo | 2:b39f5ce4d5bd | 126 | int i = 0; |
ruschigo | 2:b39f5ce4d5bd | 127 | char msg[30] = "DISPLAY:"; |
ruschigo | 2:b39f5ce4d5bd | 128 | char t[3]; |
ruschigo | 2:b39f5ce4d5bd | 129 | while(i<7){ |
ruschigo | 2:b39f5ce4d5bd | 130 | sprintf(t,"%x",serial_rx_buffer[i]); |
ruschigo | 2:b39f5ce4d5bd | 131 | strcat(msg, t); |
ruschigo | 2:b39f5ce4d5bd | 132 | serial_rx_buffer[i] = 0x0; |
ruschigo | 2:b39f5ce4d5bd | 133 | i++; |
ruschigo | 2:b39f5ce4d5bd | 134 | } |
ruschigo | 2:b39f5ce4d5bd | 135 | //pc.puts(msg); |
ruschigo | 2:b39f5ce4d5bd | 136 | //pc.puts("\n"); |
ruschigo | 2:b39f5ce4d5bd | 137 | } |
ruschigo | 2:b39f5ce4d5bd | 138 | |
ruschigo | 1:10de89ea1f70 | 139 | #define DELAY_UART 2000 //us |
ruschigo | 1:10de89ea1f70 | 140 | void serial_rx_irq(){ |
ruschigo | 1:10de89ea1f70 | 141 | int time_us; |
ruschigo | 1:10de89ea1f70 | 142 | char debug_msg[100]; |
ruschigo | 1:10de89ea1f70 | 143 | char temp_char[10]; |
ruschigo | 1:10de89ea1f70 | 144 | char rx_buffer[50] = "0"; |
ruschigo | 1:10de89ea1f70 | 145 | int i = 0, j=0, k; |
ruschigo | 1:10de89ea1f70 | 146 | int bytes_to_rcv = 0; |
ruschigo | 1:10de89ea1f70 | 147 | struct proculus_pkt pkt; //to manage data |
ruschigo | 1:10de89ea1f70 | 148 | uint16_t data[255];//to store data |
ruschigo | 1:10de89ea1f70 | 149 | pkt.buffer = data; |
ruschigo | 1:10de89ea1f70 | 150 | int unknow = 1;//if unknow pkt come |
ruschigo | 2:b39f5ce4d5bd | 151 | while(serial1.readable()){ |
ruschigo | 2:b39f5ce4d5bd | 152 | serial_rx_buffer[i_rx] = serial1.getc(); |
ruschigo | 2:b39f5ce4d5bd | 153 | i_rx++; |
ruschigo | 2:b39f5ce4d5bd | 154 | if(i_rx>=8){ |
ruschigo | 2:b39f5ce4d5bd | 155 | i_rx = 0; |
ruschigo | 2:b39f5ce4d5bd | 156 | //pc_puts(rx_pulga_buffer, 7); |
ruschigo | 2:b39f5ce4d5bd | 157 | break; |
ruschigo | 2:b39f5ce4d5bd | 158 | } |
ruschigo | 2:b39f5ce4d5bd | 159 | } |
ruschigo | 1:10de89ea1f70 | 160 | /* |
ruschigo | 1:10de89ea1f70 | 161 | *Never remove the timer serial_timer, it keep the mininum time between |
ruschigo | 1:10de89ea1f70 | 162 | *two uart datas, if you have problem with serial, try change the DELAY_UART |
ruschigo | 1:10de89ea1f70 | 163 | *value, mbed api do not says anything about this timing issue |
ruschigo | 1:10de89ea1f70 | 164 | */ |
ruschigo | 2:b39f5ce4d5bd | 165 | /*serial_timer.reset();//restart timer |
ruschigo | 1:10de89ea1f70 | 166 | serial_timer.start(); |
ruschigo | 1:10de89ea1f70 | 167 | time_us = serial_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 168 | while(time_us<DELAY_UART){ |
ruschigo | 1:10de89ea1f70 | 169 | time_us = serial_timer.read_us(); |
ruschigo | 2:b39f5ce4d5bd | 170 | }*/ |
ruschigo | 1:10de89ea1f70 | 171 | //if(time_us >= DELAY_UART) |
ruschigo | 1:10de89ea1f70 | 172 | //{ |
ruschigo | 1:10de89ea1f70 | 173 | /*if(serial_rx_buffer[0] != 0x5a){ |
ruschigo | 1:10de89ea1f70 | 174 | i_rx = 0; |
ruschigo | 1:10de89ea1f70 | 175 | //bc = 255; |
ruschigo | 1:10de89ea1f70 | 176 | } |
ruschigo | 1:10de89ea1f70 | 177 | if(i_rx >1 && serial_rx_buffer[1] != 0xa5){ |
ruschigo | 1:10de89ea1f70 | 178 | i_rx = 0; |
ruschigo | 1:10de89ea1f70 | 179 | //bc = 255; |
ruschigo | 1:10de89ea1f70 | 180 | }*/ |
ruschigo | 1:10de89ea1f70 | 181 | |
ruschigo | 2:b39f5ce4d5bd | 182 | /* while(serial1.readable()){//get only one byte per interrupt |
ruschigo | 1:10de89ea1f70 | 183 | serial_timer.reset();//restart timer |
ruschigo | 1:10de89ea1f70 | 184 | serial_timer.start(); |
ruschigo | 1:10de89ea1f70 | 185 | time_us = serial_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 186 | while(time_us<DELAY_UART){ |
ruschigo | 1:10de89ea1f70 | 187 | time_us = serial_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 188 | } |
ruschigo | 1:10de89ea1f70 | 189 | if(serial_rx_buffer[0] != 0x5a){ |
ruschigo | 1:10de89ea1f70 | 190 | i_rx = 0; |
ruschigo | 1:10de89ea1f70 | 191 | //bc = 255; |
ruschigo | 1:10de89ea1f70 | 192 | } |
ruschigo | 1:10de89ea1f70 | 193 | if(i_rx >1 && serial_rx_buffer[1] != 0xa5){ |
ruschigo | 1:10de89ea1f70 | 194 | i_rx = 0; |
ruschigo | 1:10de89ea1f70 | 195 | //bc = 255; |
ruschigo | 1:10de89ea1f70 | 196 | } |
ruschigo | 1:10de89ea1f70 | 197 | serial_rx_buffer[i_rx] = serial1.getc(); |
ruschigo | 1:10de89ea1f70 | 198 | if(i_rx == 2)//get bc(how many byts will come |
ruschigo | 1:10de89ea1f70 | 199 | bc = serial_rx_buffer[2]; |
ruschigo | 1:10de89ea1f70 | 200 | //sprintf(debug_msg,"serial_rx_buffer[%d] = %x\n",i_rx ,serial_rx_buffer[i_rx]); |
ruschigo | 1:10de89ea1f70 | 201 | //pc.puts(debug_msg); |
ruschigo | 1:10de89ea1f70 | 202 | if(bc > 0 && i_rx >2)//avoid decrement it when it was got |
ruschigo | 1:10de89ea1f70 | 203 | bc--; |
ruschigo | 1:10de89ea1f70 | 204 | i_rx++; |
ruschigo | 1:10de89ea1f70 | 205 | } |
ruschigo | 1:10de89ea1f70 | 206 | |
ruschigo | 1:10de89ea1f70 | 207 | /*if(i_rx == 2)//get bc(how many byts will come |
ruschigo | 1:10de89ea1f70 | 208 | bc = serial_rx_buffer[2];*/ |
ruschigo | 1:10de89ea1f70 | 209 | |
ruschigo | 1:10de89ea1f70 | 210 | //} |
ruschigo | 1:10de89ea1f70 | 211 | /*while(serial1.readable()){ |
ruschigo | 1:10de89ea1f70 | 212 | serial_rx_buffer[i] = serial1.getc(); |
ruschigo | 1:10de89ea1f70 | 213 | serial_timer.reset(); |
ruschigo | 1:10de89ea1f70 | 214 | time_us = serial_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 215 | while(time_us < DELAY_UART) |
ruschigo | 1:10de89ea1f70 | 216 | { |
ruschigo | 1:10de89ea1f70 | 217 | time_us = serial_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 218 | } |
ruschigo | 1:10de89ea1f70 | 219 | i++; |
ruschigo | 1:10de89ea1f70 | 220 | }*/ |
ruschigo | 1:10de89ea1f70 | 221 | //serial_timer.reset();//restart timer |
ruschigo | 1:10de89ea1f70 | 222 | //serial_timer.start(); |
ruschigo | 2:b39f5ce4d5bd | 223 | //serial_timer.stop(); |
ruschigo | 1:10de89ea1f70 | 224 | //j = 0; |
ruschigo | 1:10de89ea1f70 | 225 | //sprintf(debug_msg, "rx_bytes:%d \n bc = %d\n", i_rx, bc); |
ruschigo | 1:10de89ea1f70 | 226 | //pc.puts(debug_msg); |
ruschigo | 2:b39f5ce4d5bd | 227 | if(i_rx == 0){//packt was received |
ruschigo | 1:10de89ea1f70 | 228 | /*if(serial_rx_buffer[2] >= 0x80 && serial_rx_buffer[2] <= 0x84) |
ruschigo | 1:10de89ea1f70 | 229 | { |
ruschigo | 1:10de89ea1f70 | 230 | serial_to_proculus_pkt_2(serial_rx_buffer, &pkt); |
ruschigo | 1:10de89ea1f70 | 231 | unknow=0; |
ruschigo | 1:10de89ea1f70 | 232 | }*/ |
ruschigo | 1:10de89ea1f70 | 233 | if(serial_rx_buffer[3] >= 0x80 && serial_rx_buffer[3] <= 0x84) |
ruschigo | 1:10de89ea1f70 | 234 | { |
ruschigo | 1:10de89ea1f70 | 235 | serial_to_proculus_pkt(serial_rx_buffer, &pkt); |
ruschigo | 1:10de89ea1f70 | 236 | unknow=0; |
ruschigo | 1:10de89ea1f70 | 237 | } |
ruschigo | 1:10de89ea1f70 | 238 | else |
ruschigo | 1:10de89ea1f70 | 239 | unknow = 1;//received something unknow |
ruschigo | 1:10de89ea1f70 | 240 | } |
ruschigo | 1:10de89ea1f70 | 241 | |
ruschigo | 1:10de89ea1f70 | 242 | if(unknow == 0){ |
ruschigo | 1:10de89ea1f70 | 243 | if(pkt.cmd == W_VP){ |
ruschigo | 1:10de89ea1f70 | 244 | switch(pkt.address){ |
ruschigo | 1:10de89ea1f70 | 245 | case PEEP_TARGET_VP: |
ruschigo | 1:10de89ea1f70 | 246 | display_option = 'e'; |
ruschigo | 1:10de89ea1f70 | 247 | display_data = pkt.buffer[0];//ISSUE is this data in fix point? |
ruschigo | 1:10de89ea1f70 | 248 | display_ctrl = DISPLAY_CMD_DATA_ARRIVE; |
ruschigo | 1:10de89ea1f70 | 249 | break; |
ruschigo | 1:10de89ea1f70 | 250 | case ASSISTED_SENSIBILITY_VP: |
ruschigo | 1:10de89ea1f70 | 251 | display_option = 's'; |
ruschigo | 1:10de89ea1f70 | 252 | display_data = pkt.buffer[0];//ISSUE is this data in fix point? |
ruschigo | 1:10de89ea1f70 | 253 | display_ctrl = DISPLAY_CMD_DATA_ARRIVE; |
ruschigo | 1:10de89ea1f70 | 254 | break; |
ruschigo | 1:10de89ea1f70 | 255 | default: |
ruschigo | 1:10de89ea1f70 | 256 | break; |
ruschigo | 1:10de89ea1f70 | 257 | } |
ruschigo | 1:10de89ea1f70 | 258 | } |
ruschigo | 1:10de89ea1f70 | 259 | if(pkt.cmd == R_VP){ |
ruschigo | 1:10de89ea1f70 | 260 | switch(pkt.address){ |
ruschigo | 1:10de89ea1f70 | 261 | case OPTION_CMD_VP: |
ruschigo | 1:10de89ea1f70 | 262 | display_ctrl = DISPLAY_CMD_START;//active in next serial loop to do the ctrl |
ruschigo | 1:10de89ea1f70 | 263 | display_option = (char)pkt.buffer[0]; |
ruschigo | 1:10de89ea1f70 | 264 | switch(display_option){//if this CMD needs data claim for it |
ruschigo | 1:10de89ea1f70 | 265 | case 'm': |
ruschigo | 1:10de89ea1f70 | 266 | proculus_get_vp(0x4, MOV_MOTOR_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 267 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 268 | break; |
ruschigo | 1:10de89ea1f70 | 269 | case 'p'://just show value in display |
ruschigo | 1:10de89ea1f70 | 270 | // update_parameter(calc_scaled_value(SCALE_PP_PRESSURE, Pot1.read()), |
ruschigo | 1:10de89ea1f70 | 271 | // DRIVE_PRESSURE_VP, 'p', 1.0, 35, 3 |
ruschigo | 1:10de89ea1f70 | 272 | // ); |
ruschigo | 1:10de89ea1f70 | 273 | break; |
ruschigo | 1:10de89ea1f70 | 274 | case 'e': |
ruschigo | 1:10de89ea1f70 | 275 | proculus_get_vp(0x4, PEEP_TARGET_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 276 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 277 | break; |
ruschigo | 1:10de89ea1f70 | 278 | case 't': |
ruschigo | 1:10de89ea1f70 | 279 | //update_parameter(calc_scaled_value(SCALE_TINSP, Pot3.read()), |
ruschigo | 1:10de89ea1f70 | 280 | // TINS_VP, 't', 0.5, 3.0, 4 |
ruschigo | 1:10de89ea1f70 | 281 | // ); |
ruschigo | 1:10de89ea1f70 | 282 | break; |
ruschigo | 1:10de89ea1f70 | 283 | case 'c': |
ruschigo | 1:10de89ea1f70 | 284 | //update_parameter(calc_scaled_value(SCALE_BPM, Pot2.read()), |
ruschigo | 1:10de89ea1f70 | 285 | // BPM_VP, 'c', 10, 30, 8 |
ruschigo | 1:10de89ea1f70 | 286 | // ); |
ruschigo | 1:10de89ea1f70 | 287 | break; |
ruschigo | 1:10de89ea1f70 | 288 | case 'S': |
ruschigo | 1:10de89ea1f70 | 289 | proculus_get_vp(0x4, BREATH_TURN_ONOFF_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 290 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 291 | break; |
ruschigo | 1:10de89ea1f70 | 292 | case 's': |
ruschigo | 1:10de89ea1f70 | 293 | proculus_get_vp(0x4, ASSISTED_SENSIBILITY_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 294 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 295 | break; |
ruschigo | 1:10de89ea1f70 | 296 | case 'I': |
ruschigo | 1:10de89ea1f70 | 297 | proculus_get_vp(0x4, KI_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 298 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 299 | break; |
ruschigo | 1:10de89ea1f70 | 300 | case 'P': |
ruschigo | 1:10de89ea1f70 | 301 | proculus_get_vp(0x4, KP_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 302 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 303 | break; |
ruschigo | 1:10de89ea1f70 | 304 | case 'D': |
ruschigo | 1:10de89ea1f70 | 305 | proculus_get_vp(0x4, KD_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 306 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 307 | break; |
ruschigo | 1:10de89ea1f70 | 308 | case 'o': |
ruschigo | 1:10de89ea1f70 | 309 | //update_parameter(calc_scaled_value(SCALE_FIO2, Pot4.read()), |
ruschigo | 1:10de89ea1f70 | 310 | // FIO2_VP, 'o', 0.5, 21, 100 |
ruschigo | 1:10de89ea1f70 | 311 | // ); |
ruschigo | 1:10de89ea1f70 | 312 | break; |
ruschigo | 1:10de89ea1f70 | 313 | case 'A': |
ruschigo | 1:10de89ea1f70 | 314 | proculus_get_vp(0x4, ONOFF_ASSISTED_MODE_VP, 0x1); |
ruschigo | 1:10de89ea1f70 | 315 | display_ctrl = DISPLAY_CMD_WAITING_DATA; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 316 | break; |
ruschigo | 1:10de89ea1f70 | 317 | default: |
ruschigo | 1:10de89ea1f70 | 318 | //print warning |
ruschigo | 1:10de89ea1f70 | 319 | break; |
ruschigo | 1:10de89ea1f70 | 320 | }//switch |
ruschigo | 1:10de89ea1f70 | 321 | break; |
ruschigo | 1:10de89ea1f70 | 322 | case BREATH_TURN_ONOFF_VP://TEST OK |
ruschigo | 1:10de89ea1f70 | 323 | display_option = 'S'; |
ruschigo | 1:10de89ea1f70 | 324 | display_data = pkt.buffer[0];//for while let it as single uint16 |
ruschigo | 1:10de89ea1f70 | 325 | display_ctrl = DISPLAY_CMD_DATA_ARRIVE; //wait for data from display |
ruschigo | 1:10de89ea1f70 | 326 | break; |
ruschigo | 1:10de89ea1f70 | 327 | case PEEP_TARGET_VP: |
ruschigo | 1:10de89ea1f70 | 328 | display_option = 'e'; |
ruschigo | 1:10de89ea1f70 | 329 | display_data = pkt.buffer[0];//ISSUE is this data in fix point? |
ruschigo | 1:10de89ea1f70 | 330 | display_ctrl = DISPLAY_CMD_DATA_ARRIVE; |
ruschigo | 1:10de89ea1f70 | 331 | break; |
ruschigo | 1:10de89ea1f70 | 332 | case ASSISTED_SENSIBILITY_VP: |
ruschigo | 1:10de89ea1f70 | 333 | //sprintf(debug_msg,"Assi_sens = %x \n", pkt.buffer[0]); |
ruschigo | 1:10de89ea1f70 | 334 | //pc.puts(debug_msg); |
ruschigo | 1:10de89ea1f70 | 335 | display_option = 's'; |
ruschigo | 1:10de89ea1f70 | 336 | display_data = pkt.buffer[0];//ISSUE is this data in fix point? |
ruschigo | 1:10de89ea1f70 | 337 | display_ctrl = DISPLAY_CMD_DATA_ARRIVE; |
ruschigo | 1:10de89ea1f70 | 338 | break; |
ruschigo | 1:10de89ea1f70 | 339 | default: |
ruschigo | 1:10de89ea1f70 | 340 | break; |
ruschigo | 1:10de89ea1f70 | 341 | }//switch |
ruschigo | 1:10de89ea1f70 | 342 | }//if |
ruschigo | 1:10de89ea1f70 | 343 | if(pkt.cmd == R_CTRL_REG){//from a read control register comand |
ruschigo | 1:10de89ea1f70 | 344 | //pc.puts("control reg \n"); |
ruschigo | 1:10de89ea1f70 | 345 | if(pkt.address == PIC_ID_H){//read screen cmd |
ruschigo | 1:10de89ea1f70 | 346 | screen_id = (pkt.buffer[0] << 8 ); |
ruschigo | 1:10de89ea1f70 | 347 | screen_id |= pkt.buffer[1]; |
ruschigo | 1:10de89ea1f70 | 348 | //sprintf(debug_msg,"screen_id = %x \n", screen_id); |
ruschigo | 1:10de89ea1f70 | 349 | //pc.puts(debug_msg); |
ruschigo | 1:10de89ea1f70 | 350 | //if(PISTON_HOM_PIN == HIGH){ |
ruschigo | 1:10de89ea1f70 | 351 | switch(screen_id){ |
ruschigo | 1:10de89ea1f70 | 352 | case SCREEN_CALIBRATING: |
ruschigo | 1:10de89ea1f70 | 353 | jump_to_screen(SCREEN_MAIN_MENU); |
ruschigo | 1:10de89ea1f70 | 354 | break; |
ruschigo | 1:10de89ea1f70 | 355 | case SCREEN_INIT: |
ruschigo | 1:10de89ea1f70 | 356 | jump_to_screen(SCREEN_CALIBRATING); |
ruschigo | 1:10de89ea1f70 | 357 | break; |
ruschigo | 1:10de89ea1f70 | 358 | case SCREEN_OFF: |
ruschigo | 1:10de89ea1f70 | 359 | jump_to_screen(SCREEN_STARTUP); |
ruschigo | 1:10de89ea1f70 | 360 | break; |
ruschigo | 1:10de89ea1f70 | 361 | case SCREEN_STARTUP: |
ruschigo | 1:10de89ea1f70 | 362 | jump_to_screen(SCREEN_INIT); |
ruschigo | 1:10de89ea1f70 | 363 | break; |
ruschigo | 1:10de89ea1f70 | 364 | default: |
ruschigo | 1:10de89ea1f70 | 365 | //print warning |
ruschigo | 1:10de89ea1f70 | 366 | break; |
ruschigo | 1:10de89ea1f70 | 367 | } |
ruschigo | 1:10de89ea1f70 | 368 | //}else{ |
ruschigo | 1:10de89ea1f70 | 369 | // jump_to_screen(SCREEN_MAIN_MENU); |
ruschigo | 1:10de89ea1f70 | 370 | //} |
ruschigo | 1:10de89ea1f70 | 371 | } |
ruschigo | 1:10de89ea1f70 | 372 | } |
ruschigo | 2:b39f5ce4d5bd | 373 | clear_display_buffer(); |
ruschigo | 1:10de89ea1f70 | 374 | i_rx = 0; |
ruschigo | 1:10de89ea1f70 | 375 | } |
ruschigo | 1:10de89ea1f70 | 376 | } |
ruschigo | 1:10de89ea1f70 | 377 | |
ruschigo | 1:10de89ea1f70 | 378 | struct pulga_pkt { |
ruschigo | 1:10de89ea1f70 | 379 | uint8_t header_h; |
ruschigo | 1:10de89ea1f70 | 380 | uint8_t header_l; |
ruschigo | 1:10de89ea1f70 | 381 | uint8_t count; |
ruschigo | 1:10de89ea1f70 | 382 | uint8_t cmd; |
ruschigo | 1:10de89ea1f70 | 383 | uint16_t address; |
ruschigo | 1:10de89ea1f70 | 384 | uint16_t *buffer; |
ruschigo | 1:10de89ea1f70 | 385 | }; |
ruschigo | 1:10de89ea1f70 | 386 | |
ruschigo | 1:10de89ea1f70 | 387 | |
ruschigo | 1:10de89ea1f70 | 388 | //PULGA TO PULGA SERIAL PROTOCOL P2PS |
ruschigo | 1:10de89ea1f70 | 389 | /*9A A9 BC CMD DATA |
ruschigo | 1:10de89ea1f70 | 390 | HH HL Byte to come Command datas |
ruschigo | 1:10de89ea1f70 | 391 | */ |
ruschigo | 1:10de89ea1f70 | 392 | |
ruschigo | 1:10de89ea1f70 | 393 | #define PULGA_CMD_SEND_POT_DATA 0x40 |
ruschigo | 1:10de89ea1f70 | 394 | /* |
ruschigo | 1:10de89ea1f70 | 395 | *serial_to_proculus_pkt: get the data received in serial rx and translate |
ruschigo | 1:10de89ea1f70 | 396 | *to proculus_pkt |
ruschigo | 1:10de89ea1f70 | 397 | *@pkt is pointer to the struct to store datas |
ruschigo | 1:10de89ea1f70 | 398 | */ |
ruschigo | 1:10de89ea1f70 | 399 | int serial_to_pulga_pkt(char *serial_data, struct pulga_pkt *pkt){ |
ruschigo | 1:10de89ea1f70 | 400 | pkt->header_h = serial_data[0]; |
ruschigo | 1:10de89ea1f70 | 401 | pkt->header_l = serial_data[1]; |
ruschigo | 1:10de89ea1f70 | 402 | pkt->count = serial_data[2]; |
ruschigo | 1:10de89ea1f70 | 403 | pkt->cmd = serial_data[3]; |
ruschigo | 1:10de89ea1f70 | 404 | if(pkt->cmd == PULGA_CMD_SEND_POT_DATA){ |
ruschigo | 1:10de89ea1f70 | 405 | pkt->address = serial_data[4]; |
ruschigo | 1:10de89ea1f70 | 406 | pkt->buffer[0] = (serial_data[5] << 8); |
ruschigo | 1:10de89ea1f70 | 407 | pkt->buffer[0] |= serial_data[6]; |
ruschigo | 1:10de89ea1f70 | 408 | } |
ruschigo | 1:10de89ea1f70 | 409 | return 0; |
ruschigo | 1:10de89ea1f70 | 410 | } |
ruschigo | 1:10de89ea1f70 | 411 | char rx_pulga_buffer[100]; |
ruschigo | 1:10de89ea1f70 | 412 | void clear_pulga_buffer(){ |
ruschigo | 1:10de89ea1f70 | 413 | int i = 0; |
ruschigo | 1:10de89ea1f70 | 414 | char msg[30] = "PKT:"; |
ruschigo | 1:10de89ea1f70 | 415 | char t[3]; |
ruschigo | 2:b39f5ce4d5bd | 416 | while(i<7){ |
ruschigo | 1:10de89ea1f70 | 417 | sprintf(t,"%x",rx_pulga_buffer[i]); |
ruschigo | 1:10de89ea1f70 | 418 | strcat(msg, t); |
ruschigo | 1:10de89ea1f70 | 419 | rx_pulga_buffer[i] = 0x0; |
ruschigo | 1:10de89ea1f70 | 420 | i++; |
ruschigo | 1:10de89ea1f70 | 421 | } |
ruschigo | 2:b39f5ce4d5bd | 422 | //pc.puts(msg); |
ruschigo | 2:b39f5ce4d5bd | 423 | //pc.puts("\n"); |
ruschigo | 1:10de89ea1f70 | 424 | } |
ruschigo | 1:10de89ea1f70 | 425 | |
ruschigo | 1:10de89ea1f70 | 426 | //*********************************************************************************************** |
ruschigo | 1:10de89ea1f70 | 427 | #define DELAY_P2PS 10000 //us |
ruschigo | 1:10de89ea1f70 | 428 | |
ruschigo | 1:10de89ea1f70 | 429 | int rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 430 | int pulga_bc = 0; |
ruschigo | 1:10de89ea1f70 | 431 | Timer pulga_rx_timer; |
ruschigo | 1:10de89ea1f70 | 432 | void serial_pulga_rx(){ |
ruschigo | 1:10de89ea1f70 | 433 | int i=0, unknow = 1; |
ruschigo | 1:10de89ea1f70 | 434 | struct pulga_pkt pulga_pkt; |
ruschigo | 1:10de89ea1f70 | 435 | uint16_t data[2]; |
ruschigo | 1:10de89ea1f70 | 436 | int time_us; |
ruschigo | 1:10de89ea1f70 | 437 | char debug_msg[100]; |
ruschigo | 1:10de89ea1f70 | 438 | pulga_pkt.buffer = data; |
ruschigo | 2:b39f5ce4d5bd | 439 | while(serial_to_pulga.readable()){ |
ruschigo | 2:b39f5ce4d5bd | 440 | rx_pulga_buffer[rx_i] = serial_to_pulga.getc(); |
ruschigo | 2:b39f5ce4d5bd | 441 | rx_i++; |
ruschigo | 2:b39f5ce4d5bd | 442 | if(rx_i>=7){ |
ruschigo | 2:b39f5ce4d5bd | 443 | rx_i = 0; |
ruschigo | 2:b39f5ce4d5bd | 444 | //pc_puts(rx_pulga_buffer, 7); |
ruschigo | 2:b39f5ce4d5bd | 445 | break; |
ruschigo | 2:b39f5ce4d5bd | 446 | } |
ruschigo | 2:b39f5ce4d5bd | 447 | } |
ruschigo | 2:b39f5ce4d5bd | 448 | //pulga_rx_timer.reset();//restart timer |
ruschigo | 2:b39f5ce4d5bd | 449 | //pulga_rx_timer.start(); |
ruschigo | 1:10de89ea1f70 | 450 | //time_us = pulga_rx_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 451 | //while(time_us<DELAY_P2PS){ |
ruschigo | 1:10de89ea1f70 | 452 | // time_us = pulga_rx_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 453 | //} |
ruschigo | 1:10de89ea1f70 | 454 | /*if(rx_pulga_buffer[0] != 0x9a){ |
ruschigo | 1:10de89ea1f70 | 455 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 456 | } |
ruschigo | 1:10de89ea1f70 | 457 | if(rx_i >1 && rx_pulga_buffer[1] != 0xa9){ |
ruschigo | 1:10de89ea1f70 | 458 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 459 | }*/ |
ruschigo | 2:b39f5ce4d5bd | 460 | /* |
ruschigo | 1:10de89ea1f70 | 461 | while(serial_to_pulga.readable()){//get only one byte per interrupt |
ruschigo | 1:10de89ea1f70 | 462 | if(rx_pulga_buffer[0] != 0x9a){//avoid noise |
ruschigo | 1:10de89ea1f70 | 463 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 464 | pulga_bc = 0; |
ruschigo | 1:10de89ea1f70 | 465 | clear_pulga_buffer(); |
ruschigo | 1:10de89ea1f70 | 466 | } |
ruschigo | 1:10de89ea1f70 | 467 | if(rx_i >1 && rx_pulga_buffer[1] != 0xa9){//avoid noise |
ruschigo | 1:10de89ea1f70 | 468 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 469 | pulga_bc = 0; |
ruschigo | 1:10de89ea1f70 | 470 | clear_pulga_buffer(); |
ruschigo | 1:10de89ea1f70 | 471 | } |
ruschigo | 1:10de89ea1f70 | 472 | if( i>3 && rx_pulga_buffer[3] < 0x40 || rx_pulga_buffer[3] > 0x49){//avoid noise |
ruschigo | 1:10de89ea1f70 | 473 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 474 | pulga_bc = 0; |
ruschigo | 1:10de89ea1f70 | 475 | clear_pulga_buffer(); |
ruschigo | 1:10de89ea1f70 | 476 | } |
ruschigo | 1:10de89ea1f70 | 477 | |
ruschigo | 2:b39f5ce4d5bd | 478 | pulga_rx_timer.reset();//restart timer |
ruschigo | 1:10de89ea1f70 | 479 | pulga_rx_timer.start(); |
ruschigo | 1:10de89ea1f70 | 480 | time_us = pulga_rx_timer.read_us(); |
ruschigo | 1:10de89ea1f70 | 481 | while(time_us<DELAY_P2PS){ |
ruschigo | 1:10de89ea1f70 | 482 | time_us = pulga_rx_timer.read_us(); |
ruschigo | 2:b39f5ce4d5bd | 483 | } |
ruschigo | 1:10de89ea1f70 | 484 | rx_pulga_buffer[rx_i] = serial_to_pulga.getc(); |
ruschigo | 1:10de89ea1f70 | 485 | |
ruschigo | 1:10de89ea1f70 | 486 | if(rx_i == 2)//get bc(how many byts will come |
ruschigo | 1:10de89ea1f70 | 487 | pulga_bc = rx_pulga_buffer[2]; |
ruschigo | 1:10de89ea1f70 | 488 | |
ruschigo | 1:10de89ea1f70 | 489 | if(pulga_bc > 0 && rx_i > 2)//avoid decrement it when it was got |
ruschigo | 1:10de89ea1f70 | 490 | pulga_bc--; |
ruschigo | 2:b39f5ce4d5bd | 491 | |
ruschigo | 1:10de89ea1f70 | 492 | sprintf(debug_msg,"rx_pulga_buffer[%d] = %x\n",rx_i ,rx_pulga_buffer[rx_i]); |
ruschigo | 1:10de89ea1f70 | 493 | pc.puts(debug_msg); |
ruschigo | 1:10de89ea1f70 | 494 | sprintf(debug_msg,"pulga_bc = %d\n",pulga_bc); |
ruschigo | 1:10de89ea1f70 | 495 | pc.puts(debug_msg); |
ruschigo | 2:b39f5ce4d5bd | 496 | |
ruschigo | 1:10de89ea1f70 | 497 | |
ruschigo | 1:10de89ea1f70 | 498 | rx_i++; |
ruschigo | 1:10de89ea1f70 | 499 | if(pulga_bc == 0 && rx_i > 2) |
ruschigo | 1:10de89ea1f70 | 500 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 501 | } |
ruschigo | 2:b39f5ce4d5bd | 502 | */ |
ruschigo | 1:10de89ea1f70 | 503 | /*if(rx_i == 2)//get bc(how many byts will come |
ruschigo | 1:10de89ea1f70 | 504 | pulga_bc = rx_pulga_buffer[2];*/ |
ruschigo | 1:10de89ea1f70 | 505 | |
ruschigo | 2:b39f5ce4d5bd | 506 | if(rx_i ==0){ |
ruschigo | 1:10de89ea1f70 | 507 | if(rx_pulga_buffer[3] >= 0x40 && rx_pulga_buffer[3] <= 0x49) |
ruschigo | 1:10de89ea1f70 | 508 | { |
ruschigo | 1:10de89ea1f70 | 509 | serial_to_pulga_pkt(rx_pulga_buffer, &pulga_pkt); |
ruschigo | 1:10de89ea1f70 | 510 | unknow=0; |
ruschigo | 1:10de89ea1f70 | 511 | } |
ruschigo | 1:10de89ea1f70 | 512 | else |
ruschigo | 1:10de89ea1f70 | 513 | unknow = 1;//received something unknow |
ruschigo | 1:10de89ea1f70 | 514 | } |
ruschigo | 1:10de89ea1f70 | 515 | if(unknow == 0){ |
ruschigo | 1:10de89ea1f70 | 516 | //Do logic Here |
ruschigo | 1:10de89ea1f70 | 517 | if(pulga_pkt.cmd == PULGA_CMD_SEND_POT_DATA){ |
ruschigo | 1:10de89ea1f70 | 518 | rx_pot[pulga_pkt.address - 1] = (pulga_pkt.buffer[0] / 1000); |
ruschigo | 1:10de89ea1f70 | 519 | } |
ruschigo | 1:10de89ea1f70 | 520 | clear_pulga_buffer(); |
ruschigo | 1:10de89ea1f70 | 521 | rx_i = 0; |
ruschigo | 1:10de89ea1f70 | 522 | } |
ruschigo | 1:10de89ea1f70 | 523 | |
ruschigo | 1:10de89ea1f70 | 524 | } |
ruschigo | 1:10de89ea1f70 | 525 | |
ruschigo | 1:10de89ea1f70 | 526 | void Setup() |
ruschigo | 1:10de89ea1f70 | 527 | //Description: Main setup function, called after power on or reset |
ruschigo | 1:10de89ea1f70 | 528 | //Inputs: void |
ruschigo | 1:10de89ea1f70 | 529 | //Outputs: void |
ruschigo | 1:10de89ea1f70 | 530 | { |
ruschigo | 1:10de89ea1f70 | 531 | |
ruschigo | 1:10de89ea1f70 | 532 | //setup the device rx irq handler |
ruschigo | 2:b39f5ce4d5bd | 533 | //serial1.attach(&serial_rx_irq, RawSerial::RxIrq); |
ruschigo | 2:b39f5ce4d5bd | 534 | //serial_to_pulga.attach(&serial_pulga_rx, RawSerial::RxIrq); |
ruschigo | 1:10de89ea1f70 | 535 | //setup the baud rate to match with display |
ruschigo | 1:10de89ea1f70 | 536 | serial1.baud(115200); |
ruschigo | 1:10de89ea1f70 | 537 | serial_to_pulga.baud(9600); |
ruschigo | 1:10de89ea1f70 | 538 | |
ruschigo | 1:10de89ea1f70 | 539 | //display_timeout.attach(&get_screen_at_irq, 0.5); |
ruschigo | 1:10de89ea1f70 | 540 | display_ticker.attach(&get_screen_at_irq, 0.4); |
ruschigo | 1:10de89ea1f70 | 541 | //display_ticker.attach(&update_screen, 0.3); |
ruschigo | 1:10de89ea1f70 | 542 | |
ruschigo | 1:10de89ea1f70 | 543 | } |
ruschigo | 1:10de89ea1f70 | 544 | |
ruschigo | 1:10de89ea1f70 | 545 | void Send_to_pulga(){ |
ruschigo | 1:10de89ea1f70 | 546 | char temp[20]; |
ruschigo | 1:10de89ea1f70 | 547 | if(display_option != '\0') |
ruschigo | 1:10de89ea1f70 | 548 | { |
ruschigo | 1:10de89ea1f70 | 549 | serial_to_pulga.putc(display_option); |
ruschigo | 1:10de89ea1f70 | 550 | display_option = '\0'; |
ruschigo | 1:10de89ea1f70 | 551 | } |
ruschigo | 1:10de89ea1f70 | 552 | |
ruschigo | 1:10de89ea1f70 | 553 | if(display_ctrl == DISPLAY_CMD_DATA_ARRIVE) |
ruschigo | 1:10de89ea1f70 | 554 | { |
ruschigo | 1:10de89ea1f70 | 555 | sprintf(temp, "%f", display_data); |
ruschigo | 1:10de89ea1f70 | 556 | serial_to_pulga.puts(temp); |
ruschigo | 1:10de89ea1f70 | 557 | display_ctrl = DISPLAY_CMD_DONE; |
ruschigo | 1:10de89ea1f70 | 558 | } |
ruschigo | 1:10de89ea1f70 | 559 | } |
ruschigo | 1:10de89ea1f70 | 560 | |
ruschigo | 2:b39f5ce4d5bd | 561 | /*int pc_puts(const char *str, int size){ |
ruschigo | 2:b39f5ce4d5bd | 562 | int i = 0; |
ruschigo | 2:b39f5ce4d5bd | 563 | while(i < size){ |
ruschigo | 2:b39f5ce4d5bd | 564 | pc.putc(str[i]); |
ruschigo | 2:b39f5ce4d5bd | 565 | i++; |
ruschigo | 2:b39f5ce4d5bd | 566 | } |
ruschigo | 2:b39f5ce4d5bd | 567 | return 0; |
ruschigo | 2:b39f5ce4d5bd | 568 | }*/ |
ruschigo | 2:b39f5ce4d5bd | 569 | |
ruschigo | 1:10de89ea1f70 | 570 | //*********************************************************************************************** |
ruschigo | 1:10de89ea1f70 | 571 | int main() |
ruschigo | 1:10de89ea1f70 | 572 | { |
ruschigo | 2:b39f5ce4d5bd | 573 | wait(3);//time to display setup. not sure about this value |
ruschigo | 1:10de89ea1f70 | 574 | Setup(); |
ruschigo | 1:10de89ea1f70 | 575 | jump_to_screen(SCREEN_STARTUP); |
ruschigo | 2:b39f5ce4d5bd | 576 | int i = 0; |
ruschigo | 1:10de89ea1f70 | 577 | while (true) { |
ruschigo | 2:b39f5ce4d5bd | 578 | //jump_to_screen(SCREEN_STARTUP); |
ruschigo | 1:10de89ea1f70 | 579 | //update_screen(); |
ruschigo | 1:10de89ea1f70 | 580 | //Send_to_pulga(); |
ruschigo | 2:b39f5ce4d5bd | 581 | serial_pulga_rx(); |
ruschigo | 2:b39f5ce4d5bd | 582 | wait(0.2); |
ruschigo | 2:b39f5ce4d5bd | 583 | serial_rx_irq(); |
ruschigo | 1:10de89ea1f70 | 584 | } |
ruschigo | 1:10de89ea1f70 | 585 | } |