Andrew Boyson
/
iot
Backing up an unused program in case of future need
time.cpp@6:be97d38e0b01, 2016-05-31 (annotated)
- Committer:
- andrewboyson
- Date:
- Tue May 31 07:35:28 2016 +0000
- Revision:
- 6:be97d38e0b01
- Parent:
- 2:06fa34661f19
- Child:
- 7:024ace6d943c
Moved to wait_us for delays below 100us and timer.read_us above. This replaced interrupts which worked but tended to be unreliable.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
andrewboyson | 0:09f915e6f9f6 | 1 | #include "mbed.h" |
andrewboyson | 0:09f915e6f9f6 | 2 | #define ONE_MILLION 1000000 |
andrewboyson | 0:09f915e6f9f6 | 3 | |
andrewboyson | 6:be97d38e0b01 | 4 | static Ticker ticker; |
andrewboyson | 6:be97d38e0b01 | 5 | static volatile uint64_t unixTime16ths; |
andrewboyson | 0:09f915e6f9f6 | 6 | static void tick(void) |
andrewboyson | 0:09f915e6f9f6 | 7 | { |
andrewboyson | 0:09f915e6f9f6 | 8 | unixTime16ths++; |
andrewboyson | 0:09f915e6f9f6 | 9 | } |
andrewboyson | 0:09f915e6f9f6 | 10 | void TimeSet(uint32_t t) |
andrewboyson | 0:09f915e6f9f6 | 11 | { |
andrewboyson | 0:09f915e6f9f6 | 12 | unixTime16ths = (uint64_t)t << 4; |
andrewboyson | 0:09f915e6f9f6 | 13 | } |
andrewboyson | 0:09f915e6f9f6 | 14 | uint32_t TimeGet() |
andrewboyson | 0:09f915e6f9f6 | 15 | { |
andrewboyson | 0:09f915e6f9f6 | 16 | return unixTime16ths >> 4; |
andrewboyson | 0:09f915e6f9f6 | 17 | } |
andrewboyson | 0:09f915e6f9f6 | 18 | void TimeSet16ths(uint64_t t) |
andrewboyson | 0:09f915e6f9f6 | 19 | { |
andrewboyson | 0:09f915e6f9f6 | 20 | unixTime16ths = t; |
andrewboyson | 0:09f915e6f9f6 | 21 | } |
andrewboyson | 0:09f915e6f9f6 | 22 | uint64_t TimeGet16ths() |
andrewboyson | 0:09f915e6f9f6 | 23 | { |
andrewboyson | 0:09f915e6f9f6 | 24 | return unixTime16ths; |
andrewboyson | 6:be97d38e0b01 | 25 | } |
andrewboyson | 6:be97d38e0b01 | 26 | static Timer timer; |
andrewboyson | 6:be97d38e0b01 | 27 | int TimeScanUs = 0; |
andrewboyson | 6:be97d38e0b01 | 28 | int TimeMain() |
andrewboyson | 6:be97d38e0b01 | 29 | { |
andrewboyson | 6:be97d38e0b01 | 30 | int scanUs = timer.read_us(); |
andrewboyson | 6:be97d38e0b01 | 31 | timer.reset(); |
andrewboyson | 6:be97d38e0b01 | 32 | timer.start(); |
andrewboyson | 6:be97d38e0b01 | 33 | if (scanUs > TimeScanUs) TimeScanUs++; |
andrewboyson | 6:be97d38e0b01 | 34 | if (scanUs < TimeScanUs) TimeScanUs--; |
andrewboyson | 6:be97d38e0b01 | 35 | return 0; |
andrewboyson | 6:be97d38e0b01 | 36 | } |
andrewboyson | 6:be97d38e0b01 | 37 | int TimeInit() |
andrewboyson | 6:be97d38e0b01 | 38 | { |
andrewboyson | 6:be97d38e0b01 | 39 | ticker.attach_us(&tick, ONE_MILLION >> 4); |
andrewboyson | 6:be97d38e0b01 | 40 | timer.stop(); |
andrewboyson | 6:be97d38e0b01 | 41 | timer.reset(); |
andrewboyson | 6:be97d38e0b01 | 42 | return 0; |
andrewboyson | 6:be97d38e0b01 | 43 | } |