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:
Fri Jun 08 21:35:41 2018 +0000
Revision:
0:642a7818292a
Child:
1:a147ca4f8fa0
modo stanby

Who changed what in which revision?

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