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:
Thu Jun 14 13:57:08 2018 +0000
Revision:
2:ba3323e788fc
Parent:
1:a147ca4f8fa0
Child:
3:fef99c7c92b5
altura en medio metro, de resolucion

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