RTC8563 library

Fork of RTC8563 by HIMBED_3AHELI

RTC8563.cpp

Committer:
Cartillius
Date:
2015-04-22
Revision:
1:385198587f4b
Parent:
0:e7072e1b5fa5

File content as of revision 1:385198587f4b:

//
//  @ Project : RTC Date Time Clock
//  @ File Name : RTC8563.cpp
//  @ Date : 06.04.2015
//  @ Author : Franz Pucher
//  @ Copyright : pe@bulme.at
//
 
#include "mbed.h"
#include "const.h"
 
#include "RTC8563.h"
 
RTC8563::RTC8563() : i2c(p28, p27)  // delete void and add call to base constructor 
{
    // Initialise I2C
    i2c.frequency(40000);              
    char init1[2] = {0x6, 0x00};
    char init2[2] = {0x7, 0xff};
    i2c.write(0x40, init1, 2);
    i2c.write(0x40, init2, 2);
}
 
RTC8563::RTC8563(PinName sda, PinName scl) : i2c(sda, scl) 
{
   // Initialise I2C
    i2c.frequency(40000);              
    char init1[2] = {0x6, 0x00};
    char init2[2] = {0x7, 0xff};
    i2c.write(0x40, init1, 2);
    i2c.write(0x40, init2, 2);
}
 
char RTC8563::rtc_read(char address)
{
    char value;
    i2c.start();
    i2c.write(RTC8563_ADR);
    i2c.write(address);
    i2c.start();
    i2c.write(RTC8563_ADR | _READ);
    value = i2c.read(0);
    i2c.stop();
 
    return value;
}
 
void RTC8563::rtc_write(char address, char value)
{
    i2c.start();
    i2c.write(RTC8563_ADR);
    i2c.write(address);
    i2c.write(value);
    i2c.stop();
}
 
void RTC8563::rtc_init()
{
    rtc_write(CONTROL1, 0x20); //stop
    rtc_write(CONTROL2, 0x00);
    rtc_write(YEARS, 0x15);
    rtc_write(MONTHS, 0x04);
    rtc_write(DAYS, 0x22);
    rtc_write(HOURS, 0x21);
    rtc_write(MINUTES, 0x34);
    rtc_write(SECONDS, 0x00);
    rtc_write(WEEKDAYS, 0x02);
    rtc_write(CLOCKOUT_FREQ, 0x00); // 0x83 = TE on & 1Hz
    rtc_write(TIMER_CINTROL, 0x00);
    rtc_write(CONTROL1, 0x00); //start
}
 
void RTC8563::rtc_alarm()
{
}