CDMS integrated with pyld b4 checking

Dependencies:   SDFileSystem mbed-rtos mbed-src mbed

Fork of cdms_i2csdrtc by Seeker of Truth ,

Committer:
sureshsusurla
Date:
Fri Mar 13 20:04:05 2015 +0000
Revision:
0:2e3d21e95c97
Child:
1:59da9694681e
cdms sd card and rtc working

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"
sureshsusurla 0:2e3d21e95c97 3
sureshsusurla 0:2e3d21e95c97 4 /************************Include the required Header files for the code *******************************/
sureshsusurla 0:2e3d21e95c97 5 #include "mbed.h"
sureshsusurla 0:2e3d21e95c97 6 #include "string.h"
sureshsusurla 0:2e3d21e95c97 7
sureshsusurla 0:2e3d21e95c97 8 /********************************** Function Prototypes declaration ***********************************/
sureshsusurla 0:2e3d21e95c97 9 int FUNC_CDMS_hex2int(int); // Need to convert the RTC time values to integers
sureshsusurla 0:2e3d21e95c97 10 void FUNC_CDMS_Gettime(void); // Function to get the time values from RTC registers
sureshsusurla 0:2e3d21e95c97 11 void FUNC_CDMS_init_values(void); // Function to initialize the registers in the RTC
sureshsusurla 0:2e3d21e95c97 12
sureshsusurla 0:2e3d21e95c97 13
sureshsusurla 0:2e3d21e95c97 14 /***************** Configure the SPI1 of the CDMS uc as the data bus for the RTC***********************/
sureshsusurla 0:2e3d21e95c97 15 SPI spi(PTE1,PTE3, PTE2); // mosi, miso, sclk
sureshsusurla 0:2e3d21e95c97 16 DigitalOut cs(PTE29); // PTE29 is used for chip select
sureshsusurla 0:2e3d21e95c97 17
sureshsusurla 0:2e3d21e95c97 18 char ch;
sureshsusurla 0:2e3d21e95c97 19 SDFileSystem sd(PTE1, PTE3, PTE2, PTE22, "sd"); // the pinout on the mbed Cool Components workshop board
sureshsusurla 0:2e3d21e95c97 20 Serial pc(USBTX, USBRX); // tx, rx
sureshsusurla 0:2e3d21e95c97 21 char time_stamp[15];
sureshsusurla 0:2e3d21e95c97 22
sureshsusurla 0:2e3d21e95c97 23 /***********************Initialization function of the RTC********************************************/
sureshsusurla 0:2e3d21e95c97 24 void FUNC_CDMS_init_values(void)
sureshsusurla 0:2e3d21e95c97 25 {
sureshsusurla 0:2e3d21e95c97 26 cs=0;
sureshsusurla 0:2e3d21e95c97 27 spi.format(8,3); // Set the data bit with to be of 8 bits,
sureshsusurla 0:2e3d21e95c97 28 // data tx mode is 3
sureshsusurla 0:2e3d21e95c97 29 spi.frequency(1000000); // Set Data rate to be 1 MHz
sureshsusurla 0:2e3d21e95c97 30
sureshsusurla 0:2e3d21e95c97 31 cs = 0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 32 spi.write(0x80); // Send the address of the Seconds register 0x80
sureshsusurla 0:2e3d21e95c97 33 spi.write(0x00); // Set seconds value to 0
sureshsusurla 0:2e3d21e95c97 34 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 35
sureshsusurla 0:2e3d21e95c97 36 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 37 spi.write(0x81); // Send the address of the Minutes register 0x81
sureshsusurla 0:2e3d21e95c97 38 spi.write(0x00); // Set minutes value to 0
sureshsusurla 0:2e3d21e95c97 39 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 40
sureshsusurla 0:2e3d21e95c97 41 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 42 spi.write(0x82); // Send the address of the Hours register 0x82
sureshsusurla 0:2e3d21e95c97 43 spi.write(0x00); // Set hours value to 0
sureshsusurla 0:2e3d21e95c97 44 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 45
sureshsusurla 0:2e3d21e95c97 46 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 47 spi.write(0x83); // Send the address of the Day register 0x83
sureshsusurla 0:2e3d21e95c97 48 spi.write(0x01); // Set the day to 01
sureshsusurla 0:2e3d21e95c97 49 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 50
sureshsusurla 0:2e3d21e95c97 51 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 52 spi.write(0x84); // Send the address of the date register 0x84
sureshsusurla 0:2e3d21e95c97 53 spi.write(0x01); // Set date of the month to 01
sureshsusurla 0:2e3d21e95c97 54 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 55
sureshsusurla 0:2e3d21e95c97 56 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 57 spi.write(0x85); // Send the address of the Month register 0x80
sureshsusurla 0:2e3d21e95c97 58 spi.write(0x01); // Set month to 01
sureshsusurla 0:2e3d21e95c97 59 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 60
sureshsusurla 0:2e3d21e95c97 61 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 62 spi.write(0x86); // Send the address of the year register 0x80
sureshsusurla 0:2e3d21e95c97 63 spi.write(0x00); // Set year to 00(2000)
sureshsusurla 0:2e3d21e95c97 64 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 65 }// End of INIT Function
sureshsusurla 0:2e3d21e95c97 66
sureshsusurla 0:2e3d21e95c97 67
sureshsusurla 0:2e3d21e95c97 68 /*********************************Function to read the RTC registers*********************************/
sureshsusurla 0:2e3d21e95c97 69 void FUNC_CDMS_Gettime()
sureshsusurla 0:2e3d21e95c97 70 {
sureshsusurla 0:2e3d21e95c97 71
sureshsusurla 0:2e3d21e95c97 72 spi.format(8,3); // Set the data bit with to be of 8 bits,
sureshsusurla 0:2e3d21e95c97 73 // data tx mode is 3
sureshsusurla 0:2e3d21e95c97 74 spi.frequency(1000000); // Set Data rate to be 1 MHz
sureshsusurla 0:2e3d21e95c97 75 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 76
sureshsusurla 0:2e3d21e95c97 77 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 78 spi.write(0x00); // Sending address of seconds register
sureshsusurla 0:2e3d21e95c97 79 int seconds = spi.write(0x00); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 80 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 81
sureshsusurla 0:2e3d21e95c97 82 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 83 spi.write(0x01); // Sending address of Minutes register
sureshsusurla 0:2e3d21e95c97 84 int minutes =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 85 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 86
sureshsusurla 0:2e3d21e95c97 87 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 88 spi.write(0x02); // Sending address of hours register
sureshsusurla 0:2e3d21e95c97 89 int hours =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 90 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 91
sureshsusurla 0:2e3d21e95c97 92 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 93 spi.write(0x03); // Sending address of day register
sureshsusurla 0:2e3d21e95c97 94 int day =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 95 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 96
sureshsusurla 0:2e3d21e95c97 97 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 98 spi.write(0x04); // Sending address of date register
sureshsusurla 0:2e3d21e95c97 99 int date =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 100 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 101
sureshsusurla 0:2e3d21e95c97 102 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 103 spi.write(0x05); // Sending address of month register
sureshsusurla 0:2e3d21e95c97 104 int month =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 105 cs=1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 106
sureshsusurla 0:2e3d21e95c97 107 cs=0; // Set chip select pin to be 0: Activate RTC chip
sureshsusurla 0:2e3d21e95c97 108 spi.write(0x06); // Sending address of year register
sureshsusurla 0:2e3d21e95c97 109 int year =spi.write(0x01); // Read the value by sending dummy byte
sureshsusurla 0:2e3d21e95c97 110 cs = 1; // Set chip select pin to be 1: DeActivate RTC chip
sureshsusurla 0:2e3d21e95c97 111
sureshsusurla 0:2e3d21e95c97 112 // RTC sends in BCD format.. SO we convert the values generated by RTC to integers
sureshsusurla 0:2e3d21e95c97 113 year = FUNC_CDMS_hex2int(year);
sureshsusurla 0:2e3d21e95c97 114 month = FUNC_CDMS_hex2int(month);
sureshsusurla 0:2e3d21e95c97 115 date = FUNC_CDMS_hex2int(date);
sureshsusurla 0:2e3d21e95c97 116 day = FUNC_CDMS_hex2int(day);
sureshsusurla 0:2e3d21e95c97 117 hours = FUNC_CDMS_hex2int(hours);
sureshsusurla 0:2e3d21e95c97 118 minutes = FUNC_CDMS_hex2int(minutes);
sureshsusurla 0:2e3d21e95c97 119 seconds = FUNC_CDMS_hex2int(seconds);
sureshsusurla 0:2e3d21e95c97 120
sureshsusurla 0:2e3d21e95c97 121 // Print the obtained Time stamp
sureshsusurla 0:2e3d21e95c97 122 //printf("The time is :%d %d %d %d %d %d %d \n\r",seconds,minutes,hours,day,date,month,year);
sureshsusurla 0:2e3d21e95c97 123 sprintf(time_stamp,"%02d%02d%02d%02d%02d%02d",year,month,date,hours,minutes,seconds);
sureshsusurla 0:2e3d21e95c97 124 printf(" \n\r Received HK data from BAE");
sureshsusurla 0:2e3d21e95c97 125 printf("\n HK_data stored in %s.txt",time_stamp);
sureshsusurla 0:2e3d21e95c97 126 //puts(time_stamp);
sureshsusurla 0:2e3d21e95c97 127 //printf(".txt");
sureshsusurla 0:2e3d21e95c97 128 }//End of Read Function
sureshsusurla 0:2e3d21e95c97 129
sureshsusurla 0:2e3d21e95c97 130 /**************************Function to convert Hex values to Int values*****************************/
sureshsusurla 0:2e3d21e95c97 131 int FUNC_CDMS_hex2int(int a)
sureshsusurla 0:2e3d21e95c97 132 {
sureshsusurla 0:2e3d21e95c97 133 a=(a/16)*10+(a%16); //function to convert hex type to int type
sureshsusurla 0:2e3d21e95c97 134 return a;
sureshsusurla 0:2e3d21e95c97 135 }// End of convert function
sureshsusurla 0:2e3d21e95c97 136
sureshsusurla 0:2e3d21e95c97 137
sureshsusurla 0:2e3d21e95c97 138 /******************************************END OF RTC CODE ****************************************/
sureshsusurla 0:2e3d21e95c97 139
sureshsusurla 0:2e3d21e95c97 140 char count = 10;
sureshsusurla 0:2e3d21e95c97 141 void store_data()
sureshsusurla 0:2e3d21e95c97 142 {
sureshsusurla 0:2e3d21e95c97 143 FUNC_CDMS_Gettime();
sureshsusurla 0:2e3d21e95c97 144
sureshsusurla 0:2e3d21e95c97 145 char hk_data[25];
sureshsusurla 0:2e3d21e95c97 146 count++;
sureshsusurla 0:2e3d21e95c97 147 strcpy(hk_data,"hk_Data ");
sureshsusurla 0:2e3d21e95c97 148 strcat(hk_data,"!@@#");
sureshsusurla 0:2e3d21e95c97 149 hk_data[10] = count;
sureshsusurla 0:2e3d21e95c97 150 //storedata(hk_data);
sureshsusurla 0:2e3d21e95c97 151 mkdir("/sd/hk", 0777);
sureshsusurla 0:2e3d21e95c97 152 char add[20];
sureshsusurla 0:2e3d21e95c97 153 strcpy(add,"/sd/hk/");
sureshsusurla 0:2e3d21e95c97 154 strcat(add,time_stamp);
sureshsusurla 0:2e3d21e95c97 155 strcat(add,".txt");
sureshsusurla 0:2e3d21e95c97 156
sureshsusurla 0:2e3d21e95c97 157 FILE *fp = fopen(add, "w");
sureshsusurla 0:2e3d21e95c97 158 if(fp == NULL) {
sureshsusurla 0:2e3d21e95c97 159 error("Could not open file for write\n");
sureshsusurla 0:2e3d21e95c97 160 }
sureshsusurla 0:2e3d21e95c97 161 else
sureshsusurla 0:2e3d21e95c97 162 {
sureshsusurla 0:2e3d21e95c97 163
sureshsusurla 0:2e3d21e95c97 164 fprintf(fp, "%s ",hk_data);
sureshsusurla 0:2e3d21e95c97 165 fclose(fp);
sureshsusurla 0:2e3d21e95c97 166 printf("\n File stored in SD card\n");
sureshsusurla 0:2e3d21e95c97 167 //printf("\n Reading from the file .... \n Data is %s\n",hk_data);
sureshsusurla 0:2e3d21e95c97 168
sureshsusurla 0:2e3d21e95c97 169 }
sureshsusurla 0:2e3d21e95c97 170 }
sureshsusurla 0:2e3d21e95c97 171
sureshsusurla 0:2e3d21e95c97 172
sureshsusurla 0:2e3d21e95c97 173
sureshsusurla 0:2e3d21e95c97 174 //void create_file()
sureshsusurla 0:2e3d21e95c97 175 //{
sureshsusurla 0:2e3d21e95c97 176
sureshsusurla 0:2e3d21e95c97 177 /*
sureshsusurla 0:2e3d21e95c97 178 fprintf(fp, "Hello fun SD Card World!\n");
sureshsusurla 0:2e3d21e95c97 179 fclose(fp);
sureshsusurla 0:2e3d21e95c97 180
sureshsusurla 0:2e3d21e95c97 181 fp = fopen("/sd/mydir/sdtest.txt", "r");
sureshsusurla 0:2e3d21e95c97 182 if(fp == NULL) {
sureshsusurla 0:2e3d21e95c97 183 error("Could not open file for write\n");
sureshsusurla 0:2e3d21e95c97 184 }
sureshsusurla 0:2e3d21e95c97 185 //fprintf(fp, "Hello fun SD Card World!");
sureshsusurla 0:2e3d21e95c97 186 // fprintf("The contents of %s file are :\n", "/sd/mydir/sdtest.txt");
sureshsusurla 0:2e3d21e95c97 187 while( ( ch = fgetc(fp) ) != '\n' )
sureshsusurla 0:2e3d21e95c97 188 {
sureshsusurla 0:2e3d21e95c97 189 pc.printf("%c",ch);
sureshsusurla 0:2e3d21e95c97 190 }
sureshsusurla 0:2e3d21e95c97 191 //fprintf(fp);
sureshsusurla 0:2e3d21e95c97 192 fclose(fp);
sureshsusurla 0:2e3d21e95c97 193
sureshsusurla 0:2e3d21e95c97 194 printf("Jai Mata Di..Goodbye World!\n");*/
sureshsusurla 0:2e3d21e95c97 195 //}
sureshsusurla 0:2e3d21e95c97 196
sureshsusurla 0:2e3d21e95c97 197 Ticker t;
sureshsusurla 0:2e3d21e95c97 198
sureshsusurla 0:2e3d21e95c97 199 int main()
sureshsusurla 0:2e3d21e95c97 200 {
sureshsusurla 0:2e3d21e95c97 201 printf("IITMSAT - CDMS\n");
sureshsusurla 0:2e3d21e95c97 202
sureshsusurla 0:2e3d21e95c97 203 FUNC_CDMS_init_values();
sureshsusurla 0:2e3d21e95c97 204 t.attach(&store_data, 20.0);
sureshsusurla 0:2e3d21e95c97 205 while(1);
sureshsusurla 0:2e3d21e95c97 206
sureshsusurla 0:2e3d21e95c97 207 }