this program is designed for the CHITISAT's OBC, and is a prototype for the flight plan vs altitude

Dependencies:   ADS1015 BMP280 SDFileSystem SENSOR mbed

Committer:
FannyCalle
Date:
Tue Jun 26 20:04:47 2018 +0000
Revision:
4:c2bdc2bced76
Parent:
3:fef99c7c92b5
Child:
5:05fd6249c21b
corrgida la forma de guardar y los sensores se muestran bien ; falta magnetometro;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FannyCalle 1:a147ca4f8fa0 1 /*Programa principal del computador a bordo del cubesat "CHITISAT"
FannyCalle 0:642a7818292a 2 */
FannyCalle 0:642a7818292a 3 //***********************************************************************
FannyCalle 0:642a7818292a 4 #include "mbed.h"
FannyCalle 0:642a7818292a 5 #include "Adafruit_ADS1015.h"
FannyCalle 0:642a7818292a 6 #include "SDFileSystem.h"
FannyCalle 0:642a7818292a 7 #include "BMP280.h"
FannyCalle 0:642a7818292a 8 #include "MPU6050.h"
FannyCalle 0:642a7818292a 9 //#include "HMC5883L.h"
FannyCalle 0:642a7818292a 10 #include "SENSOR.h"
FannyCalle 0:642a7818292a 11 //***** declaracion de puertos
FannyCalle 0:642a7818292a 12 SDFileSystem sd(PA_12, PA_6, PA_1, PB_0 , "sd");// puerto SPI para el Storage
FannyCalle 0:642a7818292a 13 Serial sc(PB_6, PB_7,9600); //puerto para el sistema de comunicacioness
FannyCalle 0:642a7818292a 14 //I2C i2c(PB_4,PA_7); // puerto i2c
FannyCalle 0:642a7818292a 15 BMP280 bmp(i2c,0xEC); //Default address = 0x76
FannyCalle 0:642a7818292a 16 Adafruit_ADS1115 ads(&i2c); // adc de 16 bits
FannyCalle 0:642a7818292a 17 Serial obc(USBTX,USBRX); // puerto virtual del obc
FannyCalle 0:642a7818292a 18 SENSOR uv(PB_4,PA_7); //sensor de rayos ultra violeta
FannyCalle 4:c2bdc2bced76 19 SENSOR mag(PB_4,PA_7); // magnetometro
FannyCalle 0:642a7818292a 20 AnalogIn temp2(PA_5); //sensor de temperatura externa
FannyCalle 0:642a7818292a 21 AnalogIn voltaje(PA_4); //sensor analogico de voltaje
FannyCalle 0:642a7818292a 22 AnalogIn corriente(PA_3); // sensor analogico de corriente
FannyCalle 0:642a7818292a 23 AnalogIn temp3(ADC_TEMP); //sensor de temperatura del arm
FannyCalle 0:642a7818292a 24 DigitalOut Vcondicional(PA_8); //encendido de los sensores(logica negada)
FannyCalle 1:a147ca4f8fa0 25 DigitalOut camera(PB_5);
FannyCalle 0:642a7818292a 26 DigitalOut led(PB_3);
FannyCalle 0:642a7818292a 27 MPU6050 mpu6050;
FannyCalle 0:642a7818292a 28 Timer t;
FannyCalle 0:642a7818292a 29 //***** declaracionde funciones
FannyCalle 0:642a7818292a 30 void take_tl(void);
FannyCalle 0:642a7818292a 31 void take_mision(void);
FannyCalle 0:642a7818292a 32 void save_tl(void);
FannyCalle 0:642a7818292a 33 void save_mision(void);
FannyCalle 0:642a7818292a 34 void build_tr1(void);
FannyCalle 0:642a7818292a 35 void build_tr2(void);
FannyCalle 0:642a7818292a 36 void send_tr(void);
FannyCalle 0:642a7818292a 37 float procesing_h(void);
FannyCalle 0:642a7818292a 38 int condiciones_iniciales(void);
FannyCalle 0:642a7818292a 39 void filtro_pasa_bajos(void);
FannyCalle 0:642a7818292a 40 float get_altura(void);
FannyCalle 0:642a7818292a 41 int guardar(int);
FannyCalle 0:642a7818292a 42 //declaracion de constntes
FannyCalle 0:642a7818292a 43 #define enc 0xA0 //'160'
FannyCalle 0:642a7818292a 44 #define stby 0xA1 //'161'
FannyCalle 0:642a7818292a 45 #define sos 0xEE //'238'
FannyCalle 0:642a7818292a 46 #define com 0xC0 //'192'
FannyCalle 0:642a7818292a 47 #define nak 0xC1 //193
FannyCalle 0:642a7818292a 48 #define tc 0xC2 //194
FannyCalle 0:642a7818292a 49 #define data1 0xD1
FannyCalle 0:642a7818292a 50 #define data2 0xD2
FannyCalle 0:642a7818292a 51 #define data3 0xD3
FannyCalle 0:642a7818292a 52 //*********************
FannyCalle 0:642a7818292a 53 #define estado = '0xf'; //aun no se para que lo usare
FannyCalle 0:642a7818292a 54 //*********************
FannyCalle 0:642a7818292a 55 //declaracion de variables globales
FannyCalle 0:642a7818292a 56 //*************************
FannyCalle 0:642a7818292a 57 uint8_t trama[31];
FannyCalle 0:642a7818292a 58 uint16_t IMU[9]; // magenotometro*3, acelerometro*3, giroscopio*3
FannyCalle 0:642a7818292a 59 float imu[9]; // magenotometro*3, acelerometro*3, giroscopio*3
FannyCalle 0:642a7818292a 60 uint32_t bar; float press=0;
FannyCalle 0:642a7818292a 61 uint16_t tem[2],temp[2]; //temperatura interna i externa del cubesast tomadas por i2c
FannyCalle 0:642a7818292a 62 uint16_t sen_adc[4]; // sensor temperatura de la placa, sensor de corriente, voltaje, ultravioleta
FannyCalle 0:642a7818292a 63 uint16_t sensor_adc[4]; // para la toma de datos analogicos
FannyCalle 0:642a7818292a 64 uint16_t suv;
FannyCalle 0:642a7818292a 65 uint16_t senfis[4]; //sensor de los fisicos
FannyCalle 0:642a7818292a 66 volatile uint8_t menc=nak; // mensaje manipulado por comunicaciones
FannyCalle 0:642a7818292a 67 //*********************************************
FannyCalle 0:642a7818292a 68 //nuevos valores de datos, aun por revisar
FannyCalle 0:642a7818292a 69 char file[]="/sd/prueba1/drop0.txt";
FannyCalle 0:642a7818292a 70 char dato[]="/sd/condiciones/iniciales0.txt";
FannyCalle 0:642a7818292a 71 float BMPTemp = 0;
FannyCalle 0:642a7818292a 72 //float altura1,altura0,h;
FannyCalle 0:642a7818292a 73 float P, Pi, Pa;
FannyCalle 0:642a7818292a 74 float Pp[100];
FannyCalle 0:642a7818292a 75 int BR=0; //bandera de reset
FannyCalle 0:642a7818292a 76 float RS[16]; //registro de sensores
FannyCalle 0:642a7818292a 77 int ND ;
FannyCalle 0:642a7818292a 78 float h,altura1;
FannyCalle 0:642a7818292a 79 float P0;
FannyCalle 0:642a7818292a 80 float dif;
FannyCalle 0:642a7818292a 81 //*********************************************
FannyCalle 0:642a7818292a 82 //**********interruobcion activada por el rx de sistema de comunicaciones(sc)
FannyCalle 0:642a7818292a 83 void callback(){
FannyCalle 0:642a7818292a 84 uint8_t menr=sc.getc();
FannyCalle 0:642a7818292a 85 if(menr==nak || menr==tc ||menr==com){ //condicional para solo reconocer 3 comandos que puede llegar del sc
FannyCalle 0:642a7818292a 86 menc=menr; //si llegara otra cosa no cambiaria menc y no habria conflicto en los loops
FannyCalle 0:642a7818292a 87 }
FannyCalle 0:642a7818292a 88 obc.printf("resep: %d",menc);// borrar esto
FannyCalle 0:642a7818292a 89 }
FannyCalle 0:642a7818292a 90 //**********principal
FannyCalle 0:642a7818292a 91 int main()
FannyCalle 0:642a7818292a 92 {
FannyCalle 0:642a7818292a 93 t.reset();
FannyCalle 0:642a7818292a 94 t.start();
FannyCalle 0:642a7818292a 95 //******* inicio
FannyCalle 0:642a7818292a 96 obc.printf("iniciando sensores:\n");
FannyCalle 0:642a7818292a 97 //encenciendo sensores
FannyCalle 1:a147ca4f8fa0 98 wait(2);
FannyCalle 0:642a7818292a 99 Vcondicional=0;
FannyCalle 0:642a7818292a 100 //iniciando camara
FannyCalle 4:c2bdc2bced76 101 camera=1;
FannyCalle 0:642a7818292a 102 led=1;
FannyCalle 0:642a7818292a 103 wait(2);
FannyCalle 4:c2bdc2bced76 104 camera=0;
FannyCalle 0:642a7818292a 105 led=0;
FannyCalle 0:642a7818292a 106 wait(1);
FannyCalle 0:642a7818292a 107 obc.printf("iniciando camara\n\r");
FannyCalle 0:642a7818292a 108 //******* condiciones iniciales
FannyCalle 0:642a7818292a 109 obc.printf("iniciando sistema");
FannyCalle 0:642a7818292a 110 mkdir("/sd/prueba1", 0777); //
FannyCalle 0:642a7818292a 111 //LEER LA BANDERA DE STADO DEL SISTEMA BR
FannyCalle 0:642a7818292a 112 FILE *fp=fopen("/sd/condiciones/ci.txt","r");
FannyCalle 0:642a7818292a 113 if(fp==NULL){printf("no se pudo acceder al sd 1..");
FannyCalle 0:642a7818292a 114 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 115 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 116 fscanf(fp,"%d",&BR); ///*************************************8revisar
FannyCalle 0:642a7818292a 117 fclose(fp);
FannyCalle 0:642a7818292a 118 int tipo=condiciones_iniciales();
FannyCalle 0:642a7818292a 119 RS[10]= guardar(tipo);
FannyCalle 0:642a7818292a 120 P0=Pi;
FannyCalle 0:642a7818292a 121 dif=0;
FannyCalle 0:642a7818292a 122 float h=get_altura();
FannyCalle 0:642a7818292a 123 tipo=2;
FannyCalle 0:642a7818292a 124 RS[11]= guardar(tipo);
FannyCalle 0:642a7818292a 125 led=1;
FannyCalle 0:642a7818292a 126 //iniciando sistema de comunicaciones
FannyCalle 0:642a7818292a 127 for(int i=0;i<=10;i++){
FannyCalle 0:642a7818292a 128 sc.putc(enc);
FannyCalle 0:642a7818292a 129 led=!led;
FannyCalle 0:642a7818292a 130 obc.printf("encendido: %d\n",enc);
FannyCalle 0:642a7818292a 131 wait(0.3);
FannyCalle 0:642a7818292a 132 }
FannyCalle 0:642a7818292a 133 //******* FULL MODE
FannyCalle 0:642a7818292a 134 sc.attach(&callback);
FannyCalle 0:642a7818292a 135 //prueba***********
FannyCalle 0:642a7818292a 136 //int alt=50;
FannyCalle 0:642a7818292a 137 //int altura=10;
FannyCalle 0:642a7818292a 138 //*****************
FannyCalle 0:642a7818292a 139 //float x=0.5;
FannyCalle 4:c2bdc2bced76 140 float hmin=0.5;
FannyCalle 4:c2bdc2bced76 141 float hsil;
FannyCalle 4:c2bdc2bced76 142 hsil=hmin-0.1;
FannyCalle 4:c2bdc2bced76 143 while(h<hsil){
FannyCalle 0:642a7818292a 144 obc.printf("subiendo en silencio radial altura=%f\n\r",h);
FannyCalle 0:642a7818292a 145 h=get_altura();
FannyCalle 0:642a7818292a 146 led=!led;
FannyCalle 0:642a7818292a 147 }
FannyCalle 0:642a7818292a 148 led=1;wait_ms(20);led=0;
FannyCalle 0:642a7818292a 149 while(h>=hmin){
FannyCalle 0:642a7818292a 150 //while(alt>=5){
FannyCalle 0:642a7818292a 151 if (menc==com){
FannyCalle 0:642a7818292a 152 while(menc!=nak && h>=hmin){
FannyCalle 0:642a7818292a 153 if(menc==tc){
FannyCalle 0:642a7818292a 154 while(menc==tc && h>=hmin){//si no hay mensaje nuevo se mantiene en MM hasta que llegue unno
FannyCalle 0:642a7818292a 155 take_tl();
FannyCalle 0:642a7818292a 156 take_mision();
FannyCalle 0:642a7818292a 157 h=get_altura();
FannyCalle 0:642a7818292a 158 save_tl();
FannyCalle 1:a147ca4f8fa0 159 build_tr2();
FannyCalle 1:a147ca4f8fa0 160 tipo=3;
FannyCalle 0:642a7818292a 161 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 162 save_mision();
FannyCalle 0:642a7818292a 163 send_tr();
FannyCalle 0:642a7818292a 164 obc.printf("altura minima con tc1 %f\n",h);
FannyCalle 0:642a7818292a 165 }
FannyCalle 0:642a7818292a 166 }
FannyCalle 0:642a7818292a 167 else{
FannyCalle 0:642a7818292a 168 while(menc==com && h>=hmin){//si no hay mensaje nuevo se mantiene en STM hasta que llegue unno
FannyCalle 0:642a7818292a 169 take_tl();
FannyCalle 0:642a7818292a 170 h=get_altura();
FannyCalle 0:642a7818292a 171 save_tl();
FannyCalle 1:a147ca4f8fa0 172 build_tr1();
FannyCalle 1:a147ca4f8fa0 173 tipo=3;
FannyCalle 0:642a7818292a 174 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 175 send_tr();
FannyCalle 0:642a7818292a 176 obc.printf("altura minima con tc %f\n",h);
FannyCalle 0:642a7818292a 177 }
FannyCalle 0:642a7818292a 178 }
FannyCalle 0:642a7818292a 179 }
FannyCalle 0:642a7818292a 180 }
FannyCalle 0:642a7818292a 181 else{
FannyCalle 0:642a7818292a 182 while (menc==nak && h>=hmin){// si no hay mensaje nuevo se mantiene en SIM hasta que llegue unno
FannyCalle 0:642a7818292a 183 h=get_altura();
FannyCalle 0:642a7818292a 184 take_tl();
FannyCalle 0:642a7818292a 185 take_mision();
FannyCalle 0:642a7818292a 186 save_tl();
FannyCalle 0:642a7818292a 187 tipo=2;
FannyCalle 0:642a7818292a 188 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 189 save_mision();
FannyCalle 0:642a7818292a 190 obc.printf("alt=%f\n",h);
FannyCalle 0:642a7818292a 191 }
FannyCalle 0:642a7818292a 192 }
FannyCalle 0:642a7818292a 193 obc.printf("______________________NORMAL MODE______________________");
FannyCalle 0:642a7818292a 194 }
FannyCalle 0:642a7818292a 195 //******* SLEEP MODE
FannyCalle 0:642a7818292a 196 for(int i=0;i<=5;i++){
FannyCalle 0:642a7818292a 197 sc.putc(stby);
FannyCalle 0:642a7818292a 198 obc.printf("standby: %d",stby);
FannyCalle 0:642a7818292a 199 }
FannyCalle 1:a147ca4f8fa0 200 float hant;
FannyCalle 2:ba3323e788fc 201 hant=h;//altura1;
FannyCalle 2:ba3323e788fc 202 //h=get_altura();
FannyCalle 2:ba3323e788fc 203 float hact=get_altura();//altura1;
FannyCalle 1:a147ca4f8fa0 204 float dif;
FannyCalle 1:a147ca4f8fa0 205 dif=hant-hact;
FannyCalle 1:a147ca4f8fa0 206 obc.printf("altan=%f altac=%f dif=%f\n",hant,hact,dif);
FannyCalle 1:a147ca4f8fa0 207 while(dif!=0){
FannyCalle 0:642a7818292a 208 obc.printf("********************sleep mode**************************");
FannyCalle 0:642a7818292a 209 //while(hact!=0.0){
FannyCalle 0:642a7818292a 210 hant=hact;
FannyCalle 2:ba3323e788fc 211 //h=get_altura();
FannyCalle 2:ba3323e788fc 212 hact=get_altura();//altura1;
FannyCalle 0:642a7818292a 213 take_tl();
FannyCalle 0:642a7818292a 214 take_mision();
FannyCalle 0:642a7818292a 215 save_tl();
FannyCalle 0:642a7818292a 216 tipo=2;
FannyCalle 0:642a7818292a 217 RS[12]= guardar(tipo);
FannyCalle 0:642a7818292a 218 save_mision();
FannyCalle 1:a147ca4f8fa0 219 dif=hant-hact;
FannyCalle 1:a147ca4f8fa0 220 obc.printf("diferente de cero\n altan=%f altac=%f dif=%f\n",hant,hact,dif);
FannyCalle 1:a147ca4f8fa0 221 led=!led;
FannyCalle 0:642a7818292a 222 }
FannyCalle 0:642a7818292a 223 //******* OFF MODE
FannyCalle 0:642a7818292a 224 //camara=1; // apagando camara
FannyCalle 1:a147ca4f8fa0 225 wait(0.5);
FannyCalle 0:642a7818292a 226 camera=0;
FannyCalle 0:642a7818292a 227 wait(1);
FannyCalle 0:642a7818292a 228 camera=1;
FannyCalle 0:642a7818292a 229 wait(3);
FannyCalle 0:642a7818292a 230 obc.printf("apagando camara\n\r");
FannyCalle 0:642a7818292a 231 led=0;
FannyCalle 0:642a7818292a 232 Vcondicional=1; //apagando sensores
FannyCalle 0:642a7818292a 233 sc.putc(sos);
FannyCalle 3:fef99c7c92b5 234 for(int i=0;i<=9;i++)
FannyCalle 3:fef99c7c92b5 235 {
FannyCalle 3:fef99c7c92b5 236 obc.printf("sos: %d\n",sos);
FannyCalle 3:fef99c7c92b5 237 }
FannyCalle 0:642a7818292a 238 //obc.printf("%d\n",alt);
FannyCalle 0:642a7818292a 239 //activar modo reset
FannyCalle 1:a147ca4f8fa0 240 HAL_PWR_EnterSTANDBYMode ();
FannyCalle 0:642a7818292a 241 //apagar obc
FannyCalle 0:642a7818292a 242 }
FannyCalle 0:642a7818292a 243 //********* Funciones
FannyCalle 0:642a7818292a 244
FannyCalle 0:642a7818292a 245 void take_tl(void){
FannyCalle 0:642a7818292a 246 int i;
FannyCalle 4:c2bdc2bced76 247 IMU[0]=imu[0]= mag.getMx();
FannyCalle 4:c2bdc2bced76 248 IMU[1]=imu[1]= mag.getMy();
FannyCalle 4:c2bdc2bced76 249 IMU[2]=imu[2]= mag.getMz();
FannyCalle 0:642a7818292a 250 mpu6050.MPU6050SelfTest(SelfTest); // Start by performing self test and reporting values
FannyCalle 0:642a7818292a 251 if(SelfTest[0] < 1.0f && SelfTest[1] < 1.0f && SelfTest[2] < 1.0f && SelfTest[3] < 1.0f && SelfTest[4] < 1.0f && SelfTest[5] < 1.0f)
FannyCalle 0:642a7818292a 252 {
FannyCalle 0:642a7818292a 253 mpu6050.resetMPU6050(); // Reset registers to default in preparation for device calibration
FannyCalle 0:642a7818292a 254 mpu6050.calibrateMPU6050(gyroBias, accelBias); // Calibrate gyro and accelerometers, load biases in bias registers
FannyCalle 0:642a7818292a 255 mpu6050.initMPU6050();
FannyCalle 0:642a7818292a 256 }
FannyCalle 0:642a7818292a 257 if(mpu6050.readByte(MPU6050_ADDRESS, INT_STATUS) & 0x01) { // check if data ready interrupt
FannyCalle 0:642a7818292a 258 mpu6050.readAccelData(accelCount); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 259 mpu6050.getAres();
FannyCalle 0:642a7818292a 260
FannyCalle 0:642a7818292a 261 // Now we'll calculate the accleration value into actual g's
FannyCalle 1:a147ca4f8fa0 262 imu[3]= accelCount[0];//*aRes - accelBias[0]; // get actual g value, this depends on scale being set
FannyCalle 1:a147ca4f8fa0 263 imu[4]= accelCount[1];//*aRes - accelBias[1];
FannyCalle 1:a147ca4f8fa0 264 imu[5]= accelCount[2];//*aRes - accelBias[2];
FannyCalle 0:642a7818292a 265
FannyCalle 0:642a7818292a 266 mpu6050.readGyroData(gyroCount); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 267 mpu6050.getGres();
FannyCalle 0:642a7818292a 268
FannyCalle 0:642a7818292a 269 // Calculate the gyro value into actual degrees per second
FannyCalle 1:a147ca4f8fa0 270 imu[6]= gyroCount[0];//*gRes; // - gyroBias[0]; // get actual gyro value, this depends on scale being set
FannyCalle 1:a147ca4f8fa0 271 imu[7]= gyroCount[1];//*gRes; // - gyroBias[1];
FannyCalle 1:a147ca4f8fa0 272 imu[8]= gyroCount[2];//*gRes; // - gyroBias[2];
FannyCalle 0:642a7818292a 273 float temobcount = mpu6050.readTempData(); // Read the x/y/z adc values
FannyCalle 0:642a7818292a 274 temperature = (temobcount) / 340. + 36.53; // Temperature in degrees Centigrade
FannyCalle 0:642a7818292a 275 }
FannyCalle 0:642a7818292a 276 for(i=3;i<=8;i++){
FannyCalle 0:642a7818292a 277 //imu.read();
FannyCalle 1:a147ca4f8fa0 278 IMU[i]=imu[i];//*10;//para la toma de datos
FannyCalle 0:642a7818292a 279 //obc.printf("%d\n",IMU[i]);
FannyCalle 0:642a7818292a 280 }
FannyCalle 0:642a7818292a 281 press=bmp.getPressure();
FannyCalle 0:642a7818292a 282 //temperatura tomada del imu
FannyCalle 4:c2bdc2bced76 283 int tempera=temperature*100;
FannyCalle 4:c2bdc2bced76 284 int offsetadc=60; //CORRECCION DE LOS DATOS TOMADOS DEL ADC, EL ERROR ES PRODUCIDO POR VREF.
FannyCalle 4:c2bdc2bced76 285 //tempera=ceil(tempera);
FannyCalle 4:c2bdc2bced76 286 temp[0]=tempera; //temperatura en milivoltios ajuatado a 12 bits.
FannyCalle 4:c2bdc2bced76 287 //float tempe1=temp2.read(); //obteniendo la temperatura en voltaje
FannyCalle 4:c2bdc2bced76 288 temp[1]= temp2.read_u16();temp[1]=(temp[1]>>4)+offsetadc;//temperatura en milivoltios ajuatado a 12 bits.
FannyCalle 4:c2bdc2bced76 289 sensor_adc[0]=temp3.read_u16();sen_adc[0]=(sensor_adc[0]>>4)+offsetadc;
FannyCalle 4:c2bdc2bced76 290 sensor_adc[1]=corriente.read_u16();sen_adc[1]=(sensor_adc[1]>>4)+offsetadc;
FannyCalle 4:c2bdc2bced76 291 sensor_adc[2]=voltaje.read_u16();sen_adc[2]=(sensor_adc[2]>>4)+offsetadc;
FannyCalle 0:642a7818292a 292 suv=uv.getUV();
FannyCalle 0:642a7818292a 293 //sensor_adc[3]=temp2.read();//uv.read();sen_adc[3]=sensor_adc[3]/0.0008789062;
FannyCalle 4:c2bdc2bced76 294
FannyCalle 2:ba3323e788fc 295 obc.printf("tomando telemetria\n");
FannyCalle 0:642a7818292a 296 }
FannyCalle 0:642a7818292a 297
FannyCalle 0:642a7818292a 298 void take_mision(void){
FannyCalle 1:a147ca4f8fa0 299 int h1, h2, tiempo;
FannyCalle 1:a147ca4f8fa0 300 h1=altura1*10;
FannyCalle 1:a147ca4f8fa0 301 h2=h*10;
FannyCalle 1:a147ca4f8fa0 302 tiempo=t.read();
FannyCalle 1:a147ca4f8fa0 303 tiempo=tiempo*100;
FannyCalle 1:a147ca4f8fa0 304 senfis[0]=h1;
FannyCalle 1:a147ca4f8fa0 305 senfis[1]=h2;
FannyCalle 1:a147ca4f8fa0 306 senfis[2]=tiempo;
FannyCalle 4:c2bdc2bced76 307 obc.printf("tiempo=%d",senfis[2]);
FannyCalle 1:a147ca4f8fa0 308 /*
FannyCalle 0:642a7818292a 309 ads.setGain(GAIN_TWOTHIRDS);
FannyCalle 0:642a7818292a 310 for(int i=0;i<=3;i++){
FannyCalle 0:642a7818292a 311 senfis[i]= ads.readADC_SingleEnded(i);
FannyCalle 1:a147ca4f8fa0 312 */
FannyCalle 0:642a7818292a 313 // obc.printf("\n senfis%d:%d 0x%.4x\n",i,senfis[i],senfis[i]);
FannyCalle 1:a147ca4f8fa0 314 //}
FannyCalle 0:642a7818292a 315 obc.printf("tomando mision\n");
FannyCalle 0:642a7818292a 316 }
FannyCalle 0:642a7818292a 317 void save_tl(void){
FannyCalle 0:642a7818292a 318 mkdir("/sd/cubesat2p",0777);
FannyCalle 0:642a7818292a 319 FILE *fp=fopen("/sd/cubesat2p/trama1.txt","a");
FannyCalle 0:642a7818292a 320 if(fp == NULL){
FannyCalle 0:642a7818292a 321 obc.printf("no se puede abrir sd \n");
FannyCalle 0:642a7818292a 322 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 323 NVIC_SystemReset();
FannyCalle 0:642a7818292a 324 }
FannyCalle 4:c2bdc2bced76 325 fprintf(fp,"%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %d %d %d %d %d %f\r\n",imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 4:c2bdc2bced76 326 obc.printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %.2f %d %d %d %d %d %f\r\n",imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 0:642a7818292a 327 fclose(fp);
FannyCalle 0:642a7818292a 328 obc.printf("guardando telemetria\n");
FannyCalle 0:642a7818292a 329 }
FannyCalle 0:642a7818292a 330 void save_mision(void){
FannyCalle 0:642a7818292a 331 mkdir("/sd/cubesat2p",0777);
FannyCalle 0:642a7818292a 332 FILE *fp=fopen("/sd/cubesat2p/trama2.txt","a");
FannyCalle 0:642a7818292a 333 if(fp == NULL){
FannyCalle 0:642a7818292a 334 obc.printf("no se puede abrir sd \n");
FannyCalle 0:642a7818292a 335 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 336 NVIC_SystemReset();
FannyCalle 0:642a7818292a 337 }
FannyCalle 0:642a7818292a 338 fprintf(fp,"%d %d %d %d\r\n",senfis[0],senfis[1],senfis[2],senfis[3]);
FannyCalle 0:642a7818292a 339 fclose(fp);
FannyCalle 0:642a7818292a 340 obc.printf("guardando mision\n");
FannyCalle 0:642a7818292a 341 }
FannyCalle 0:642a7818292a 342 void build_tr1(void){ //construir trama de datos 1
FannyCalle 4:c2bdc2bced76 343 int barometro;
FannyCalle 4:c2bdc2bced76 344 barometro=ceil(P*100); //tomando los 20 bits sin procesar del barometro
FannyCalle 4:c2bdc2bced76 345 bar=barometro;
FannyCalle 4:c2bdc2bced76 346 obc.printf("p=%f barometro= %d bar= %d temp0= %d \n\r",P,barometro,bar,temp[0]);
FannyCalle 4:c2bdc2bced76 347 wait(1);
FannyCalle 4:c2bdc2bced76 348 uint16_t y,z,y2,z4,ah,al;
FannyCalle 0:642a7818292a 349 uint32_t par[3];// para los tres pares de datos de 32 bits
FannyCalle 4:c2bdc2bced76 350 uint32_t y4,y3;
FannyCalle 0:642a7818292a 351 uint32_t AH,AL;
FannyCalle 0:642a7818292a 352 y=4080;
FannyCalle 0:642a7818292a 353 z=15;
FannyCalle 0:642a7818292a 354 y4=0xff000000;
FannyCalle 0:642a7818292a 355 y3=0x00ff0000;
FannyCalle 0:642a7818292a 356 y2=0x0000ff00;
FannyCalle 0:642a7818292a 357 z4=0x000000ff;
FannyCalle 0:642a7818292a 358 //completando a paquetes de 32 bits
FannyCalle 0:642a7818292a 359 par[0]=(bar<<12)|temp[0];
FannyCalle 4:c2bdc2bced76 360 obc.printf("par 0=%d",par[0]);
FannyCalle 4:c2bdc2bced76 361 wait(1);
FannyCalle 0:642a7818292a 362 ah=sen_adc[1]&y;
FannyCalle 0:642a7818292a 363 al=sen_adc[1]&z;
FannyCalle 0:642a7818292a 364 ah=(ah>>4);
FannyCalle 0:642a7818292a 365 par[1]=(temp[1]<<20)|(sen_adc[0]<<8)|ah;
FannyCalle 0:642a7818292a 366 uint8_t est=15;
FannyCalle 0:642a7818292a 367 par[2]=(al<<28)|(sen_adc[2]<<16)|suv;
FannyCalle 0:642a7818292a 368 //asignando 8 bits a cada espacio de la trama
FannyCalle 0:642a7818292a 369 for(int i=0;i<=8;i++){
FannyCalle 0:642a7818292a 370 AH=0;AL=0;
FannyCalle 0:642a7818292a 371 AH=IMU[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 372 AL=IMU[i]&z4;
FannyCalle 0:642a7818292a 373 trama[i*2+1]=AH;
FannyCalle 0:642a7818292a 374 trama[i*2+2]=AL;
FannyCalle 0:642a7818292a 375 }
FannyCalle 0:642a7818292a 376 for(int i=0;i<=2;i++){
FannyCalle 0:642a7818292a 377 AH=0;AL=0;
FannyCalle 0:642a7818292a 378 AH=par[i]&y4;AH=(AH>>24);
FannyCalle 0:642a7818292a 379 AL=par[i]&y3;AL=(AL>>16);
FannyCalle 0:642a7818292a 380 trama[i*4+19]=AH;
FannyCalle 0:642a7818292a 381 trama[i*4+20]=AL;
FannyCalle 0:642a7818292a 382 AH=0;AL=0;
FannyCalle 0:642a7818292a 383 AH=par[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 384 AL=par[i]&z4;
FannyCalle 0:642a7818292a 385 trama[i*4+21]=AH;
FannyCalle 0:642a7818292a 386 trama[i*4+22]=AL;
FannyCalle 0:642a7818292a 387 }
FannyCalle 0:642a7818292a 388 trama[0]=data1;//cabecera de la trama de datos 1
FannyCalle 0:642a7818292a 389 //publicando por el puerto serial. la trama de datos
FannyCalle 0:642a7818292a 390 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 391 obc.printf("%d\n",trama[i]);
FannyCalle 0:642a7818292a 392 }
FannyCalle 0:642a7818292a 393 obc.printf("construyendo trama 1\n");
FannyCalle 0:642a7818292a 394 }
FannyCalle 0:642a7818292a 395 void build_tr2(void){// construir trama de datos 2
FannyCalle 0:642a7818292a 396 bar=ceil(P*100); //tomando los 20 bits sin procesar del barometro
FannyCalle 4:c2bdc2bced76 397 uint16_t y,z,y2,z4,ah,al;
FannyCalle 4:c2bdc2bced76 398 uint32_t par,y4,y3;// para los tres pares de datos de 32 bits
FannyCalle 0:642a7818292a 399 uint32_t AH,AL;
FannyCalle 0:642a7818292a 400 y=4080;
FannyCalle 0:642a7818292a 401 z=15;
FannyCalle 0:642a7818292a 402 y4=0xff000000;
FannyCalle 0:642a7818292a 403 y3=0x00ff0000;
FannyCalle 0:642a7818292a 404 y2=0x0000ff00;
FannyCalle 0:642a7818292a 405 z4=0x000000ff;
FannyCalle 0:642a7818292a 406 //completando a 32 bits
FannyCalle 0:642a7818292a 407 par=(bar<<12)|sen_adc[1];
FannyCalle 0:642a7818292a 408 for(int i=0;i<=8;i++){
FannyCalle 0:642a7818292a 409 AH=0;AL=0;
FannyCalle 0:642a7818292a 410 AH=IMU[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 411 AL=IMU[i]&z4;
FannyCalle 0:642a7818292a 412 trama[i*2+1]=AH;
FannyCalle 0:642a7818292a 413 trama[i*2+2]=AL;
FannyCalle 0:642a7818292a 414 }
FannyCalle 0:642a7818292a 415 //asignando 8 bits a cada espacio de la trama2
FannyCalle 0:642a7818292a 416 AH=0;AL=0;
FannyCalle 0:642a7818292a 417 AH=par&y4;AH=(AH>>24);
FannyCalle 0:642a7818292a 418 AL=par&y3;AL=(AL>>16);
FannyCalle 0:642a7818292a 419 trama[19]=AH;
FannyCalle 0:642a7818292a 420 trama[20]=AL;
FannyCalle 0:642a7818292a 421 AH=0;AL=0;
FannyCalle 0:642a7818292a 422 AH=par&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 423 AL=par&z4;
FannyCalle 0:642a7818292a 424 trama[21]=AH;
FannyCalle 0:642a7818292a 425 trama[22]=AL;
FannyCalle 0:642a7818292a 426 for(int i=0;i<=3;i++){
FannyCalle 0:642a7818292a 427 AH=0;AL=0;
FannyCalle 0:642a7818292a 428 AH=senfis[i]&y2;AH=(AH>>8);
FannyCalle 0:642a7818292a 429 AL=senfis[i]&z4;
FannyCalle 0:642a7818292a 430 trama[i*2+23]=AH;
FannyCalle 0:642a7818292a 431 trama[i*2+24]=AL;
FannyCalle 0:642a7818292a 432 }
FannyCalle 0:642a7818292a 433 trama[0]=data2; //cabecera de la trama de datos 2
FannyCalle 0:642a7818292a 434 //publicando la trama de datos 2 en el puerto virtual
FannyCalle 0:642a7818292a 435 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 436 // obc.printf("%d\n",trama[i]);
FannyCalle 0:642a7818292a 437 }
FannyCalle 0:642a7818292a 438 obc.printf("construyendo trama 2 mision\n");
FannyCalle 0:642a7818292a 439 }
FannyCalle 0:642a7818292a 440
FannyCalle 0:642a7818292a 441 void send_tr(void){
FannyCalle 0:642a7818292a 442 for(int i=0;i<=30;i++){
FannyCalle 0:642a7818292a 443 sc.putc(trama[i]);
FannyCalle 0:642a7818292a 444 }
FannyCalle 0:642a7818292a 445 led=!led;
FannyCalle 0:642a7818292a 446 obc.printf("enviando trama\n");
FannyCalle 0:642a7818292a 447 }
FannyCalle 0:642a7818292a 448
FannyCalle 0:642a7818292a 449 int condiciones_iniciales()
FannyCalle 0:642a7818292a 450 { float Ps=0;//variable auxiliar en la que se acumula la suma de los datos de presion para poder hallar la media
FannyCalle 0:642a7818292a 451 if(BR==0)
FannyCalle 0:642a7818292a 452 {
FannyCalle 0:642a7818292a 453 // recuperar datos iniciales
FannyCalle 0:642a7818292a 454 //************************************************************
FannyCalle 0:642a7818292a 455 //TOMAR LOS 100 DATOS CADA .05 SEGUNDOS, PARA DETERMINAR LA PRESION INICIAL
FannyCalle 0:642a7818292a 456 for (int i=0;i<100;i++)
FannyCalle 4:c2bdc2bced76 457 {
FannyCalle 0:642a7818292a 458 BMPTemp=bmp.getTemperature(); // generando t_fine PARA LA TEMPERATURA DE ESCALAMIENTP
FannyCalle 0:642a7818292a 459 Pp[i]= bmp.getPressure(); // pi es la condicion inical para la presion
FannyCalle 0:642a7818292a 460 Ps=Ps+Pp[i];
FannyCalle 0:642a7818292a 461 led=!led;
FannyCalle 1:a147ca4f8fa0 462 obc.printf("%.2f\n",Pp[i]);
FannyCalle 0:642a7818292a 463 wait(0.05);
FannyCalle 0:642a7818292a 464 }
FannyCalle 0:642a7818292a 465 //LA MEDIA DE TODOS LOS DATOS NOS DA LA PRESION REAL
FannyCalle 0:642a7818292a 466 Pi=Ps/100; //presion real
FannyCalle 0:642a7818292a 467 }
FannyCalle 0:642a7818292a 468 else
FannyCalle 0:642a7818292a 469 {
FannyCalle 0:642a7818292a 470 // leer las condiciones iniciales del archivo ci,txt
FannyCalle 0:642a7818292a 471 FILE *fp=fopen("/sd/condiciones/ci.txt","r");
FannyCalle 4:c2bdc2bced76 472 fscanf(fp,"%d %f %f",&BR,&BMPTemp,&Pi);
FannyCalle 0:642a7818292a 473 fclose(fp);
FannyCalle 0:642a7818292a 474 //fin de la lectura de datos
FannyCalle 0:642a7818292a 475 }
FannyCalle 0:642a7818292a 476 return 1;
FannyCalle 0:642a7818292a 477 }
FannyCalle 0:642a7818292a 478
FannyCalle 0:642a7818292a 479 void filtro_pasa_bajos()
FannyCalle 0:642a7818292a 480 {
FannyCalle 0:642a7818292a 481 float wc,ts,es,e;
FannyCalle 0:642a7818292a 482 //************************
FannyCalle 0:642a7818292a 483 //constantes para el filtro pasabajos
FannyCalle 0:642a7818292a 484 wc=0.1*3.1416*2; // frecuencia de corte para el filtro
FannyCalle 0:642a7818292a 485 ts=0.22; // tiempo de muestreo
FannyCalle 0:642a7818292a 486 es=-wc*ts; //
FannyCalle 0:642a7818292a 487 e=2.71828; // constante e
FannyCalle 0:642a7818292a 488 //************************************************************
FannyCalle 0:642a7818292a 489 //FILTRO PASABAJOS
FannyCalle 0:642a7818292a 490 //************************************************************
FannyCalle 0:642a7818292a 491 BMPTemp = (bmp.getTemperature()); //CALIBRANDO TEMPERATURA
FannyCalle 0:642a7818292a 492 Pa = bmp.getPressure(); //PRESION ANTERIOR
FannyCalle 0:642a7818292a 493 P=(1-pow(e,es))*Pa+Pi*pow(e,es); //filtro pasabajos
FannyCalle 0:642a7818292a 494 }
FannyCalle 0:642a7818292a 495
FannyCalle 0:642a7818292a 496 float get_altura()
FannyCalle 0:642a7818292a 497 {
FannyCalle 0:642a7818292a 498 float base,ex, cons, dif;
FannyCalle 0:642a7818292a 499 float altura0;
FannyCalle 0:642a7818292a 500 cons=(273+BMPTemp)/0.0065;
FannyCalle 0:642a7818292a 501 ex=0.1903; // constante obtenida de (Ro*L)/(g*M)
FannyCalle 0:642a7818292a 502 //************************
FannyCalle 0:642a7818292a 503 // condiciones iniciales para hallar la altura del sistema
FannyCalle 0:642a7818292a 504 // la ecuacion utilizada para determinar la altura es la formula barometrica
FannyCalle 0:642a7818292a 505 // con las constantes descritas en http://wikipedia/barometric altitud
FannyCalle 0:642a7818292a 506 //************************************************************
FannyCalle 0:642a7818292a 507 //TOMANDO LA ALTURA
FannyCalle 0:642a7818292a 508 //************************************************************
FannyCalle 0:642a7818292a 509 filtro_pasa_bajos();
FannyCalle 0:642a7818292a 510 base=P/P0;
FannyCalle 0:642a7818292a 511 altura1=cons*(1-pow(base,ex)); //ecuacion barometrica
FannyCalle 0:642a7818292a 512 //************************************************************
FannyCalle 0:642a7818292a 513 //ESCALANDO LA ALTURA A MEDIO METRO
FannyCalle 0:642a7818292a 514 //************************************************************
FannyCalle 0:642a7818292a 515 altura0=floor(altura1); //RECONDEO AL MENOR
FannyCalle 0:642a7818292a 516 dif=altura1-altura0; //SACANDO LA PARTE DECIMAL
FannyCalle 0:642a7818292a 517 dif=dif*10; //CONVIRTIENDOLO A ENTERO
FannyCalle 0:642a7818292a 518 dif=floor(dif); //REDONDEANDO AL MENOR
FannyCalle 0:642a7818292a 519 if (altura1 >= 0){ //VER SI ES NEGATIVO O POSITIVO
FannyCalle 0:642a7818292a 520 if(dif>=5){
FannyCalle 4:c2bdc2bced76 521 h=altura0+0.5; //SI ES POSITIVO Y MAYOR A 5 LA PARTE DECIMAL, ANIADE .5 AL LA PARTE ENTERA
FannyCalle 0:642a7818292a 522 }
FannyCalle 0:642a7818292a 523 else{
FannyCalle 0:642a7818292a 524 h=altura0; //SI ES MENOR A 5 LA PARTE DECIMAL Y POSITIVO, SOLO TOMA LA PARTE ENTERA
FannyCalle 0:642a7818292a 525 }
FannyCalle 0:642a7818292a 526 }
FannyCalle 0:642a7818292a 527 else{
FannyCalle 0:642a7818292a 528 if(dif<=5){ //SI ES NEGATIVO Y MENOR A 5 LA PARTE DECIMAL, LE SUMA .5 A LA PARTE ENTERA
FannyCalle 0:642a7818292a 529 h=altura0+.5;
FannyCalle 0:642a7818292a 530 }
FannyCalle 0:642a7818292a 531 else{h=ceil(altura1); // SI EN NEGATIVO Y MAYOR A 5 LA PATE DECIMAL, REDONDEA AL MAYOR
FannyCalle 0:642a7818292a 532 }
FannyCalle 0:642a7818292a 533 }
FannyCalle 0:642a7818292a 534 //************************************************************
FannyCalle 0:642a7818292a 535 //FIN DEL REDONDEO
FannyCalle 0:642a7818292a 536 //************************************************************
FannyCalle 0:642a7818292a 537 obc.printf("%.2f %.2f\n",altura1, h); //guarda en el sd //IMPRIME EN PANTALL
FannyCalle 0:642a7818292a 538 Pi=P;
FannyCalle 0:642a7818292a 539 return (h);
FannyCalle 0:642a7818292a 540 }
FannyCalle 0:642a7818292a 541 int guardar(int tipo)
FannyCalle 0:642a7818292a 542 {
FannyCalle 0:642a7818292a 543 int i;
FannyCalle 0:642a7818292a 544 //si es de tipo 1, entonces son condicones iniciales
FannyCalle 0:642a7818292a 545 if (tipo==1)
FannyCalle 0:642a7818292a 546 {
FannyCalle 0:642a7818292a 547 if(BR==0)
FannyCalle 0:642a7818292a 548 {
FannyCalle 0:642a7818292a 549 //CREACION Y APERTURA DEL ULTIMO DOCUMENTO CREADO
FannyCalle 0:642a7818292a 550 //lectura del numero del ultimo documento creado.
FannyCalle 0:642a7818292a 551 FILE *dp=fopen("/sd/carpetas/numero.txt","r");
FannyCalle 0:642a7818292a 552 if(dp==NULL){printf("no se pudo acceder al sd 2...");
FannyCalle 0:642a7818292a 553 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 554 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 555 fscanf(dp,"%d",&ND);
FannyCalle 1:a147ca4f8fa0 556 fclose(dp);
FannyCalle 0:642a7818292a 557 ND=ND+1;
FannyCalle 4:c2bdc2bced76 558 // creando la carpeta y guardando los datos iniciales en la carpeta de datos de prueba
FannyCalle 0:642a7818292a 559 FILE *dp1=fopen("/sd/carpetas/numero.txt","w");
FannyCalle 0:642a7818292a 560 if(dp1==NULL){printf("no se pudo acceder al sd 3...");
FannyCalle 0:642a7818292a 561 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 562 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 563 fprintf(dp1,"%d",ND);
FannyCalle 0:642a7818292a 564 fclose(dp1);
FannyCalle 4:c2bdc2bced76 565 //GRaBANDO LAS CONDICIONES INICIALES EN EL DOCUMENTO CI
FannyCalle 0:642a7818292a 566 FILE *fp=fopen("/sd/condiciones/ci.txt","w");
FannyCalle 0:642a7818292a 567 if(fp==NULL){printf("no s epudo acceder al sd 4...");
FannyCalle 0:642a7818292a 568 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 569 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 570 fprintf(fp,"%d %f %f \r\n", BR,BMPTemp,Pi);
FannyCalle 0:642a7818292a 571 fclose(fp);
FannyCalle 0:642a7818292a 572 // creando la carpeta y guardando los datos iniciales en la carpeta condiciones iniciales
FannyCalle 0:642a7818292a 573 dato[25]=ND+48;
FannyCalle 0:642a7818292a 574 printf(dato,".txt"); printf("\n");
FannyCalle 0:642a7818292a 575 FILE *fobc=fopen(dato,"a");
FannyCalle 0:642a7818292a 576 for (i=0;i<100;i++)
FannyCalle 0:642a7818292a 577 {
FannyCalle 0:642a7818292a 578 fprintf(fobc,"%.2f \r\n",Pp[i]);
FannyCalle 0:642a7818292a 579 wait(0.01);
FannyCalle 0:642a7818292a 580 }
FannyCalle 0:642a7818292a 581 fclose(fobc);
FannyCalle 0:642a7818292a 582 //fin de la cracion del documento y guardado de datos
FannyCalle 0:642a7818292a 583 /////GUARDANDO EL PRIMER DATO EN EL NUEVO DOCUMENTO CREADO
FannyCalle 0:642a7818292a 584 file[16]=ND+48; //ajuste a ascii
FannyCalle 0:642a7818292a 585 printf(file,".txt"); printf("\n");
FannyCalle 0:642a7818292a 586 FILE *pp=fopen(file,"w");
FannyCalle 4:c2bdc2bced76 587 if(pp==NULL)
FannyCalle 4:c2bdc2bced76 588 {
FannyCalle 4:c2bdc2bced76 589 printf("no s epudo acceder al sd..5");
FannyCalle 4:c2bdc2bced76 590 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 4:c2bdc2bced76 591 NVIC_SystemReset();
FannyCalle 4:c2bdc2bced76 592 }
FannyCalle 0:642a7818292a 593 fprintf(pp,"%f %f %f inicio\r\n",t.read(),BMPTemp,Pi);
FannyCalle 0:642a7818292a 594 fclose(pp);
FannyCalle 0:642a7818292a 595 led=1;
FannyCalle 0:642a7818292a 596 wait(1);
FannyCalle 0:642a7818292a 597 }
FannyCalle 0:642a7818292a 598 else{BR=0;
FannyCalle 0:642a7818292a 599 }
FannyCalle 0:642a7818292a 600 //GRABANDO LAS CONDICIONES INICIALES EN EL DOCUMENTO CI
FannyCalle 0:642a7818292a 601 FILE *fp=fopen("/sd/condiciones/ci.txt","w");
FannyCalle 0:642a7818292a 602 if(fp==NULL){printf("no s epudo acceder al sd 6...");
FannyCalle 0:642a7818292a 603 BR=1;// abbrir documento de condiciones iniciles y cambiar Br para doocumentar el resetprogramado
FannyCalle 0:642a7818292a 604 NVIC_SystemReset();}
FannyCalle 0:642a7818292a 605 fprintf(fp,"%d %f %f \r\n", BR,BMPTemp,Pi);
FannyCalle 0:642a7818292a 606 fclose(fp);
FannyCalle 0:642a7818292a 607 //fin de la escrituta de datos de datos
FannyCalle 0:642a7818292a 608 //lectura del numero del ultimo documento creado.
FannyCalle 0:642a7818292a 609 FILE *dp=fopen("/sd/carpetas/numero.txt","r");
FannyCalle 0:642a7818292a 610 fscanf(dp,"%d",&ND);
FannyCalle 0:642a7818292a 611 fclose(dp);
FannyCalle 0:642a7818292a 612 //fin de la lectura de dato
FannyCalle 0:642a7818292a 613 FILE *pp=fopen(file,"w");
FannyCalle 0:642a7818292a 614 fprintf(pp,"recuperacion del sistema satisfactoriamente\r\n");
FannyCalle 0:642a7818292a 615 fclose(pp);
FannyCalle 0:642a7818292a 616 return (1);
FannyCalle 0:642a7818292a 617 }
FannyCalle 0:642a7818292a 618 else
FannyCalle 0:642a7818292a 619 {
FannyCalle 1:a147ca4f8fa0 620 if(tipo==2)
FannyCalle 1:a147ca4f8fa0 621 {
FannyCalle 1:a147ca4f8fa0 622 FILE *pp=fopen(file,"a");
FannyCalle 1:a147ca4f8fa0 623 if (pp == NULL) {printf("no se inicion 5...");}
FannyCalle 4:c2bdc2bced76 624 fprintf(pp,"%d %d %d %d %d %d %d %d %d %f %f %d %d %d %d %d %d %d\r\n",t.read(),imu[0],imu[1],imu[2],imu[3],imu[4],imu[5],imu[6],imu[7],imu[8],press,temperature,temp[1],sen_adc[0],sen_adc[1],sen_adc[2],suv,h);
FannyCalle 1:a147ca4f8fa0 625 fclose(pp);
FannyCalle 1:a147ca4f8fa0 626 return (2);
FannyCalle 1:a147ca4f8fa0 627 }
FannyCalle 1:a147ca4f8fa0 628 else
FannyCalle 1:a147ca4f8fa0 629 {
FannyCalle 1:a147ca4f8fa0 630 FILE *pp=fopen(file,"a");
FannyCalle 1:a147ca4f8fa0 631 if (pp == NULL) {printf("no se inicion 5...");}
FannyCalle 1:a147ca4f8fa0 632 fprintf(pp,"%f %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d \r\n",t.read(),trama[0],trama[1],trama[2],trama[3],trama[4],trama[5],trama[6],trama[7],trama[8], trama[9],trama[10],trama[11],trama[12],trama[13],trama[14],trama[15],trama[16],trama[17],trama[18], trama[19],trama[20],trama[21],trama[22],trama[23],trama[24],trama[25],trama[26],trama[27],trama[28], trama[29], trama[30]);
FannyCalle 1:a147ca4f8fa0 633 fclose(pp);
FannyCalle 1:a147ca4f8fa0 634 return (2);
FannyCalle 1:a147ca4f8fa0 635 }
FannyCalle 0:642a7818292a 636 }
FannyCalle 0:642a7818292a 637 }