CDMS integrated with pyld b4 checking

Dependencies:   SDFileSystem mbed-rtos mbed-src mbed

Fork of cdms_i2csdrtc by Seeker of Truth ,

Committer:
greenroshks
Date:
Mon Apr 13 18:03:51 2015 +0000
Revision:
2:fa5a3ff74b74
Parent:
1:59da9694681e
CDMS integrated with PAYLOAD b4 checking

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sureshsusurla 0:2e3d21e95c97 1 #include "mbed.h"
sureshsusurla 0:2e3d21e95c97 2 #include "SDFileSystem.h"
greenroshks 2:fa5a3ff74b74 3 #define PYLD_ADD 0x48
greenroshks 2:fa5a3ff74b74 4 #define BAE_ADD 0x20
sureshsusurla 0:2e3d21e95c97 5 /************************Include the required Header files for the code *******************************/
greenroshks 2:fa5a3ff74b74 6 //#include "mbed.h"
sureshsusurla 0:2e3d21e95c97 7 #include "string.h"
sureshsusurla 0:2e3d21e95c97 8
raizel_varun 1:59da9694681e 9 #include "rtos.h"
raizel_varun 1:59da9694681e 10 #include "pin_config.h"
greenroshks 2:fa5a3ff74b74 11 //const int addr = 0x20; //slave address
raizel_varun 1:59da9694681e 12 I2C master (PIN72,PIN71); //configure pins p27,p28 as I2C master
raizel_varun 1:59da9694681e 13 Serial pc (USBTX,USBRX);
raizel_varun 1:59da9694681e 14 DigitalOut interrupt(PIN4);
raizel_varun 1:59da9694681e 15 InterruptIn data_ready(PIN39);
greenroshks 2:fa5a3ff74b74 16 InterruptIn data_ready_pyld(PIN40); //to be changed for i2c comm. between pyld and bae
greenroshks 2:fa5a3ff74b74 17 void store_data(char*);
raizel_varun 1:59da9694681e 18
raizel_varun 1:59da9694681e 19 int reset;
raizel_varun 1:59da9694681e 20 Timer t;
raizel_varun 1:59da9694681e 21 Timer t1;
raizel_varun 1:59da9694681e 22 Timer t2;
raizel_varun 1:59da9694681e 23 Timer t3;
raizel_varun 1:59da9694681e 24
raizel_varun 1:59da9694681e 25 typedef struct
raizel_varun 1:59da9694681e 26 {
raizel_varun 1:59da9694681e 27 char data; // To avoid dynamic memory allocation
raizel_varun 1:59da9694681e 28 int length;
raizel_varun 1:59da9694681e 29 }i2c_data;
raizel_varun 1:59da9694681e 30
raizel_varun 1:59da9694681e 31 //Mail<i2c_data,16> i2c_data_receive;
raizel_varun 1:59da9694681e 32 Mail<i2c_data,16> i2c_data_send;
raizel_varun 1:59da9694681e 33
raizel_varun 1:59da9694681e 34 Thread * ptr_t_i2c;
greenroshks 2:fa5a3ff74b74 35 int switchflag = -1; // to switch between BAE and PYLD
raizel_varun 1:59da9694681e 36 void FUNC_I2C_MASTER_FSLAVE(char * data,int length)
raizel_varun 1:59da9694681e 37 {
raizel_varun 1:59da9694681e 38
raizel_varun 1:59da9694681e 39
raizel_varun 1:59da9694681e 40 bool ack0 =true;
raizel_varun 1:59da9694681e 41
raizel_varun 1:59da9694681e 42 interrupt = 1;
raizel_varun 1:59da9694681e 43 t1.start();
raizel_varun 1:59da9694681e 44 //wait_ms(20);
greenroshks 2:fa5a3ff74b74 45 if(switchflag == 0)
greenroshks 2:fa5a3ff74b74 46 ack0 = master.read(BAE_ADD|1,data,length);
greenroshks 2:fa5a3ff74b74 47 else if (switchflag==1)
greenroshks 2:fa5a3ff74b74 48 ack0 = master.read(PYLD_ADD|1,data,length);
raizel_varun 1:59da9694681e 49 t1.stop();
greenroshks 2:fa5a3ff74b74 50 store_data(data);
raizel_varun 1:59da9694681e 51
raizel_varun 1:59da9694681e 52 if(!ack0)
raizel_varun 1:59da9694681e 53 {
raizel_varun 1:59da9694681e 54 printf("\n master has read %s from slave\n\r",data);
raizel_varun 1:59da9694681e 55
raizel_varun 1:59da9694681e 56 }
raizel_varun 1:59da9694681e 57 //master.stop();
raizel_varun 1:59da9694681e 58 printf("\n%d\n\r",t1.read_us());
raizel_varun 1:59da9694681e 59 t1.reset();
raizel_varun 1:59da9694681e 60
raizel_varun 1:59da9694681e 61 interrupt=0;
greenroshks 2:fa5a3ff74b74 62 switchflag = -1;
raizel_varun 1:59da9694681e 63 }
raizel_varun 1:59da9694681e 64
raizel_varun 1:59da9694681e 65 typedef struct {
raizel_varun 1:59da9694681e 66 char Voltage[9];
raizel_varun 1:59da9694681e 67 char Current[5];
raizel_varun 1:59da9694681e 68 char Temperature[2];
raizel_varun 1:59da9694681e 69 char PanelTemperature[3];//read by the 4 thermistors on solar panels
raizel_varun 1:59da9694681e 70 char BatteryTemperature; //to be populated
raizel_varun 1:59da9694681e 71 char faultpoll; //polled faults
raizel_varun 1:59da9694681e 72 char faultir; //interrupted faults
raizel_varun 1:59da9694681e 73 char power_mode; //power modes
raizel_varun 1:59da9694681e 74 char AngularSpeed[3];
raizel_varun 1:59da9694681e 75 char Bnewvalue[3];
raizel_varun 1:59da9694681e 76
raizel_varun 1:59da9694681e 77 //float magnetometer,gyro=>to be addes
raizel_varun 1:59da9694681e 78 } hk_data;
raizel_varun 1:59da9694681e 79 hk_data decode_data;
raizel_varun 1:59da9694681e 80
raizel_varun 1:59da9694681e 81 /*void TC_DECODE(char *data_hk) //getting the structure back from hk data sent by bae
raizel_varun 1:59da9694681e 82 {
raizel_varun 1:59da9694681e 83 for(int i=0;i<=7;i++)
raizel_varun 1:59da9694681e 84 {
raizel_varun 1:59da9694681e 85 decode_data.Voltage[i] = data_hk[i];
raizel_varun 1:59da9694681e 86 decode_data.Voltage[8] = '\0';
raizel_varun 1:59da9694681e 87 }
raizel_varun 1:59da9694681e 88 for(int i=0;i<=3;i++)
raizel_varun 1:59da9694681e 89 {
raizel_varun 1:59da9694681e 90 decode_data.Current[i] = data_hk[8+i];
raizel_varun 1:59da9694681e 91 decode_data.Current[4] = '\0';
raizel_varun 1:59da9694681e 92 }
raizel_varun 1:59da9694681e 93 decode_data.Temperature[0] = data_hk[12];
raizel_varun 1:59da9694681e 94 decode_data.Temperature[1] = '\0';
raizel_varun 1:59da9694681e 95 for(int i=0;i<=1;i++)
raizel_varun 1:59da9694681e 96 {
raizel_varun 1:59da9694681e 97 decode_data.PanelTemperature[i] = data_hk[13+i];
raizel_varun 1:59da9694681e 98 decode_data.PanelTemperature[2] = '\0';
raizel_varun 1:59da9694681e 99 }
raizel_varun 1:59da9694681e 100 decode_data.BatteryTemperature = data_hk[15];
raizel_varun 1:59da9694681e 101 decode_data.faultpoll = data_hk[16];
raizel_varun 1:59da9694681e 102 decode_data.faultir = data_hk[17];
raizel_varun 1:59da9694681e 103 decode_data.power_mode = data_hk[18];
raizel_varun 1:59da9694681e 104 for(int i=0;i<=1;i++)
raizel_varun 1:59da9694681e 105 {
raizel_varun 1:59da9694681e 106 decode_data.AngularSpeed[i] = data_hk[19+i];
raizel_varun 1:59da9694681e 107 decode_data.AngularSpeed[2] = '\0';
raizel_varun 1:59da9694681e 108 }
raizel_varun 1:59da9694681e 109 for(int i=0;i<=1;i++)
raizel_varun 1:59da9694681e 110 {
raizel_varun 1:59da9694681e 111 decode_data.Bnewvalue[i] = data_hk[21+i];
raizel_varun 1:59da9694681e 112 decode_data.Bnewvalue[2] = '\0';
raizel_varun 1:59da9694681e 113 }
raizel_varun 1:59da9694681e 114 printf("\n voltage %s\n\r",decode_data.Voltage);
raizel_varun 1:59da9694681e 115 printf("\n current %s\n\r",decode_data.Current);
raizel_varun 1:59da9694681e 116 printf("\n faultpoll %c\n\r",decode_data.faultpoll);
raizel_varun 1:59da9694681e 117 }*/
raizel_varun 1:59da9694681e 118
raizel_varun 1:59da9694681e 119
raizel_varun 1:59da9694681e 120 void T_I2C_MASTER_FSLAVE(void const *args)
raizel_varun 1:59da9694681e 121 {
raizel_varun 1:59da9694681e 122 char data_receive[25];
raizel_varun 1:59da9694681e 123 while(1)
raizel_varun 1:59da9694681e 124 {
raizel_varun 1:59da9694681e 125 Thread::signal_wait(0x1);
raizel_varun 1:59da9694681e 126
raizel_varun 1:59da9694681e 127
raizel_varun 1:59da9694681e 128 FUNC_I2C_MASTER_FSLAVE(data_receive,25);
raizel_varun 1:59da9694681e 129 /*i2c_data * i2c_data_r = i2c_data_receive.alloc();
raizel_varun 1:59da9694681e 130 strcpy(i2c_data_r->data , data_receive);
raizel_varun 1:59da9694681e 131 i2c_data_r->length = 25;
raizel_varun 1:59da9694681e 132 i2c_data_receive.put(i2c_data_r);*/
raizel_varun 1:59da9694681e 133 printf("\n Data received from slave is %s\n\r",data_receive);
raizel_varun 1:59da9694681e 134 //TC_DECODE(data_receive);
raizel_varun 1:59da9694681e 135 }
raizel_varun 1:59da9694681e 136 }
raizel_varun 1:59da9694681e 137
greenroshks 2:fa5a3ff74b74 138 void FUNC_INT_BAE()
raizel_varun 1:59da9694681e 139 {
greenroshks 2:fa5a3ff74b74 140
greenroshks 2:fa5a3ff74b74 141 switchflag = 0;
greenroshks 2:fa5a3ff74b74 142 ptr_t_i2c->signal_set(0x1);
greenroshks 2:fa5a3ff74b74 143
greenroshks 2:fa5a3ff74b74 144 }
greenroshks 2:fa5a3ff74b74 145
greenroshks 2:fa5a3ff74b74 146 void FUNC_INT_PYLD()
greenroshks 2:fa5a3ff74b74 147 {
greenroshks 2:fa5a3ff74b74 148
greenroshks 2:fa5a3ff74b74 149 switchflag = 1;
raizel_varun 1:59da9694681e 150 ptr_t_i2c->signal_set(0x1);
raizel_varun 1:59da9694681e 151
raizel_varun 1:59da9694681e 152 }
raizel_varun 1:59da9694681e 153
raizel_varun 1:59da9694681e 154 char writedata;
raizel_varun 1:59da9694681e 155 bool write2slave;
raizel_varun 1:59da9694681e 156 bool master_status_write;
raizel_varun 1:59da9694681e 157 void FUNC_MASTER_WRITE()
raizel_varun 1:59da9694681e 158 { //wait(1);
raizel_varun 1:59da9694681e 159 write2slave=true;
raizel_varun 1:59da9694681e 160
raizel_varun 1:59da9694681e 161
raizel_varun 1:59da9694681e 162
raizel_varun 1:59da9694681e 163 char data = pc.getc();
raizel_varun 1:59da9694681e 164 interrupt = 1;
raizel_varun 1:59da9694681e 165 t.start();
raizel_varun 1:59da9694681e 166 t3.start();
raizel_varun 1:59da9694681e 167 wait_ms(20);
raizel_varun 1:59da9694681e 168 i2c_data * i2c_data_s = i2c_data_send.alloc();
raizel_varun 1:59da9694681e 169 i2c_data_s->data = data;
raizel_varun 1:59da9694681e 170 i2c_data_s->length = 1;
raizel_varun 1:59da9694681e 171 i2c_data_send.put(i2c_data_s);
raizel_varun 1:59da9694681e 172 master_status_write = true;
raizel_varun 1:59da9694681e 173
raizel_varun 1:59da9694681e 174 // interrupt = 1;
raizel_varun 1:59da9694681e 175
raizel_varun 1:59da9694681e 176 osEvent evt = i2c_data_send.get();
raizel_varun 1:59da9694681e 177 if (evt.status == osEventMail)
raizel_varun 1:59da9694681e 178 {
raizel_varun 1:59da9694681e 179 i2c_data *i2c_data_s = (i2c_data*)evt.value.p;
raizel_varun 1:59da9694681e 180 writedata = i2c_data_s -> data;
raizel_varun 1:59da9694681e 181 t.stop();
greenroshks 2:fa5a3ff74b74 182 //t3.start();
greenroshks 2:fa5a3ff74b74 183 if(data%2)
greenroshks 2:fa5a3ff74b74 184 master_status_write = (bool) master.write(BAE_ADD|0x00,&writedata,1);
greenroshks 2:fa5a3ff74b74 185 else
greenroshks 2:fa5a3ff74b74 186 master_status_write = (bool) master.write(PYLD_ADD|0x00,&writedata,1);
raizel_varun 1:59da9694681e 187 t3.stop();
raizel_varun 1:59da9694681e 188 if(master_status_write==0)
raizel_varun 1:59da9694681e 189 {
raizel_varun 1:59da9694681e 190 printf("master has written %c to slave\n\r",writedata);
raizel_varun 1:59da9694681e 191 write2slave=false;
raizel_varun 1:59da9694681e 192 }
raizel_varun 1:59da9694681e 193 i2c_data_send.free(i2c_data_s);
raizel_varun 1:59da9694681e 194 printf("\n%d\n",t.read_us());
raizel_varun 1:59da9694681e 195 t.reset();
raizel_varun 1:59da9694681e 196 printf("\n%d\n",t3.read_us());
raizel_varun 1:59da9694681e 197 t3.reset();
raizel_varun 1:59da9694681e 198 }
raizel_varun 1:59da9694681e 199 interrupt = 0;
raizel_varun 1:59da9694681e 200 }
raizel_varun 1:59da9694681e 201
raizel_varun 1:59da9694681e 202
raizel_varun 1:59da9694681e 203
raizel_varun 1:59da9694681e 204
raizel_varun 1:59da9694681e 205
raizel_varun 1:59da9694681e 206
raizel_varun 1:59da9694681e 207
raizel_varun 1:59da9694681e 208
raizel_varun 1:59da9694681e 209
sureshsusurla 0:2e3d21e95c97 210 /********************************** Function Prototypes declaration ***********************************/
sureshsusurla 0:2e3d21e95c97 211 int FUNC_CDMS_hex2int(int); // Need to convert the RTC time values to integers
sureshsusurla 0:2e3d21e95c97 212 void FUNC_CDMS_Gettime(void); // Function to get the time values from RTC registers
sureshsusurla 0:2e3d21e95c97 213 void FUNC_CDMS_init_values(void); // Function to initialize the registers in the RTC
sureshsusurla 0:2e3d21e95c97 214
sureshsusurla 0:2e3d21e95c97 215
sureshsusurla 0:2e3d21e95c97 216 /***************** Configure the SPI1 of the CDMS uc as the data bus for the RTC***********************/
sureshsusurla 0:2e3d21e95c97 217 SPI spi(PTE1,PTE3, PTE2); // mosi, miso, sclk
sureshsusurla 0:2e3d21e95c97 218 DigitalOut cs(PTE29); // PTE29 is used for chip select
sureshsusurla 0:2e3d21e95c97 219
sureshsusurla 0:2e3d21e95c97 220 char ch;
sureshsusurla 0:2e3d21e95c97 221 SDFileSystem sd(PTE1, PTE3, PTE2, PTE22, "sd"); // the pinout on the mbed Cool Components workshop board
raizel_varun 1:59da9694681e 222
sureshsusurla 0:2e3d21e95c97 223 char time_stamp[15];
sureshsusurla 0:2e3d21e95c97 224
sureshsusurla 0:2e3d21e95c97 225 /***********************Initialization function of the RTC********************************************/
sureshsusurla 0:2e3d21e95c97 226 void FUNC_CDMS_init_values(void)
sureshsusurla 0:2e3d21e95c97 227 {
sureshsusurla 0:2e3d21e95c97 228 cs=0;
sureshsusurla 0:2e3d21e95c97 229 spi.format(8,3); // Set the data bit with to be of 8 bits,
sureshsusurla 0:2e3d21e95c97 230 // data tx mode is 3
sureshsusurla 0:2e3d21e95c97 231 spi.frequency(1000000); // Set Data rate to be 1 MHz
sureshsusurla 0:2e3d21e95c97 232
sureshsusurla 0:2e3d21e95c97 233 cs = 0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 234 spi.write(0x80); // Send the address of the Seconds register 0x80
sureshsusurla 0:2e3d21e95c97 235 spi.write(0x00); // Set seconds value to 0
sureshsusurla 0:2e3d21e95c97 236 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 237
sureshsusurla 0:2e3d21e95c97 238 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 239 spi.write(0x81); // Send the address of the Minutes register 0x81
sureshsusurla 0:2e3d21e95c97 240 spi.write(0x00); // Set minutes value to 0
sureshsusurla 0:2e3d21e95c97 241 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 242
sureshsusurla 0:2e3d21e95c97 243 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 244 spi.write(0x82); // Send the address of the Hours register 0x82
sureshsusurla 0:2e3d21e95c97 245 spi.write(0x00); // Set hours value to 0
sureshsusurla 0:2e3d21e95c97 246 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 247
sureshsusurla 0:2e3d21e95c97 248 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 249 spi.write(0x83); // Send the address of the Day register 0x83
sureshsusurla 0:2e3d21e95c97 250 spi.write(0x01); // Set the day to 01
sureshsusurla 0:2e3d21e95c97 251 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 252
sureshsusurla 0:2e3d21e95c97 253 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 254 spi.write(0x84); // Send the address of the date register 0x84
sureshsusurla 0:2e3d21e95c97 255 spi.write(0x01); // Set date of the month to 01
sureshsusurla 0:2e3d21e95c97 256 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 257
sureshsusurla 0:2e3d21e95c97 258 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 259 spi.write(0x85); // Send the address of the Month register 0x80
sureshsusurla 0:2e3d21e95c97 260 spi.write(0x01); // Set month to 01
sureshsusurla 0:2e3d21e95c97 261 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 262
sureshsusurla 0:2e3d21e95c97 263 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 264 spi.write(0x86); // Send the address of the year register 0x80
sureshsusurla 0:2e3d21e95c97 265 spi.write(0x00); // Set year to 00(2000)
sureshsusurla 0:2e3d21e95c97 266 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 267 }// End of INIT Function
sureshsusurla 0:2e3d21e95c97 268
sureshsusurla 0:2e3d21e95c97 269
sureshsusurla 0:2e3d21e95c97 270 /*********************************Function to read the RTC registers*********************************/
sureshsusurla 0:2e3d21e95c97 271 void FUNC_CDMS_Gettime()
sureshsusurla 0:2e3d21e95c97 272 {
sureshsusurla 0:2e3d21e95c97 273
sureshsusurla 0:2e3d21e95c97 274 spi.format(8,3); // Set the data bit with to be of 8 bits,
sureshsusurla 0:2e3d21e95c97 275 // data tx mode is 3
sureshsusurla 0:2e3d21e95c97 276 spi.frequency(1000000); // Set Data rate to be 1 MHz
sureshsusurla 0:2e3d21e95c97 277 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 278
sureshsusurla 0:2e3d21e95c97 279 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 280 spi.write(0x00); // Sending address of seconds register
sureshsusurla 0:2e3d21e95c97 281 int seconds = spi.write(0x00); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 282 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 283
sureshsusurla 0:2e3d21e95c97 284 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 285 spi.write(0x01); // Sending address of Minutes register
sureshsusurla 0:2e3d21e95c97 286 int minutes =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 287 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 288
sureshsusurla 0:2e3d21e95c97 289 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 290 spi.write(0x02); // Sending address of hours register
sureshsusurla 0:2e3d21e95c97 291 int hours =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 292 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 293
sureshsusurla 0:2e3d21e95c97 294 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 295 spi.write(0x03); // Sending address of day register
sureshsusurla 0:2e3d21e95c97 296 int day =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 297 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 298
sureshsusurla 0:2e3d21e95c97 299 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 300 spi.write(0x04); // Sending address of date register
sureshsusurla 0:2e3d21e95c97 301 int date =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 302 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 303
sureshsusurla 0:2e3d21e95c97 304 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 305 spi.write(0x05); // Sending address of month register
sureshsusurla 0:2e3d21e95c97 306 int month =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 307 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 308
sureshsusurla 0:2e3d21e95c97 309 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 310 spi.write(0x06); // Sending address of year register
sureshsusurla 0:2e3d21e95c97 311 int year =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 312 cs = 1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 313
sureshsusurla 0:2e3d21e95c97 314 // RTC sends in BCD format.. SO we convert the values generated by RTC to integers
sureshsusurla 0:2e3d21e95c97 315 year = FUNC_CDMS_hex2int(year);
sureshsusurla 0:2e3d21e95c97 316 month = FUNC_CDMS_hex2int(month);
sureshsusurla 0:2e3d21e95c97 317 date = FUNC_CDMS_hex2int(date);
sureshsusurla 0:2e3d21e95c97 318 day = FUNC_CDMS_hex2int(day);
sureshsusurla 0:2e3d21e95c97 319 hours = FUNC_CDMS_hex2int(hours);
sureshsusurla 0:2e3d21e95c97 320 minutes = FUNC_CDMS_hex2int(minutes);
sureshsusurla 0:2e3d21e95c97 321 seconds = FUNC_CDMS_hex2int(seconds);
sureshsusurla 0:2e3d21e95c97 322
sureshsusurla 0:2e3d21e95c97 323 // Print the obtained Time stamp
sureshsusurla 0:2e3d21e95c97 324 //printf("The time is :%d %d %d %d %d %d %d \n\r",seconds,minutes,hours,day,date,month,year);
sureshsusurla 0:2e3d21e95c97 325 sprintf(time_stamp,"%02d%02d%02d%02d%02d%02d",year,month,date,hours,minutes,seconds);
sureshsusurla 0:2e3d21e95c97 326 printf(" \n\r Received HK data from BAE");
sureshsusurla 0:2e3d21e95c97 327 printf("\n HK_data stored in %s.txt",time_stamp);
sureshsusurla 0:2e3d21e95c97 328 //puts(time_stamp);
sureshsusurla 0:2e3d21e95c97 329 //printf(".txt");
sureshsusurla 0:2e3d21e95c97 330 }//End of Read Function
sureshsusurla 0:2e3d21e95c97 331
sureshsusurla 0:2e3d21e95c97 332 /**************************Function to convert Hex values to Int values*****************************/
sureshsusurla 0:2e3d21e95c97 333 int FUNC_CDMS_hex2int(int a)
sureshsusurla 0:2e3d21e95c97 334 {
sureshsusurla 0:2e3d21e95c97 335 a=(a/16)*10+(a%16); //function to convert hex type to int type
sureshsusurla 0:2e3d21e95c97 336 return a;
sureshsusurla 0:2e3d21e95c97 337 }// End of convert function
sureshsusurla 0:2e3d21e95c97 338
sureshsusurla 0:2e3d21e95c97 339
sureshsusurla 0:2e3d21e95c97 340 /******************************************END OF RTC CODE ****************************************/
sureshsusurla 0:2e3d21e95c97 341
greenroshks 2:fa5a3ff74b74 342 //char count = 10;
greenroshks 2:fa5a3ff74b74 343 void store_data(char *hkdata)
sureshsusurla 0:2e3d21e95c97 344 {
sureshsusurla 0:2e3d21e95c97 345 FUNC_CDMS_Gettime();
sureshsusurla 0:2e3d21e95c97 346
greenroshks 2:fa5a3ff74b74 347 //char hk_data[25];
greenroshks 2:fa5a3ff74b74 348 // count++;
greenroshks 2:fa5a3ff74b74 349 //strcpy(hk_data,"hk_Data ");
greenroshks 2:fa5a3ff74b74 350 //strcat(hk_data,"!@@#");
greenroshks 2:fa5a3ff74b74 351 // hk_data[10] = count;
sureshsusurla 0:2e3d21e95c97 352 //storedata(hk_data);
sureshsusurla 0:2e3d21e95c97 353 mkdir("/sd/hk", 0777);
sureshsusurla 0:2e3d21e95c97 354 char add[20];
sureshsusurla 0:2e3d21e95c97 355 strcpy(add,"/sd/hk/");
sureshsusurla 0:2e3d21e95c97 356 strcat(add,time_stamp);
sureshsusurla 0:2e3d21e95c97 357 strcat(add,".txt");
sureshsusurla 0:2e3d21e95c97 358
sureshsusurla 0:2e3d21e95c97 359 FILE *fp = fopen(add, "w");
sureshsusurla 0:2e3d21e95c97 360 if(fp == NULL) {
sureshsusurla 0:2e3d21e95c97 361 error("Could not open file for write\n");
sureshsusurla 0:2e3d21e95c97 362 }
sureshsusurla 0:2e3d21e95c97 363 else
sureshsusurla 0:2e3d21e95c97 364 {
sureshsusurla 0:2e3d21e95c97 365
greenroshks 2:fa5a3ff74b74 366 fprintf(fp, "%s ",hkdata);
sureshsusurla 0:2e3d21e95c97 367 fclose(fp);
sureshsusurla 0:2e3d21e95c97 368 printf("\n File stored in SD card\n");
sureshsusurla 0:2e3d21e95c97 369 //printf("\n Reading from the file .... \n Data is %s\n",hk_data);
sureshsusurla 0:2e3d21e95c97 370
sureshsusurla 0:2e3d21e95c97 371 }
sureshsusurla 0:2e3d21e95c97 372 }
sureshsusurla 0:2e3d21e95c97 373
sureshsusurla 0:2e3d21e95c97 374
sureshsusurla 0:2e3d21e95c97 375
sureshsusurla 0:2e3d21e95c97 376 //void create_file()
sureshsusurla 0:2e3d21e95c97 377 //{
sureshsusurla 0:2e3d21e95c97 378
sureshsusurla 0:2e3d21e95c97 379 /*
sureshsusurla 0:2e3d21e95c97 380 fprintf(fp, "Hello fun SD Card World!\n");
sureshsusurla 0:2e3d21e95c97 381 fclose(fp);
sureshsusurla 0:2e3d21e95c97 382
sureshsusurla 0:2e3d21e95c97 383 fp = fopen("/sd/mydir/sdtest.txt", "r");
sureshsusurla 0:2e3d21e95c97 384 if(fp == NULL) {
sureshsusurla 0:2e3d21e95c97 385 error("Could not open file for write\n");
sureshsusurla 0:2e3d21e95c97 386 }
sureshsusurla 0:2e3d21e95c97 387 //fprintf(fp, "Hello fun SD Card World!");
sureshsusurla 0:2e3d21e95c97 388 // fprintf("The contents of %s file are :\n", "/sd/mydir/sdtest.txt");
sureshsusurla 0:2e3d21e95c97 389 while( ( ch = fgetc(fp) ) != '\n' )
sureshsusurla 0:2e3d21e95c97 390 {
sureshsusurla 0:2e3d21e95c97 391 pc.printf("%c",ch);
sureshsusurla 0:2e3d21e95c97 392 }
sureshsusurla 0:2e3d21e95c97 393 //fprintf(fp);
sureshsusurla 0:2e3d21e95c97 394 fclose(fp);
sureshsusurla 0:2e3d21e95c97 395
sureshsusurla 0:2e3d21e95c97 396 printf("Jai Mata Di..Goodbye World!\n");*/
sureshsusurla 0:2e3d21e95c97 397 //}
sureshsusurla 0:2e3d21e95c97 398
raizel_varun 1:59da9694681e 399 Ticker tx;
sureshsusurla 0:2e3d21e95c97 400
sureshsusurla 0:2e3d21e95c97 401 int main()
greenroshks 2:fa5a3ff74b74 402 {
greenroshks 2:fa5a3ff74b74 403 interrupt=0;
raizel_varun 1:59da9694681e 404 ptr_t_i2c = new Thread(T_I2C_MASTER_FSLAVE);
greenroshks 2:fa5a3ff74b74 405 master.frequency(100000);
sureshsusurla 0:2e3d21e95c97 406 printf("IITMSAT - CDMS\n");
greenroshks 2:fa5a3ff74b74 407 data_ready.rise(&FUNC_INT_BAE);
greenroshks 2:fa5a3ff74b74 408 data_ready_pyld.rise(&FUNC_INT_PYLD);
sureshsusurla 0:2e3d21e95c97 409 FUNC_CDMS_init_values();
greenroshks 2:fa5a3ff74b74 410 //tx.attach(&store_data, 20);
raizel_varun 1:59da9694681e 411 while(1)
raizel_varun 1:59da9694681e 412 {
raizel_varun 1:59da9694681e 413 FUNC_MASTER_WRITE();
raizel_varun 1:59da9694681e 414 }
sureshsusurla 0:2e3d21e95c97 415
sureshsusurla 0:2e3d21e95c97 416 }