rtc code working 12

Dependencies:   mbed

Fork of frdm_gpio234 by Pradeep Kotipalli

main.cpp

Committer:
pradeepvk2208
Date:
2014-12-22
Revision:
2:d67cd8569921
Parent:
1:d360ad53f8fd

File content as of revision 2:d67cd8569921:

#include "mbed.h"
SPI spi(PTD6, PTD7, PTD5); // mosi, miso, sclk
DigitalOut cs(PTD2);

void spiwrite(int);
int spiread(int);
int hexint(int);
char* getname(int,int,int,int,int,int,int);


int main() 
{
 
 
 
    // 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);

    // Send the commands to write to test the seconds register
    /*cs = 0;
    spi.write(0x80);  // set write register to seconds
    spi.write(0x00);  // send value of one*/
    spiwrite(0x80);
    spiwrite(0x81);
    spiwrite(0x82);
    spiwrite(0x83);
    spiwrite(0x84);
    spiwrite(0x85);
    spiwrite(0x86);
    
    
   /* cs=1;
    cs=0;
     spi.write(0x81);  //write reg to minutes
    spi.write(0x00);
    spiwrite(0x81);
    
    cs=1;
    cs=0;
    
    spi.write(0x82);  //write reg to minutes
    spi.write(0x01);
    
    cs=1;
    
    cs = 0;
    spi.write(0x83);  // set write register to seconds
    spi.write(0x01);  // send value of one
    
    cs=1;
    
    cs = 0;
    spi.write(0x84);  // set write register to seconds
    spi.write(0x01);  // send value of one
    
    cs=1;
    
    cs = 0;
    spi.write(0x85);  // set write register to seconds
    spi.write(0x01);  // send value of one
    
    cs=1;
    
    cs = 0;
    spi.write(0x86);  // set write register to seconds
    spi.write(0x01);  // send value of one
    
    cs=1;*/
    // Receive the contents of the seconds register
   
   for(int i=0;i<1000000;i++){
    
        
    /*cs=0;
    spi.write(0x00);               // set read register to seconds
    int seconds = spi.write(0x00);   // read the value*/
    int seconds=spiread(0x00);
    
    /*cs=1;
    cs=0;
    
    spi.write(0x01);*/
    int minutes =spiread(0x01);
    
    
    /*cs=1;
    cs=0;
    
    spi.write(0x02);*/
    int hours =spiread(0x02);
   /* cs = 1;  //This cs=1 is to make the chipselect line high to "deselect" the slave in our case RTC
    
    cs=0;
    
    spi.write(0x03);*/
    int day =spi.write(0x03);
    /*cs = 1;
    
    cs=0;
    
    spi.write(0x04);*/
    int date =spiread(0x04);
    /*cs = 1;
    
    cs=0;
    
    spi.write(0x05);*/
    int month =spiread(0x05);
    /*cs = 1;
    
    cs=0;
    
    spi.write(0x06);*/
    int year =spiread(0x06);
    cs = 1;
    
    wait(1);
    //This printf function is to check the timestamp function in the terminal output
    printf("Seconds register = %2X : %2X : %2X : %2X : %2X : %2X : %2X \n\r",year,month,date,day, hours,minutes,seconds);
     printf("b4 returning tmpstmp is : %s\n",getname(year,month,date,day,hours,minutes,seconds));
    }
    
    return 0;
    
    
    
    }
    
    void spiwrite(int a)
    {
        cs=1;
        cs=0;
        spi.write(a);
        spi.write(0x01);
    }
    int spiread(int a)
    {
        cs=1;
        cs=0;
        spi.write(a);
        return(spi.write(0x00));
    }
    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,"%2d%2d%2d%2d%2d%2d%2d",year1,month1,date1,day1,hours1,minutes1,seconds1);
    return(time);
    
}

int hexint(int a)
{
    a=(a/16)*10+(a%16);
    return a;
}