![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Backing up an unused program in case of future need
extrtc.cpp@8:45a0205a298f, 2018-12-06 (annotated)
- Committer:
- andrewboyson
- Date:
- Thu Dec 06 11:40:19 2018 +0000
- Revision:
- 8:45a0205a298f
Backing up
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewboyson | 8:45a0205a298f | 1 | #include "mbed.h" |
andrewboyson | 8:45a0205a298f | 2 | |
andrewboyson | 8:45a0205a298f | 3 | static SPI device(p5, p6, p7); // mosi, miso, sclk |
andrewboyson | 8:45a0205a298f | 4 | static DigitalOut cs(p8, 1); // ssel |
andrewboyson | 8:45a0205a298f | 5 | |
andrewboyson | 8:45a0205a298f | 6 | /* |
andrewboyson | 8:45a0205a298f | 7 | | BIT 7 | BIT 6 | BIT 5 | BIT 4 | BIT 3 | BIT 2 | BIT 1 | BIT 0 | |
andrewboyson | 8:45a0205a298f | 8 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 9 | | - | 10 Seconds | Seconds | 00–59 |
andrewboyson | 8:45a0205a298f | 10 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 11 | | - | 10 Minutes | Minutes | 00–59 |
andrewboyson | 8:45a0205a298f | 12 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 13 | | - | - | 10 Hours | Hours | 00-23 |
andrewboyson | 8:45a0205a298f | 14 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 15 | | - | - | - | - | - | Weekday | 1-7 |
andrewboyson | 8:45a0205a298f | 16 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 17 | | - | - | 10 Days | Days | 01-31 |
andrewboyson | 8:45a0205a298f | 18 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 19 | |Century| - | - | 10 Mo | Months | 01-12 |
andrewboyson | 8:45a0205a298f | 20 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 21 | | 10 Years | Years | 00-99 |
andrewboyson | 8:45a0205a298f | 22 | +-------+-------+-------+-------+-------+-------+-------+-------+ |
andrewboyson | 8:45a0205a298f | 23 | */ |
andrewboyson | 8:45a0205a298f | 24 | static char bcdToInt(char bcd) |
andrewboyson | 8:45a0205a298f | 25 | { |
andrewboyson | 8:45a0205a298f | 26 | return 0; |
andrewboyson | 8:45a0205a298f | 27 | } |
andrewboyson | 8:45a0205a298f | 28 | static char intToBcd(char i) |
andrewboyson | 8:45a0205a298f | 29 | { |
andrewboyson | 8:45a0205a298f | 30 | return 0; |
andrewboyson | 8:45a0205a298f | 31 | } |
andrewboyson | 8:45a0205a298f | 32 | void ExtRtcSet(struct tm *ptm) |
andrewboyson | 8:45a0205a298f | 33 | { |
andrewboyson | 8:45a0205a298f | 34 | char bcd; |
andrewboyson | 8:45a0205a298f | 35 | cs = 0; |
andrewboyson | 8:45a0205a298f | 36 | device.write(0x80); //Send address 00h |
andrewboyson | 8:45a0205a298f | 37 | bcd = intToBcd(ptm->tm_sec ); device.write(bcd); |
andrewboyson | 8:45a0205a298f | 38 | bcd = intToBcd(ptm->tm_min ); device.write(bcd); |
andrewboyson | 8:45a0205a298f | 39 | bcd = intToBcd(ptm->tm_hour); device.write(bcd); |
andrewboyson | 8:45a0205a298f | 40 | bcd = ptm->tm_wday; device.write(bcd); |
andrewboyson | 8:45a0205a298f | 41 | bcd = intToBcd(ptm->tm_mday); device.write(bcd); |
andrewboyson | 8:45a0205a298f | 42 | int year = ptm->tm_year; |
andrewboyson | 8:45a0205a298f | 43 | bcd = intToBcd(ptm->tm_mon); |
andrewboyson | 8:45a0205a298f | 44 | if (year > 99) bcd |= 0x80; |
andrewboyson | 8:45a0205a298f | 45 | device.write(bcd); |
andrewboyson | 8:45a0205a298f | 46 | if (year > 99) year -=100; |
andrewboyson | 8:45a0205a298f | 47 | bcd = intToBcd(year); |
andrewboyson | 8:45a0205a298f | 48 | device.write(bcd); |
andrewboyson | 8:45a0205a298f | 49 | cs = 1; |
andrewboyson | 8:45a0205a298f | 50 | } |
andrewboyson | 8:45a0205a298f | 51 | void ExtRtcGet(struct tm *ptm) |
andrewboyson | 8:45a0205a298f | 52 | { |
andrewboyson | 8:45a0205a298f | 53 | char bcd; |
andrewboyson | 8:45a0205a298f | 54 | cs = 0; |
andrewboyson | 8:45a0205a298f | 55 | device.write(0x00); //Send address 00h |
andrewboyson | 8:45a0205a298f | 56 | bcd = device.write(0xFF); ptm->tm_sec = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 57 | bcd = device.write(0xFF); ptm->tm_min = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 58 | bcd = device.write(0xFF); ptm->tm_hour = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 59 | bcd = device.write(0xFF); ptm->tm_wday = bcd; |
andrewboyson | 8:45a0205a298f | 60 | bcd = device.write(0xFF); ptm->tm_mday = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 61 | bcd = device.write(0xFF); |
andrewboyson | 8:45a0205a298f | 62 | int century = bcd & 0x80; |
andrewboyson | 8:45a0205a298f | 63 | bcd &= 0x7F; |
andrewboyson | 8:45a0205a298f | 64 | ptm->tm_mon = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 65 | bcd = device.write(0xFF); |
andrewboyson | 8:45a0205a298f | 66 | ptm->tm_year = bcdToInt(bcd); |
andrewboyson | 8:45a0205a298f | 67 | if (century) ptm->tm_year += 100; |
andrewboyson | 8:45a0205a298f | 68 | cs = 1; |
andrewboyson | 8:45a0205a298f | 69 | } |
andrewboyson | 8:45a0205a298f | 70 | |
andrewboyson | 8:45a0205a298f | 71 | int ExtRtcMain() |
andrewboyson | 8:45a0205a298f | 72 | { |
andrewboyson | 8:45a0205a298f | 73 | return 0; |
andrewboyson | 8:45a0205a298f | 74 | } |
andrewboyson | 8:45a0205a298f | 75 | int ExtRtcInit() |
andrewboyson | 8:45a0205a298f | 76 | { |
andrewboyson | 8:45a0205a298f | 77 | cs = 1; |
andrewboyson | 8:45a0205a298f | 78 | device.format(8, 1); |
andrewboyson | 8:45a0205a298f | 79 | device.frequency(1000000); |
andrewboyson | 8:45a0205a298f | 80 | return 0; |
andrewboyson | 8:45a0205a298f | 81 | } |