RX8025 library
Dependents: mbed_RX8025 MAPLEminiA MAPLEminiA
See https://developer.mbed.org/users/yasuyuki/notebook/RX8025/
RX8025.cpp@0:6da3d94a7774, 2014-11-08 (annotated)
- Committer:
- yasuyuki
- Date:
- Sat Nov 08 12:19:28 2014 +0000
- Revision:
- 0:6da3d94a7774
release
Who changed what in which revision?
User | Revision | Line number | New 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 |