Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TFOX_CDMS_VR_1_0_WORKING by
RTC.cpp@2:4c79b3dfef31, 2015-06-15 (annotated)
- Committer:
- pradeepvk2208
- Date:
- Mon Jun 15 13:32:28 2015 +0000
- Revision:
- 2:4c79b3dfef31
- Parent:
- 0:d6e3d1e21484
- Child:
- 3:0c3f7c3fabc9
cdms-rtos-v0.1-integration
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| cholletisaik777 | 0:d6e3d1e21484 | 1 | #include "mbed.h" |
| cholletisaik777 | 0:d6e3d1e21484 | 2 | #include "func_head.h" |
| cholletisaik777 | 0:d6e3d1e21484 | 3 | |
| cholletisaik777 | 0:d6e3d1e21484 | 4 | SPI rtc_spi(PTD6,PTD7,PTD5); // MOSI,MISO, CLOCK microcontroller(in order) |
| pradeepvk2208 | 2:4c79b3dfef31 | 5 | DigitalOut rtc_cs(PTD4); //Slave Select pin |
| cholletisaik777 | 0:d6e3d1e21484 | 6 | //Serial pc(USBTX,USBRX); |
| cholletisaik777 | 0:d6e3d1e21484 | 7 | |
| pradeepvk2208 | 2:4c79b3dfef31 | 8 | void FUNC_INIT_RTC() |
| pradeepvk2208 | 2:4c79b3dfef31 | 9 | { |
| cholletisaik777 | 0:d6e3d1e21484 | 10 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 11 | rtc_spi.format(8,0); |
| cholletisaik777 | 0:d6e3d1e21484 | 12 | rtc_spi.frequency(1000000); |
| cholletisaik777 | 0:d6e3d1e21484 | 13 | //clearing the halt bit |
| cholletisaik777 | 0:d6e3d1e21484 | 14 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 15 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 16 | rtc_spi.write(0x8C); |
| cholletisaik777 | 0:d6e3d1e21484 | 17 | rtc_spi.write(0x00); |
| cholletisaik777 | 0:d6e3d1e21484 | 18 | |
| cholletisaik777 | 0:d6e3d1e21484 | 19 | //clearing the OF bit |
| cholletisaik777 | 0:d6e3d1e21484 | 20 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 21 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 22 | rtc_spi.write(0x8F); |
| cholletisaik777 | 0:d6e3d1e21484 | 23 | rtc_spi.write(0x00); |
| cholletisaik777 | 0:d6e3d1e21484 | 24 | |
| cholletisaik777 | 0:d6e3d1e21484 | 25 | //century bits |
| cholletisaik777 | 0:d6e3d1e21484 | 26 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 27 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 28 | rtc_spi.write(0x80|0x03); |
| cholletisaik777 | 0:d6e3d1e21484 | 29 | rtc_spi.write(0x00); |
| cholletisaik777 | 0:d6e3d1e21484 | 30 | |
| cholletisaik777 | 0:d6e3d1e21484 | 31 | //Kick starting the oscillator |
| cholletisaik777 | 0:d6e3d1e21484 | 32 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 33 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 34 | rtc_spi.write(0x81); //register address with write flag |
| cholletisaik777 | 0:d6e3d1e21484 | 35 | rtc_spi.write(0x80);//enabling stop bit in the seconds register |
| cholletisaik777 | 0:d6e3d1e21484 | 36 | |
| cholletisaik777 | 0:d6e3d1e21484 | 37 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 38 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 39 | rtc_spi.write(0x81); |
| cholletisaik777 | 0:d6e3d1e21484 | 40 | rtc_spi.write(0x00);//disabling the stop bit to restart the oscillator |
| cholletisaik777 | 0:d6e3d1e21484 | 41 | |
| cholletisaik777 | 0:d6e3d1e21484 | 42 | |
| cholletisaik777 | 0:d6e3d1e21484 | 43 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 44 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 45 | rtc_spi.write(0x80); |
| cholletisaik777 | 0:d6e3d1e21484 | 46 | rtc_spi.write(0x01); // set milliseconds value to 00 |
| cholletisaik777 | 0:d6e3d1e21484 | 47 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 48 | |
| cholletisaik777 | 0:d6e3d1e21484 | 49 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 50 | rtc_spi.write(0x81); |
| cholletisaik777 | 0:d6e3d1e21484 | 51 | rtc_spi.write(0x01); //set seconds value to 00 |
| cholletisaik777 | 0:d6e3d1e21484 | 52 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 53 | |
| cholletisaik777 | 0:d6e3d1e21484 | 54 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 55 | rtc_spi.write(0x82); |
| cholletisaik777 | 0:d6e3d1e21484 | 56 | rtc_spi.write(0x01);//set minutes value to 00 |
| cholletisaik777 | 0:d6e3d1e21484 | 57 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 58 | |
| cholletisaik777 | 0:d6e3d1e21484 | 59 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 60 | rtc_spi.write(0x83); |
| cholletisaik777 | 0:d6e3d1e21484 | 61 | rtc_spi.write(0x23); //set the hours to 01 |
| cholletisaik777 | 0:d6e3d1e21484 | 62 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 63 | |
| cholletisaik777 | 0:d6e3d1e21484 | 64 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 65 | rtc_spi.write(0x84); |
| cholletisaik777 | 0:d6e3d1e21484 | 66 | rtc_spi.write(0x01); //set day of the week to 01 |
| cholletisaik777 | 0:d6e3d1e21484 | 67 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 68 | |
| cholletisaik777 | 0:d6e3d1e21484 | 69 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 70 | rtc_spi.write(0x85); |
| cholletisaik777 | 0:d6e3d1e21484 | 71 | rtc_spi.write(0x31); //set date of the month to 01 |
| cholletisaik777 | 0:d6e3d1e21484 | 72 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 73 | |
| cholletisaik777 | 0:d6e3d1e21484 | 74 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 75 | rtc_spi.write(0x86); |
| cholletisaik777 | 0:d6e3d1e21484 | 76 | rtc_spi.write(0x12); //set month to 01 |
| cholletisaik777 | 0:d6e3d1e21484 | 77 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 78 | |
| cholletisaik777 | 0:d6e3d1e21484 | 79 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 80 | rtc_spi.write(0x87); |
| cholletisaik777 | 0:d6e3d1e21484 | 81 | rtc_spi.write(0x01); //set year to 00(2000) |
| cholletisaik777 | 0:d6e3d1e21484 | 82 | rtc_cs=1; |
| pradeepvk2208 | 2:4c79b3dfef31 | 83 | } |
| pradeepvk2208 | 2:4c79b3dfef31 | 84 | |
| pradeepvk2208 | 2:4c79b3dfef31 | 85 | uint8_t* FUNC_CDMS_RD_RTC() |
| pradeepvk2208 | 2:4c79b3dfef31 | 86 | { |
| cholletisaik777 | 0:d6e3d1e21484 | 87 | uint8_t response; |
| cholletisaik777 | 0:d6e3d1e21484 | 88 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 89 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 90 | rtc_spi.write(0x00); //reading milliseconds register |
| cholletisaik777 | 0:d6e3d1e21484 | 91 | response = rtc_spi.write(0x00); // read the value by sending dummy byte |
| cholletisaik777 | 0:d6e3d1e21484 | 92 | uint8_t milliseconds = (uint8_t(response&0xF0)>>4)*10+uint8_t(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 93 | |
| cholletisaik777 | 0:d6e3d1e21484 | 94 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 95 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 96 | rtc_spi.write(0x01); //reading seconds register |
| cholletisaik777 | 0:d6e3d1e21484 | 97 | response =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 98 | uint8_t seconds = ((response&0x70)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 99 | |
| cholletisaik777 | 0:d6e3d1e21484 | 100 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 101 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 102 | rtc_spi.write(0x02); //reading minutes register |
| cholletisaik777 | 0:d6e3d1e21484 | 103 | response =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 104 | uint8_t minutes = ((response&0xF0)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 105 | |
| cholletisaik777 | 0:d6e3d1e21484 | 106 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 107 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 108 | rtc_spi.write(0x03); //reading hours register |
| cholletisaik777 | 0:d6e3d1e21484 | 109 | response=rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 110 | uint8_t hours = ((response&0x30)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 111 | |
| cholletisaik777 | 0:d6e3d1e21484 | 112 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 113 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 114 | rtc_spi.write(0x04); //reading day's register |
| cholletisaik777 | 0:d6e3d1e21484 | 115 | uint8_t day =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 116 | |
| cholletisaik777 | 0:d6e3d1e21484 | 117 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 118 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 119 | rtc_spi.write(0x05); //reading date register |
| cholletisaik777 | 0:d6e3d1e21484 | 120 | response =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 121 | uint8_t date = ((response&0x30)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 122 | |
| cholletisaik777 | 0:d6e3d1e21484 | 123 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 124 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 125 | rtc_spi.write(0x06); //reading month registe |
| cholletisaik777 | 0:d6e3d1e21484 | 126 | response =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 127 | uint8_t month = ((response&0x10)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 128 | |
| cholletisaik777 | 0:d6e3d1e21484 | 129 | rtc_cs=1; |
| cholletisaik777 | 0:d6e3d1e21484 | 130 | rtc_cs=0; |
| cholletisaik777 | 0:d6e3d1e21484 | 131 | rtc_spi.write(0x07); //reading year's registe |
| cholletisaik777 | 0:d6e3d1e21484 | 132 | response =rtc_spi.write(0x01); |
| cholletisaik777 | 0:d6e3d1e21484 | 133 | uint8_t year = ((response&0xF0)>>4)*10+(response&0x0F)*1; |
| cholletisaik777 | 0:d6e3d1e21484 | 134 | //sprintf(Time_stamp,"%02d%02d%02d%02d%02d%02d%02d%02d",year, month, date, day, hours, minutes, seconds, milliseconds ); |
| cholletisaik777 | 0:d6e3d1e21484 | 135 | uint8_t Time_stamp[8] = {year, month, date, day, hours, minutes, seconds, milliseconds}; |
| cholletisaik777 | 0:d6e3d1e21484 | 136 | printf("read\r\n"); |
| cholletisaik777 | 0:d6e3d1e21484 | 137 | return(Time_stamp); |
| cholletisaik777 | 0:d6e3d1e21484 | 138 | } |
