vr1.1

Dependencies:   FreescaleIAP mbed-rtos mbed

Fork of CDMS_RTOS_v1_1 by Team Fox

Committer:
cholletisaik777
Date:
Sat Jul 04 08:56:34 2015 +0000
Revision:
8:607ae92fa6af
Parent:
7:c270a9e37290
Child:
14:cf9f12b6887d
cdms_rtos_v1_0_3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cholletisaik777 0:d6e3d1e21484 1 #include "mbed.h"
cholletisaik777 8:607ae92fa6af 2 #include "RTC.h"
cholletisaik777 8:607ae92fa6af 3 #include "all_funcs.h"
cholletisaik777 0:d6e3d1e21484 4
cholletisaik777 0:d6e3d1e21484 5 SPI rtc_spi(PTD6,PTD7,PTD5); // MOSI,MISO, CLOCK microcontroller(in order)
pradeepvk2208 2:4c79b3dfef31 6 DigitalOut rtc_cs(PTD4); //Slave Select pin
cholletisaik777 0:d6e3d1e21484 7 //Serial pc(USBTX,USBRX);
cholletisaik777 0:d6e3d1e21484 8
cholletisaik777 7:c270a9e37290 9 void FCTN_INIT_RTC()
pradeepvk2208 2:4c79b3dfef31 10 {
cholletisaik777 0:d6e3d1e21484 11 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 12 rtc_spi.format(8,0);
cholletisaik777 0:d6e3d1e21484 13 rtc_spi.frequency(1000000);
cholletisaik777 0:d6e3d1e21484 14 //clearing the halt bit
cholletisaik777 0:d6e3d1e21484 15 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 16 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 17 rtc_spi.write(0x8C);
cholletisaik777 0:d6e3d1e21484 18 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 19
cholletisaik777 0:d6e3d1e21484 20 //clearing the OF bit
cholletisaik777 0:d6e3d1e21484 21 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 22 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 23 rtc_spi.write(0x8F);
cholletisaik777 0:d6e3d1e21484 24 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 25
cholletisaik777 0:d6e3d1e21484 26 //century bits
cholletisaik777 0:d6e3d1e21484 27 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 28 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 29 rtc_spi.write(0x80|0x03);
cholletisaik777 0:d6e3d1e21484 30 rtc_spi.write(0x00);
cholletisaik777 0:d6e3d1e21484 31
cholletisaik777 0:d6e3d1e21484 32 //Kick starting the oscillator
cholletisaik777 0:d6e3d1e21484 33 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 34 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 35 rtc_spi.write(0x81); //register address with write flag
cholletisaik777 0:d6e3d1e21484 36 rtc_spi.write(0x80);//enabling stop bit in the seconds register
cholletisaik777 0:d6e3d1e21484 37
cholletisaik777 0:d6e3d1e21484 38 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 39 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 40 rtc_spi.write(0x81);
cholletisaik777 0:d6e3d1e21484 41 rtc_spi.write(0x00);//disabling the stop bit to restart the oscillator
cholletisaik777 0:d6e3d1e21484 42
cholletisaik777 0:d6e3d1e21484 43
cholletisaik777 0:d6e3d1e21484 44 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 45 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 46 rtc_spi.write(0x80);
cholletisaik777 0:d6e3d1e21484 47 rtc_spi.write(0x01); // set milliseconds value to 00
cholletisaik777 0:d6e3d1e21484 48 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 49
cholletisaik777 0:d6e3d1e21484 50 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 51 rtc_spi.write(0x81);
cholletisaik777 0:d6e3d1e21484 52 rtc_spi.write(0x01); //set seconds value to 00
cholletisaik777 0:d6e3d1e21484 53 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 54
cholletisaik777 0:d6e3d1e21484 55 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 56 rtc_spi.write(0x82);
cholletisaik777 0:d6e3d1e21484 57 rtc_spi.write(0x01);//set minutes value to 00
cholletisaik777 0:d6e3d1e21484 58 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 59
cholletisaik777 0:d6e3d1e21484 60 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 61 rtc_spi.write(0x83);
cholletisaik777 0:d6e3d1e21484 62 rtc_spi.write(0x23); //set the hours to 01
cholletisaik777 0:d6e3d1e21484 63 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 64
cholletisaik777 0:d6e3d1e21484 65 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 66 rtc_spi.write(0x84);
cholletisaik777 0:d6e3d1e21484 67 rtc_spi.write(0x01); //set day of the week to 01
cholletisaik777 0:d6e3d1e21484 68 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 69
cholletisaik777 0:d6e3d1e21484 70 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 71 rtc_spi.write(0x85);
cholletisaik777 0:d6e3d1e21484 72 rtc_spi.write(0x31); //set date of the month to 01
cholletisaik777 0:d6e3d1e21484 73 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 74
cholletisaik777 0:d6e3d1e21484 75 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 76 rtc_spi.write(0x86);
cholletisaik777 0:d6e3d1e21484 77 rtc_spi.write(0x12); //set month to 01
cholletisaik777 0:d6e3d1e21484 78 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 79
cholletisaik777 0:d6e3d1e21484 80 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 81 rtc_spi.write(0x87);
cholletisaik777 0:d6e3d1e21484 82 rtc_spi.write(0x01); //set year to 00(2000)
cholletisaik777 0:d6e3d1e21484 83 rtc_cs=1;
sakthipriya 3:0c3f7c3fabc9 84 printf("\n\r rtc initalised \n");
pradeepvk2208 2:4c79b3dfef31 85 }
pradeepvk2208 2:4c79b3dfef31 86
cholletisaik777 7:c270a9e37290 87 void FCTN_CDMS_RD_RTC(uint8_t *time)
sakthipriya 3:0c3f7c3fabc9 88
pradeepvk2208 2:4c79b3dfef31 89 {
cholletisaik777 0:d6e3d1e21484 90 uint8_t response;
sakthipriya 3:0c3f7c3fabc9 91 printf("\n\r Entered rtc\n");
cholletisaik777 0:d6e3d1e21484 92 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 93 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 94 rtc_spi.write(0x00); //reading milliseconds register
cholletisaik777 0:d6e3d1e21484 95 response = rtc_spi.write(0x00); // read the value by sending dummy byte
cholletisaik777 0:d6e3d1e21484 96 uint8_t milliseconds = (uint8_t(response&0xF0)>>4)*10+uint8_t(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 97
cholletisaik777 0:d6e3d1e21484 98 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 99 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 100 rtc_spi.write(0x01); //reading seconds register
cholletisaik777 0:d6e3d1e21484 101 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 102 uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 103
cholletisaik777 0:d6e3d1e21484 104 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 105 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 106 rtc_spi.write(0x02); //reading minutes register
cholletisaik777 0:d6e3d1e21484 107 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 108 uint8_t minutes = ((response&0xF0)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 109
cholletisaik777 0:d6e3d1e21484 110 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 111 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 112 rtc_spi.write(0x03); //reading hours register
cholletisaik777 0:d6e3d1e21484 113 response=rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 114 uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 115
cholletisaik777 0:d6e3d1e21484 116 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 117 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 118 rtc_spi.write(0x04); //reading day's register
cholletisaik777 0:d6e3d1e21484 119 uint8_t day =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 120
cholletisaik777 0:d6e3d1e21484 121 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 122 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 123 rtc_spi.write(0x05); //reading date register
cholletisaik777 0:d6e3d1e21484 124 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 125 uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 126
cholletisaik777 0:d6e3d1e21484 127 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 128 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 129 rtc_spi.write(0x06); //reading month registe
cholletisaik777 0:d6e3d1e21484 130 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 131 uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1;
cholletisaik777 0:d6e3d1e21484 132
cholletisaik777 0:d6e3d1e21484 133 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 134 rtc_cs=0;
cholletisaik777 0:d6e3d1e21484 135 rtc_spi.write(0x07); //reading year's registe
cholletisaik777 0:d6e3d1e21484 136 response =rtc_spi.write(0x01);
cholletisaik777 0:d6e3d1e21484 137 uint8_t year = ((response&0xF0)>>4)*10+(response&0x0F)*1;
sakthipriya 3:0c3f7c3fabc9 138 rtc_cs=1;
cholletisaik777 0:d6e3d1e21484 139 //sprintf(Time_stamp,"%02d%02d%02d%02d%02d%02d%02d%02d",year, month, date, day, hours, minutes, seconds, milliseconds );
cholletisaik777 0:d6e3d1e21484 140 uint8_t Time_stamp[8] = {year, month, date, day, hours, minutes, seconds, milliseconds};
sakthipriya 3:0c3f7c3fabc9 141 for(int i= 0; i<8;i++)
sakthipriya 3:0c3f7c3fabc9 142 printf("%d\t",Time_stamp[i]);
cholletisaik777 0:d6e3d1e21484 143 printf("read\r\n");
cholletisaik777 5:c77b49508927 144 time = Time_stamp;
cholletisaik777 5:c77b49508927 145 }