sdcard
Dependencies: SDFileSystem mbed
Fork of rtcfinalcodeyuppie by
main.cpp@2:d67cd8569921, 2014-12-22 (annotated)
- Committer:
- pradeepvk2208
- Date:
- Mon Dec 22 09:27:47 2014 +0000
- Revision:
- 2:d67cd8569921
- Parent:
- 1:d360ad53f8fd
- Child:
- 3:6cde88f8c50f
rtc code working
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
duke970 | 0:d5e352a3ea98 | 1 | #include "mbed.h" |
duke970 | 0:d5e352a3ea98 | 2 | SPI spi(PTD6, PTD7, PTD5); // mosi, miso, sclk |
duke970 | 0:d5e352a3ea98 | 3 | DigitalOut cs(PTD2); |
duke970 | 0:d5e352a3ea98 | 4 | |
pradeepvk2208 | 1:d360ad53f8fd | 5 | void spiwrite(int); |
pradeepvk2208 | 2:d67cd8569921 | 6 | int spiread(int); |
pradeepvk2208 | 2:d67cd8569921 | 7 | int hexint(int); |
pradeepvk2208 | 2:d67cd8569921 | 8 | char* getname(int,int,int,int,int,int,int); |
pradeepvk2208 | 1:d360ad53f8fd | 9 | |
duke970 | 0:d5e352a3ea98 | 10 | |
duke970 | 0:d5e352a3ea98 | 11 | int main() |
duke970 | 0:d5e352a3ea98 | 12 | { |
duke970 | 0:d5e352a3ea98 | 13 | |
duke970 | 0:d5e352a3ea98 | 14 | |
duke970 | 0:d5e352a3ea98 | 15 | |
duke970 | 0:d5e352a3ea98 | 16 | // Setup the spi for 8 bit data, high steady state clock, |
duke970 | 0:d5e352a3ea98 | 17 | // second edge capture, with a 1MHz clock rate |
duke970 | 0:d5e352a3ea98 | 18 | spi.format(8,3); |
duke970 | 0:d5e352a3ea98 | 19 | spi.frequency(1000000); |
duke970 | 0:d5e352a3ea98 | 20 | |
duke970 | 0:d5e352a3ea98 | 21 | // Send the commands to write to test the seconds register |
pradeepvk2208 | 1:d360ad53f8fd | 22 | /*cs = 0; |
duke970 | 0:d5e352a3ea98 | 23 | spi.write(0x80); // set write register to seconds |
pradeepvk2208 | 1:d360ad53f8fd | 24 | spi.write(0x00); // send value of one*/ |
pradeepvk2208 | 1:d360ad53f8fd | 25 | spiwrite(0x80); |
pradeepvk2208 | 2:d67cd8569921 | 26 | spiwrite(0x81); |
pradeepvk2208 | 2:d67cd8569921 | 27 | spiwrite(0x82); |
pradeepvk2208 | 2:d67cd8569921 | 28 | spiwrite(0x83); |
pradeepvk2208 | 2:d67cd8569921 | 29 | spiwrite(0x84); |
pradeepvk2208 | 2:d67cd8569921 | 30 | spiwrite(0x85); |
pradeepvk2208 | 2:d67cd8569921 | 31 | spiwrite(0x86); |
duke970 | 0:d5e352a3ea98 | 32 | |
pradeepvk2208 | 2:d67cd8569921 | 33 | |
pradeepvk2208 | 2:d67cd8569921 | 34 | /* cs=1; |
duke970 | 0:d5e352a3ea98 | 35 | cs=0; |
duke970 | 0:d5e352a3ea98 | 36 | spi.write(0x81); //write reg to minutes |
duke970 | 0:d5e352a3ea98 | 37 | spi.write(0x00); |
pradeepvk2208 | 1:d360ad53f8fd | 38 | spiwrite(0x81); |
duke970 | 0:d5e352a3ea98 | 39 | |
duke970 | 0:d5e352a3ea98 | 40 | cs=1; |
duke970 | 0:d5e352a3ea98 | 41 | cs=0; |
duke970 | 0:d5e352a3ea98 | 42 | |
duke970 | 0:d5e352a3ea98 | 43 | spi.write(0x82); //write reg to minutes |
duke970 | 0:d5e352a3ea98 | 44 | spi.write(0x01); |
duke970 | 0:d5e352a3ea98 | 45 | |
duke970 | 0:d5e352a3ea98 | 46 | cs=1; |
duke970 | 0:d5e352a3ea98 | 47 | |
duke970 | 0:d5e352a3ea98 | 48 | cs = 0; |
duke970 | 0:d5e352a3ea98 | 49 | spi.write(0x83); // set write register to seconds |
duke970 | 0:d5e352a3ea98 | 50 | spi.write(0x01); // send value of one |
duke970 | 0:d5e352a3ea98 | 51 | |
duke970 | 0:d5e352a3ea98 | 52 | cs=1; |
duke970 | 0:d5e352a3ea98 | 53 | |
duke970 | 0:d5e352a3ea98 | 54 | cs = 0; |
duke970 | 0:d5e352a3ea98 | 55 | spi.write(0x84); // set write register to seconds |
duke970 | 0:d5e352a3ea98 | 56 | spi.write(0x01); // send value of one |
duke970 | 0:d5e352a3ea98 | 57 | |
duke970 | 0:d5e352a3ea98 | 58 | cs=1; |
duke970 | 0:d5e352a3ea98 | 59 | |
duke970 | 0:d5e352a3ea98 | 60 | cs = 0; |
duke970 | 0:d5e352a3ea98 | 61 | spi.write(0x85); // set write register to seconds |
duke970 | 0:d5e352a3ea98 | 62 | spi.write(0x01); // send value of one |
duke970 | 0:d5e352a3ea98 | 63 | |
duke970 | 0:d5e352a3ea98 | 64 | cs=1; |
duke970 | 0:d5e352a3ea98 | 65 | |
duke970 | 0:d5e352a3ea98 | 66 | cs = 0; |
duke970 | 0:d5e352a3ea98 | 67 | spi.write(0x86); // set write register to seconds |
duke970 | 0:d5e352a3ea98 | 68 | spi.write(0x01); // send value of one |
duke970 | 0:d5e352a3ea98 | 69 | |
pradeepvk2208 | 2:d67cd8569921 | 70 | cs=1;*/ |
duke970 | 0:d5e352a3ea98 | 71 | // Receive the contents of the seconds register |
duke970 | 0:d5e352a3ea98 | 72 | |
duke970 | 0:d5e352a3ea98 | 73 | for(int i=0;i<1000000;i++){ |
duke970 | 0:d5e352a3ea98 | 74 | |
duke970 | 0:d5e352a3ea98 | 75 | |
pradeepvk2208 | 2:d67cd8569921 | 76 | /*cs=0; |
duke970 | 0:d5e352a3ea98 | 77 | spi.write(0x00); // set read register to seconds |
pradeepvk2208 | 2:d67cd8569921 | 78 | int seconds = spi.write(0x00); // read the value*/ |
pradeepvk2208 | 2:d67cd8569921 | 79 | int seconds=spiread(0x00); |
duke970 | 0:d5e352a3ea98 | 80 | |
pradeepvk2208 | 2:d67cd8569921 | 81 | /*cs=1; |
duke970 | 0:d5e352a3ea98 | 82 | cs=0; |
duke970 | 0:d5e352a3ea98 | 83 | |
pradeepvk2208 | 2:d67cd8569921 | 84 | spi.write(0x01);*/ |
pradeepvk2208 | 2:d67cd8569921 | 85 | int minutes =spiread(0x01); |
duke970 | 0:d5e352a3ea98 | 86 | |
duke970 | 0:d5e352a3ea98 | 87 | |
pradeepvk2208 | 2:d67cd8569921 | 88 | /*cs=1; |
duke970 | 0:d5e352a3ea98 | 89 | cs=0; |
duke970 | 0:d5e352a3ea98 | 90 | |
pradeepvk2208 | 2:d67cd8569921 | 91 | spi.write(0x02);*/ |
pradeepvk2208 | 2:d67cd8569921 | 92 | int hours =spiread(0x02); |
pradeepvk2208 | 2:d67cd8569921 | 93 | /* cs = 1; //This cs=1 is to make the chipselect line high to "deselect" the slave in our case RTC |
duke970 | 0:d5e352a3ea98 | 94 | |
duke970 | 0:d5e352a3ea98 | 95 | cs=0; |
duke970 | 0:d5e352a3ea98 | 96 | |
pradeepvk2208 | 2:d67cd8569921 | 97 | spi.write(0x03);*/ |
pradeepvk2208 | 2:d67cd8569921 | 98 | int day =spi.write(0x03); |
pradeepvk2208 | 2:d67cd8569921 | 99 | /*cs = 1; |
duke970 | 0:d5e352a3ea98 | 100 | |
duke970 | 0:d5e352a3ea98 | 101 | cs=0; |
duke970 | 0:d5e352a3ea98 | 102 | |
pradeepvk2208 | 2:d67cd8569921 | 103 | spi.write(0x04);*/ |
pradeepvk2208 | 2:d67cd8569921 | 104 | int date =spiread(0x04); |
pradeepvk2208 | 2:d67cd8569921 | 105 | /*cs = 1; |
duke970 | 0:d5e352a3ea98 | 106 | |
duke970 | 0:d5e352a3ea98 | 107 | cs=0; |
duke970 | 0:d5e352a3ea98 | 108 | |
pradeepvk2208 | 2:d67cd8569921 | 109 | spi.write(0x05);*/ |
pradeepvk2208 | 2:d67cd8569921 | 110 | int month =spiread(0x05); |
pradeepvk2208 | 2:d67cd8569921 | 111 | /*cs = 1; |
duke970 | 0:d5e352a3ea98 | 112 | |
duke970 | 0:d5e352a3ea98 | 113 | cs=0; |
duke970 | 0:d5e352a3ea98 | 114 | |
pradeepvk2208 | 2:d67cd8569921 | 115 | spi.write(0x06);*/ |
pradeepvk2208 | 2:d67cd8569921 | 116 | int year =spiread(0x06); |
duke970 | 0:d5e352a3ea98 | 117 | cs = 1; |
duke970 | 0:d5e352a3ea98 | 118 | |
duke970 | 0:d5e352a3ea98 | 119 | wait(1); |
duke970 | 0:d5e352a3ea98 | 120 | //This printf function is to check the timestamp function in the terminal output |
duke970 | 0:d5e352a3ea98 | 121 | printf("Seconds register = %2X : %2X : %2X : %2X : %2X : %2X : %2X \n\r",year,month,date,day, hours,minutes,seconds); |
pradeepvk2208 | 2:d67cd8569921 | 122 | printf("b4 returning tmpstmp is : %s\n",getname(year,month,date,day,hours,minutes,seconds)); |
duke970 | 0:d5e352a3ea98 | 123 | } |
duke970 | 0:d5e352a3ea98 | 124 | |
duke970 | 0:d5e352a3ea98 | 125 | return 0; |
duke970 | 0:d5e352a3ea98 | 126 | |
duke970 | 0:d5e352a3ea98 | 127 | |
duke970 | 0:d5e352a3ea98 | 128 | |
pradeepvk2208 | 1:d360ad53f8fd | 129 | } |
pradeepvk2208 | 1:d360ad53f8fd | 130 | |
pradeepvk2208 | 1:d360ad53f8fd | 131 | void spiwrite(int a) |
pradeepvk2208 | 1:d360ad53f8fd | 132 | { |
pradeepvk2208 | 1:d360ad53f8fd | 133 | cs=1; |
pradeepvk2208 | 1:d360ad53f8fd | 134 | cs=0; |
pradeepvk2208 | 1:d360ad53f8fd | 135 | spi.write(a); |
pradeepvk2208 | 1:d360ad53f8fd | 136 | spi.write(0x01); |
pradeepvk2208 | 2:d67cd8569921 | 137 | } |
pradeepvk2208 | 2:d67cd8569921 | 138 | int spiread(int a) |
pradeepvk2208 | 2:d67cd8569921 | 139 | { |
pradeepvk2208 | 2:d67cd8569921 | 140 | cs=1; |
pradeepvk2208 | 2:d67cd8569921 | 141 | cs=0; |
pradeepvk2208 | 2:d67cd8569921 | 142 | spi.write(a); |
pradeepvk2208 | 2:d67cd8569921 | 143 | return(spi.write(0x00)); |
pradeepvk2208 | 2:d67cd8569921 | 144 | } |
pradeepvk2208 | 2:d67cd8569921 | 145 | char* getname(int year1,int month1,int date1,int day1,int hours1,int minutes1,int seconds1) |
pradeepvk2208 | 2:d67cd8569921 | 146 | { |
pradeepvk2208 | 2:d67cd8569921 | 147 | year1= hexint(year1); |
pradeepvk2208 | 2:d67cd8569921 | 148 | month1=hexint(month1); |
pradeepvk2208 | 2:d67cd8569921 | 149 | date1=hexint(date1); |
pradeepvk2208 | 2:d67cd8569921 | 150 | day1=hexint(day1); |
pradeepvk2208 | 2:d67cd8569921 | 151 | hours1=hexint(hours1); |
pradeepvk2208 | 2:d67cd8569921 | 152 | minutes1=hexint(minutes1); |
pradeepvk2208 | 2:d67cd8569921 | 153 | seconds1=hexint(seconds1); |
pradeepvk2208 | 2:d67cd8569921 | 154 | /*char y[3]=getstr(year); |
pradeepvk2208 | 2:d67cd8569921 | 155 | char m[3]=getstr(month); |
pradeepvk2208 | 2:d67cd8569921 | 156 | char dat[3]=getstr(date); |
pradeepvk2208 | 2:d67cd8569921 | 157 | char da[3]=getstr(day); |
pradeepvk2208 | 2:d67cd8569921 | 158 | char h[3]=getstr(hours); |
pradeepvk2208 | 2:d67cd8569921 | 159 | char mi[3]=getstr(minutes); |
pradeepvk2208 | 2:d67cd8569921 | 160 | char s[3]=getstr(seconds);*/ |
pradeepvk2208 | 2:d67cd8569921 | 161 | char time[15]; |
pradeepvk2208 | 2:d67cd8569921 | 162 | sprintf(time,"%2d%2d%2d%2d%2d%2d%2d",year1,month1,date1,day1,hours1,minutes1,seconds1); |
pradeepvk2208 | 2:d67cd8569921 | 163 | return(time); |
pradeepvk2208 | 2:d67cd8569921 | 164 | |
pradeepvk2208 | 2:d67cd8569921 | 165 | } |
pradeepvk2208 | 2:d67cd8569921 | 166 | |
pradeepvk2208 | 2:d67cd8569921 | 167 | int hexint(int a) |
pradeepvk2208 | 2:d67cd8569921 | 168 | { |
pradeepvk2208 | 2:d67cd8569921 | 169 | a=(a/16)*10+(a%16); |
pradeepvk2208 | 2:d67cd8569921 | 170 | return a; |
pradeepvk2208 | 2:d67cd8569921 | 171 | } |