WarLord Rocks
/
RTClib
RTC DS3234 library
Fork of WDtester by
DS3234.cpp@1:7c0fa2bb38df, 2014-12-17 (annotated)
- Committer:
- duke970
- Date:
- Wed Dec 17 08:42:51 2014 +0000
- Revision:
- 1:7c0fa2bb38df
- Child:
- 2:c2e2b6238a69
This is first commit in mbed
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
duke970 | 1:7c0fa2bb38df | 1 | #include <mbed.h> |
duke970 | 1:7c0fa2bb38df | 2 | #include "DS3234.h" |
duke970 | 1:7c0fa2bb38df | 3 | |
duke970 | 1:7c0fa2bb38df | 4 | /* |
duke970 | 1:7c0fa2bb38df | 5 | The below mentioned are the bits in Read mode. |
duke970 | 1:7c0fa2bb38df | 6 | seconds 0x80 |
duke970 | 1:7c0fa2bb38df | 7 | minuntes 0x81 |
duke970 | 1:7c0fa2bb38df | 8 | hours 0x82 |
duke970 | 1:7c0fa2bb38df | 9 | day 0x83 |
duke970 | 1:7c0fa2bb38df | 10 | date 0x84 |
duke970 | 1:7c0fa2bb38df | 11 | month 0x85 |
duke970 | 1:7c0fa2bb38df | 12 | year 0x86 |
duke970 | 1:7c0fa2bb38df | 13 | */ |
duke970 | 1:7c0fa2bb38df | 14 | void DS3234_set(PinName pin, struct ts t) |
duke970 | 1:7c0fa2bb38df | 15 | { |
duke970 | 1:7c0fa2bb38df | 16 | SPI spi(PTD6, PTD7, PTD5); |
duke970 | 1:7c0fa2bb38df | 17 | |
duke970 | 1:7c0fa2bb38df | 18 | |
duke970 | 1:7c0fa2bb38df | 19 | uint8_t i, century; |
duke970 | 1:7c0fa2bb38df | 20 | |
duke970 | 1:7c0fa2bb38df | 21 | if (t.year > 2000) { |
duke970 | 1:7c0fa2bb38df | 22 | century = 0x80; |
duke970 | 1:7c0fa2bb38df | 23 | t.year_s = t.year - 2000; |
duke970 | 1:7c0fa2bb38df | 24 | } else { |
duke970 | 1:7c0fa2bb38df | 25 | century = 0; |
duke970 | 1:7c0fa2bb38df | 26 | t.year_s = t.year - 1900; |
duke970 | 1:7c0fa2bb38df | 27 | } |
duke970 | 1:7c0fa2bb38df | 28 | |
duke970 | 1:7c0fa2bb38df | 29 | uint8_t TimeDate[7] = { t.sec, t.min, t.hour, t.wday, t.mday, t.mon, t.year_s }; |
duke970 | 1:7c0fa2bb38df | 30 | for (i = 0; i <= 6; i++) { |
duke970 | 1:7c0fa2bb38df | 31 | DigitalOut cs(pin); |
duke970 | 1:7c0fa2bb38df | 32 | |
duke970 | 1:7c0fa2bb38df | 33 | spi.write(i + 0x80); |
duke970 | 1:7c0fa2bb38df | 34 | if (i == 5) |
duke970 | 1:7c0fa2bb38df | 35 | spi.write(dectobcd(TimeDate[5]) + century); |
duke970 | 1:7c0fa2bb38df | 36 | else |
duke970 | 1:7c0fa2bb38df | 37 | spi.write(dectobcd(TimeDate[i])); |
duke970 | 1:7c0fa2bb38df | 38 | cs.write(1); |
duke970 | 1:7c0fa2bb38df | 39 | } |
duke970 | 1:7c0fa2bb38df | 40 | } |
duke970 | 1:7c0fa2bb38df | 41 | |
duke970 | 1:7c0fa2bb38df | 42 | |
duke970 | 1:7c0fa2bb38df | 43 | uint8_t dectobcd(const uint8_t val) |
duke970 | 1:7c0fa2bb38df | 44 | { |
duke970 | 1:7c0fa2bb38df | 45 | return ((val / 10 * 16) + (val % 10)); |
duke970 | 1:7c0fa2bb38df | 46 | } |
duke970 | 1:7c0fa2bb38df | 47 | |
duke970 | 1:7c0fa2bb38df | 48 | uint8_t bcdtodec(const uint8_t val) |
duke970 | 1:7c0fa2bb38df | 49 | { |
duke970 | 1:7c0fa2bb38df | 50 | return ((val / 16 * 10) + (val % 16)); |
duke970 | 1:7c0fa2bb38df | 51 | } |
duke970 | 1:7c0fa2bb38df | 52 |