rtc code working 12

Dependencies:   mbed

Fork of frdm_gpio234 by Pradeep Kotipalli

Committer:
pradeepvk2208
Date:
Mon Dec 22 09:27:47 2014 +0000
Revision:
2:d67cd8569921
Parent:
1:d360ad53f8fd
rtc code working

Who changed what in which revision?

UserRevisionLine numberNew 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 }