RX8025 sample

Dependencies:   AQM0802 RX8025 mbed

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

Committer:
yasuyuki
Date:
Sat Nov 08 12:21:25 2014 +0000
Revision:
0:fd7275804dc9
release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:fd7275804dc9 1 //**********************
yasuyuki 0:fd7275804dc9 2 // Real Time Clock
yasuyuki 0:fd7275804dc9 3 // RX8025 sample for mbed
yasuyuki 0:fd7275804dc9 4 //
yasuyuki 0:fd7275804dc9 5 // Be careful, no parameter check.
yasuyuki 0:fd7275804dc9 6 //
yasuyuki 0:fd7275804dc9 7 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:fd7275804dc9 8 // http://einstlab.web.fc2.com
yasuyuki 0:fd7275804dc9 9 //**********************
yasuyuki 0:fd7275804dc9 10 #include "mbed.h"
yasuyuki 0:fd7275804dc9 11 #include "AQM0802.h"
yasuyuki 0:fd7275804dc9 12 #include "RX8025.h"
yasuyuki 0:fd7275804dc9 13
yasuyuki 0:fd7275804dc9 14 #if defined(TARGET_LPC1768)
yasuyuki 0:fd7275804dc9 15 I2C i2c(p28,p27);
yasuyuki 0:fd7275804dc9 16 #endif
yasuyuki 0:fd7275804dc9 17 // for TG-LPC11U35-501
yasuyuki 0:fd7275804dc9 18 #if defined(TARGET_LPC11U35_501)
yasuyuki 0:fd7275804dc9 19 I2C i2c(P0_5,P0_4);
yasuyuki 0:fd7275804dc9 20 #endif
yasuyuki 0:fd7275804dc9 21 // for Nucleo
yasuyuki 0:fd7275804dc9 22 #if defined(TARGET_NUCLEO_F401RE)
yasuyuki 0:fd7275804dc9 23 I2C i2c(D14,D15);
yasuyuki 0:fd7275804dc9 24 #endif
yasuyuki 0:fd7275804dc9 25
yasuyuki 0:fd7275804dc9 26 AQM0802 lcd(i2c);
yasuyuki 0:fd7275804dc9 27 RX8025 rx8025(i2c);
yasuyuki 0:fd7275804dc9 28
yasuyuki 0:fd7275804dc9 29 // 0=Sun...6=Sat
yasuyuki 0:fd7275804dc9 30 int zeller(int y, int m, int d){
yasuyuki 0:fd7275804dc9 31
yasuyuki 0:fd7275804dc9 32 int i;
yasuyuki 0:fd7275804dc9 33 if(m<3){
yasuyuki 0:fd7275804dc9 34 --y;
yasuyuki 0:fd7275804dc9 35 m+=12;
yasuyuki 0:fd7275804dc9 36 }
yasuyuki 0:fd7275804dc9 37 i = (y + y/4 - y/100 + y/400 + (13*m + 8)/5 + d) % 7;
yasuyuki 0:fd7275804dc9 38 return i;
yasuyuki 0:fd7275804dc9 39 }
yasuyuki 0:fd7275804dc9 40
yasuyuki 0:fd7275804dc9 41
yasuyuki 0:fd7275804dc9 42 int main() {
yasuyuki 0:fd7275804dc9 43
yasuyuki 0:fd7275804dc9 44 char msg[10];
yasuyuki 0:fd7275804dc9 45 Times t;
yasuyuki 0:fd7275804dc9 46 Control c;
yasuyuki 0:fd7275804dc9 47 Alarmw aw;
yasuyuki 0:fd7275804dc9 48 Alarmd ad;
yasuyuki 0:fd7275804dc9 49
yasuyuki 0:fd7275804dc9 50 // set Control
yasuyuki 0:fd7275804dc9 51 c.control1=0x20; // 24hours format
yasuyuki 0:fd7275804dc9 52 c.control2=0x00;
yasuyuki 0:fd7275804dc9 53 c.offset=0x00; // to adjust offset
yasuyuki 0:fd7275804dc9 54 rx8025.setCONTROL(c);
yasuyuki 0:fd7275804dc9 55
yasuyuki 0:fd7275804dc9 56 // set Alarm with week, as 08:00 at sat.
yasuyuki 0:fd7275804dc9 57 // to enable WAFG=1 in contol2
yasuyuki 0:fd7275804dc9 58 // you will see WALE=1 in control1 and INTB pin=L, when it happens
yasuyuki 0:fd7275804dc9 59 // you should clear WALE
yasuyuki 0:fd7275804dc9 60 aw.minute=0x00;
yasuyuki 0:fd7275804dc9 61 aw.hour=0x08;
yasuyuki 0:fd7275804dc9 62 aw.weekday=0x06;
yasuyuki 0:fd7275804dc9 63 rx8025.setALARMw(aw);
yasuyuki 0:fd7275804dc9 64
yasuyuki 0:fd7275804dc9 65 // set Alarm, as 09:00
yasuyuki 0:fd7275804dc9 66 // to enable DAFG=1 in contol2
yasuyuki 0:fd7275804dc9 67 // you will see DALE=1 in control1 and INTA pin=L, when it happens
yasuyuki 0:fd7275804dc9 68 // you should clear DALE
yasuyuki 0:fd7275804dc9 69 ad.minute=0x00;
yasuyuki 0:fd7275804dc9 70 ad.hour=0x09;
yasuyuki 0:fd7275804dc9 71 rx8025.setALARMd(ad);
yasuyuki 0:fd7275804dc9 72
yasuyuki 0:fd7275804dc9 73 // set Time as 2014-01-01 00:00:00
yasuyuki 0:fd7275804dc9 74 t.seconds=0x00;
yasuyuki 0:fd7275804dc9 75 t.minutes=0x00;
yasuyuki 0:fd7275804dc9 76 t.hours=0x00;
yasuyuki 0:fd7275804dc9 77 t.weekdays=zeller(2014,1,1);
yasuyuki 0:fd7275804dc9 78 t.days=0x01;
yasuyuki 0:fd7275804dc9 79 t.months=0x01;
yasuyuki 0:fd7275804dc9 80 t.years=0x14;
yasuyuki 0:fd7275804dc9 81 rx8025.setTIME(t);
yasuyuki 0:fd7275804dc9 82
yasuyuki 0:fd7275804dc9 83 while(1) {
yasuyuki 0:fd7275804dc9 84
yasuyuki 0:fd7275804dc9 85 // Get Time
yasuyuki 0:fd7275804dc9 86 t=rx8025.getTIME();
yasuyuki 0:fd7275804dc9 87
yasuyuki 0:fd7275804dc9 88 sprintf(msg,"%02X-%02X-%02X", t.years, t.months, t.days);
yasuyuki 0:fd7275804dc9 89 lcd.locate(0,0);
yasuyuki 0:fd7275804dc9 90 lcd.print(msg);
yasuyuki 0:fd7275804dc9 91 sprintf(msg,"%02X:%02X:%02X", t.hours, t.minutes, t.seconds);
yasuyuki 0:fd7275804dc9 92 lcd.locate(0,1);
yasuyuki 0:fd7275804dc9 93 lcd.print(msg);
yasuyuki 0:fd7275804dc9 94 wait(1);
yasuyuki 0:fd7275804dc9 95 }
yasuyuki 0:fd7275804dc9 96
yasuyuki 0:fd7275804dc9 97 }
yasuyuki 0:fd7275804dc9 98
yasuyuki 0:fd7275804dc9 99