RX8025 sample

Dependencies:   AQM0802 RX8025 mbed

See https://developer.mbed.org/users/yasuyuki/notebook/RX8025/

main.cpp

Committer:
yasuyuki
Date:
2014-11-08
Revision:
0:fd7275804dc9

File content as of revision 0:fd7275804dc9:

//**********************
// Real Time Clock
// RX8025 sample for mbed
//
// Be careful, no parameter check.
//
// (C)Copyright 2014 All rights reserved by Y.Onodera
// http://einstlab.web.fc2.com
//**********************
#include "mbed.h"
#include "AQM0802.h"
#include "RX8025.h"

#if defined(TARGET_LPC1768)
I2C i2c(p28,p27);
#endif
// for TG-LPC11U35-501
#if defined(TARGET_LPC11U35_501)
I2C i2c(P0_5,P0_4);
#endif
// for Nucleo
#if defined(TARGET_NUCLEO_F401RE)
I2C i2c(D14,D15);
#endif

AQM0802 lcd(i2c);
RX8025 rx8025(i2c);

// 0=Sun...6=Sat
int zeller(int y, int m, int d){
    
    int i;
    if(m<3){
        --y;
        m+=12;
    }
    i = (y + y/4 - y/100 + y/400 + (13*m + 8)/5 + d) % 7;
    return i;    
}


int main() {
    
    char msg[10];
    Times t;
    Control c;
    Alarmw aw;
    Alarmd ad;

    // set Control
    c.control1=0x20;    // 24hours format
    c.control2=0x00;
    c.offset=0x00;      // to adjust offset
    rx8025.setCONTROL(c);

    // set Alarm with week, as 08:00 at sat.
    // to enable WAFG=1 in contol2
    // you will see WALE=1 in control1 and INTB pin=L, when it happens
    // you should clear WALE
    aw.minute=0x00;
    aw.hour=0x08;
    aw.weekday=0x06;
    rx8025.setALARMw(aw);

    // set Alarm, as 09:00
    // to enable DAFG=1 in contol2
    // you will see DALE=1 in control1 and INTA pin=L, when it happens
    // you should clear DALE
    ad.minute=0x00;
    ad.hour=0x09;
    rx8025.setALARMd(ad);

    // set Time as 2014-01-01 00:00:00
    t.seconds=0x00;
    t.minutes=0x00;
    t.hours=0x00;
    t.weekdays=zeller(2014,1,1);
    t.days=0x01;
    t.months=0x01;
    t.years=0x14;
    rx8025.setTIME(t);
      
    while(1) {

        // Get Time
        t=rx8025.getTIME();

        sprintf(msg,"%02X-%02X-%02X", t.years, t.months, t.days);
        lcd.locate(0,0);
        lcd.print(msg);
        sprintf(msg,"%02X:%02X:%02X", t.hours, t.minutes, t.seconds);
        lcd.locate(0,1);
        lcd.print(msg);
        wait(1);
    }

}