RX8025 library

Dependents:   mbed_RX8025 MAPLEminiA MAPLEminiA

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

Committer:
yasuyuki
Date:
Sat Nov 08 12:19:28 2014 +0000
Revision:
0:6da3d94a7774
release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yasuyuki 0:6da3d94a7774 1 //**********************
yasuyuki 0:6da3d94a7774 2 // RX8025.cpp for mbed
yasuyuki 0:6da3d94a7774 3 //
yasuyuki 0:6da3d94a7774 4 // RX8025 rx8025(P0_5,P0_4);
yasuyuki 0:6da3d94a7774 5 // or
yasuyuki 0:6da3d94a7774 6 // I2C i2c(P0_5,P0_4);
yasuyuki 0:6da3d94a7774 7 // RX8025 rx8025(i2c);
yasuyuki 0:6da3d94a7774 8 //
yasuyuki 0:6da3d94a7774 9 // (C)Copyright 2014 All rights reserved by Y.Onodera
yasuyuki 0:6da3d94a7774 10 // http://einstlab.web.fc2.com
yasuyuki 0:6da3d94a7774 11 //**********************
yasuyuki 0:6da3d94a7774 12
yasuyuki 0:6da3d94a7774 13 #include "mbed.h"
yasuyuki 0:6da3d94a7774 14 #include "RX8025.h"
yasuyuki 0:6da3d94a7774 15
yasuyuki 0:6da3d94a7774 16 RX8025::RX8025 (PinName sda, PinName scl) : _i2c(sda, scl) {
yasuyuki 0:6da3d94a7774 17 init();
yasuyuki 0:6da3d94a7774 18 }
yasuyuki 0:6da3d94a7774 19 RX8025::RX8025 (I2C& p_i2c) : _i2c(p_i2c) {
yasuyuki 0:6da3d94a7774 20 init();
yasuyuki 0:6da3d94a7774 21 }
yasuyuki 0:6da3d94a7774 22
yasuyuki 0:6da3d94a7774 23 void RX8025::put(unsigned char a, unsigned char b)
yasuyuki 0:6da3d94a7774 24 {
yasuyuki 0:6da3d94a7774 25 wait_us(100); // wait 62us
yasuyuki 0:6da3d94a7774 26 buf[0]=a;
yasuyuki 0:6da3d94a7774 27 buf[1]=b;
yasuyuki 0:6da3d94a7774 28 _i2c.write(RX8025_ADDR, buf, 2);
yasuyuki 0:6da3d94a7774 29 }
yasuyuki 0:6da3d94a7774 30
yasuyuki 0:6da3d94a7774 31
yasuyuki 0:6da3d94a7774 32 void RX8025::get(unsigned char a)
yasuyuki 0:6da3d94a7774 33 {
yasuyuki 0:6da3d94a7774 34 wait_us(100); // wait 62us
yasuyuki 0:6da3d94a7774 35 buf[0] = a;
yasuyuki 0:6da3d94a7774 36 _i2c.write(RX8025_ADDR, buf, 1, true); // no stop, repeated
yasuyuki 0:6da3d94a7774 37 _i2c.read( RX8025_ADDR, buf, 1);
yasuyuki 0:6da3d94a7774 38
yasuyuki 0:6da3d94a7774 39 }
yasuyuki 0:6da3d94a7774 40
yasuyuki 0:6da3d94a7774 41
yasuyuki 0:6da3d94a7774 42 Times RX8025::getTIME()
yasuyuki 0:6da3d94a7774 43 {
yasuyuki 0:6da3d94a7774 44 get(RX8025_SECONDS);
yasuyuki 0:6da3d94a7774 45 time.seconds=buf[0];
yasuyuki 0:6da3d94a7774 46 get(RX8025_MINUTES);
yasuyuki 0:6da3d94a7774 47 time.minutes=buf[0];
yasuyuki 0:6da3d94a7774 48 get(RX8025_HOURS);
yasuyuki 0:6da3d94a7774 49 time.hours=buf[0];
yasuyuki 0:6da3d94a7774 50 get(RX8025_WEEKDAYS);
yasuyuki 0:6da3d94a7774 51 time.weekdays=buf[0];
yasuyuki 0:6da3d94a7774 52 get(RX8025_DAYS);
yasuyuki 0:6da3d94a7774 53 time.days=buf[0];
yasuyuki 0:6da3d94a7774 54 get(RX8025_MONTHS);
yasuyuki 0:6da3d94a7774 55 time.months=buf[0];
yasuyuki 0:6da3d94a7774 56 get(RX8025_YEARS);
yasuyuki 0:6da3d94a7774 57 time.years=buf[0];
yasuyuki 0:6da3d94a7774 58 return time;
yasuyuki 0:6da3d94a7774 59 }
yasuyuki 0:6da3d94a7774 60
yasuyuki 0:6da3d94a7774 61
yasuyuki 0:6da3d94a7774 62 void RX8025::setTIME(Times t)
yasuyuki 0:6da3d94a7774 63 {
yasuyuki 0:6da3d94a7774 64 put(RX8025_SECONDS, t.seconds);
yasuyuki 0:6da3d94a7774 65 put(RX8025_MINUTES, t.minutes);
yasuyuki 0:6da3d94a7774 66 put(RX8025_HOURS, t.hours);
yasuyuki 0:6da3d94a7774 67 put(RX8025_WEEKDAYS, t.weekdays);
yasuyuki 0:6da3d94a7774 68 put(RX8025_DAYS, t.days);
yasuyuki 0:6da3d94a7774 69 put(RX8025_MONTHS, t.months);
yasuyuki 0:6da3d94a7774 70 put(RX8025_YEARS, t.years);
yasuyuki 0:6da3d94a7774 71 }
yasuyuki 0:6da3d94a7774 72
yasuyuki 0:6da3d94a7774 73
yasuyuki 0:6da3d94a7774 74 Alarmw RX8025::getALARMw()
yasuyuki 0:6da3d94a7774 75 {
yasuyuki 0:6da3d94a7774 76 get(RX8025_ALARM_W_M);
yasuyuki 0:6da3d94a7774 77 alarmw.minute=buf[0];
yasuyuki 0:6da3d94a7774 78 get(RX8025_ALARM_W_H);
yasuyuki 0:6da3d94a7774 79 alarmw.hour=buf[0];
yasuyuki 0:6da3d94a7774 80 get(RX8025_ALARM_W_W);
yasuyuki 0:6da3d94a7774 81 alarmw.weekday=buf[0];
yasuyuki 0:6da3d94a7774 82 return alarmw;
yasuyuki 0:6da3d94a7774 83 }
yasuyuki 0:6da3d94a7774 84
yasuyuki 0:6da3d94a7774 85
yasuyuki 0:6da3d94a7774 86 void RX8025::setALARMw(Alarmw a)
yasuyuki 0:6da3d94a7774 87 {
yasuyuki 0:6da3d94a7774 88 put(RX8025_ALARM_W_M, a.minute);
yasuyuki 0:6da3d94a7774 89 put(RX8025_ALARM_W_H, a.hour);
yasuyuki 0:6da3d94a7774 90 put(RX8025_ALARM_W_W, a.weekday);
yasuyuki 0:6da3d94a7774 91 }
yasuyuki 0:6da3d94a7774 92
yasuyuki 0:6da3d94a7774 93
yasuyuki 0:6da3d94a7774 94 Alarmd RX8025::getALARMd()
yasuyuki 0:6da3d94a7774 95 {
yasuyuki 0:6da3d94a7774 96 get(RX8025_ALARM_D_M);
yasuyuki 0:6da3d94a7774 97 alarmd.minute=buf[0];
yasuyuki 0:6da3d94a7774 98 get(RX8025_ALARM_D_H);
yasuyuki 0:6da3d94a7774 99 alarmd.hour=buf[0];
yasuyuki 0:6da3d94a7774 100 return alarmd;
yasuyuki 0:6da3d94a7774 101 }
yasuyuki 0:6da3d94a7774 102
yasuyuki 0:6da3d94a7774 103
yasuyuki 0:6da3d94a7774 104 void RX8025::setALARMd(Alarmd a)
yasuyuki 0:6da3d94a7774 105 {
yasuyuki 0:6da3d94a7774 106 put(RX8025_ALARM_D_M, a.minute);
yasuyuki 0:6da3d94a7774 107 put(RX8025_ALARM_D_H, a.hour);
yasuyuki 0:6da3d94a7774 108 }
yasuyuki 0:6da3d94a7774 109
yasuyuki 0:6da3d94a7774 110
yasuyuki 0:6da3d94a7774 111 Control RX8025::getCONTROL()
yasuyuki 0:6da3d94a7774 112 {
yasuyuki 0:6da3d94a7774 113 get(RX8025_CONTROL1);
yasuyuki 0:6da3d94a7774 114 control.control1=buf[0];
yasuyuki 0:6da3d94a7774 115 get(RX8025_CONTROL2);
yasuyuki 0:6da3d94a7774 116 control.control2=buf[0];
yasuyuki 0:6da3d94a7774 117 get(RX8025_OFFSET);
yasuyuki 0:6da3d94a7774 118 control.offset=buf[0];
yasuyuki 0:6da3d94a7774 119 return control;
yasuyuki 0:6da3d94a7774 120 }
yasuyuki 0:6da3d94a7774 121
yasuyuki 0:6da3d94a7774 122
yasuyuki 0:6da3d94a7774 123 void RX8025::setCONTROL(Control c)
yasuyuki 0:6da3d94a7774 124 {
yasuyuki 0:6da3d94a7774 125 put(RX8025_CONTROL1, c.control1);
yasuyuki 0:6da3d94a7774 126 put(RX8025_CONTROL2, c.control2);
yasuyuki 0:6da3d94a7774 127 put(RX8025_OFFSET, c.offset);
yasuyuki 0:6da3d94a7774 128 }
yasuyuki 0:6da3d94a7774 129
yasuyuki 0:6da3d94a7774 130
yasuyuki 0:6da3d94a7774 131 void RX8025::init()
yasuyuki 0:6da3d94a7774 132 {
yasuyuki 0:6da3d94a7774 133 control.control1=0x00;
yasuyuki 0:6da3d94a7774 134 control.control2=0x20;
yasuyuki 0:6da3d94a7774 135 control.offset=0x00;
yasuyuki 0:6da3d94a7774 136 setCONTROL(control);
yasuyuki 0:6da3d94a7774 137 }
yasuyuki 0:6da3d94a7774 138
yasuyuki 0:6da3d94a7774 139