with one warning !!
Fork of testing_rtc by
rtc_tst.cpp
- Committer:
- z3on
- Date:
- 2014-12-20
- Revision:
- 1:620887c20cee
File content as of revision 1:620887c20cee:
#include "rtc_tst.h"
#include "string.h"
SPI spi(PTD6, PTD7, PTD5); // mosi, miso, sclk
DigitalOut cs(D9);
char* Getts()
{
// Setup the spi for 8 bit data, high steady state clock,
// second edge capture, with a 1MHz clock rate
spi.format(8,3);
spi.frequency(1000000);
cs = 0;
spi.write(0x80); // set write register to seconds
spi.write(0x00); // send value of zero
//cs=1;
//cs=0;
spi.write(0x81);
spi.write(0x00); //write reg to minutes
//cs=1;
//cs=0;
spi.write(0x82);
spi.write(0x15); //write reg to hours (00-23)
spi.write(0x83);
spi.write(0x07); //write reg to day (1-7)
spi.write(0x84);
spi.write(0x20); //write reg to date(01-31)
spi.write(0x85);
spi.write(0x12); //write reg to mnth(01-12)
spi.write(0x86);
spi.write(0x12); //write reg to year(00-99)
cs=1;
// Receive the contents of the seconds register
cs=0;
spi.write(0x00); // set read register to seconds
int seconds = spi.write(0x00); // read the value by sending dummy byte
//cs=1;
//cs=0;
spi.write(0x01);
int minutes =spi.write(0x01);
//cs=1;
//cs=0;
spi.write(0x02);
int hours =spi.write(0x01);
spi.write(0x03);
int day =spi.write(0x01);
spi.write(0x04);
int date =spi.write(0x01);
spi.write(0x05);
int month =spi.write(0x01);
spi.write(0x06);
int year =spi.write(0x01);
//This cs=1 is to make the chipselect line high to "deselect" the slave in our case RTC
cs = 1;
//This printf function is to check the timestamp function in the terminal output
printf("timestamp as = %X : %X : %X : %X : %X : %X : %X\n\r", hours,minutes,seconds,day,date,month,year);
printf("b4 returning tmpstmp is : %s\n",getname(year,month,date,day,hours,minutes,seconds));
return(getname(year,month,date,day,hours,minutes,seconds));
}
char* getname(int year1,int month1,int date1,int day1,int hours1,int minutes1,int seconds1)
{
year1= hexint(year1);
month1=hexint(month1);
date1=hexint(date1);
day1=hexint(day1);
hours1=hexint(hours1);
minutes1=hexint(minutes1);
seconds1=hexint(seconds1);
/*char y[3]=getstr(year);
char m[3]=getstr(month);
char dat[3]=getstr(date);
char da[3]=getstr(day);
char h[3]=getstr(hours);
char mi[3]=getstr(minutes);
char s[3]=getstr(seconds);*/
char time[15];
sprintf(time,"%d%d%d%d%d%d%d",year1,month1,date1,day1,hours1,minutes1,seconds1);
return(time);
}
int hexint(int a)
{
a=(a/16)*10+(a%16);
return a;
}
