dcf routines for microbit
Fork of microbit-dcf by
dcf.h@1:f5f3ea306641, 2017-02-22 (annotated)
- Committer:
- qrti
- Date:
- Wed Feb 22 10:14:43 2017 +0000
- Revision:
- 1:f5f3ea306641
- Child:
- 3:baecb5137d1a
initial version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
qrti | 1:f5f3ea306641 | 1 | // dcf V0.1 170222 qrt@qland.de |
qrti | 1:f5f3ea306641 | 2 | |
qrti | 1:f5f3ea306641 | 3 | #ifndef _DCF_H_ |
qrti | 1:f5f3ea306641 | 4 | #define _DCF_H_ |
qrti | 1:f5f3ea306641 | 5 | |
qrti | 1:f5f3ea306641 | 6 | #include "MicroBit.h" |
qrti | 1:f5f3ea306641 | 7 | |
qrti | 1:f5f3ea306641 | 8 | #define DCF_INPUT_PIN MICROBIT_ID_IO_P16 // DCF input pin |
qrti | 1:f5f3ea306641 | 9 | #define PIN P16 // |
qrti | 1:f5f3ea306641 | 10 | |
qrti | 1:f5f3ea306641 | 11 | #define PULL PullUp // PullNone or PullUp or PullDown |
qrti | 1:f5f3ea306641 | 12 | |
qrti | 1:f5f3ea306641 | 13 | #define NEGATIVE 0 // DCF receiver signal logic |
qrti | 1:f5f3ea306641 | 14 | #define POSITIVE 1 |
qrti | 1:f5f3ea306641 | 15 | #define DCF_LOGIC POSITIVE |
qrti | 1:f5f3ea306641 | 16 | |
qrti | 1:f5f3ea306641 | 17 | #define SYNCINI (1<<0) // DCF sync init |
qrti | 1:f5f3ea306641 | 18 | #define SYNCSEC (1<<1) // second |
qrti | 1:f5f3ea306641 | 19 | #define SYNC59 (1<<2) // second 59 |
qrti | 1:f5f3ea306641 | 20 | #define SYNCDAT (1<<3) // data taken |
qrti | 1:f5f3ea306641 | 21 | #define SYNCDAV (1<<4) // verified |
qrti | 1:f5f3ea306641 | 22 | #define SYNCDAR (1<<5) // ready to take |
qrti | 1:f5f3ea306641 | 23 | |
qrti | 1:f5f3ea306641 | 24 | #define SYNCRES ~(SYNCSEC | SYNC59 | SYNCDAT | SYNCDAV | SYNCDAR) // sync restart |
qrti | 1:f5f3ea306641 | 25 | |
qrti | 1:f5f3ea306641 | 26 | class Dcf |
qrti | 1:f5f3ea306641 | 27 | { |
qrti | 1:f5f3ea306641 | 28 | public: |
qrti | 1:f5f3ea306641 | 29 | static uint8_t sec; // time |
qrti | 1:f5f3ea306641 | 30 | static uint8_t min; |
qrti | 1:f5f3ea306641 | 31 | static uint8_t hou; |
qrti | 1:f5f3ea306641 | 32 | static uint8_t day; |
qrti | 1:f5f3ea306641 | 33 | static uint8_t wday; |
qrti | 1:f5f3ea306641 | 34 | static uint8_t month; |
qrti | 1:f5f3ea306641 | 35 | static uint8_t year; |
qrti | 1:f5f3ea306641 | 36 | |
qrti | 1:f5f3ea306641 | 37 | static uint8_t status; // DCF status |
qrti | 1:f5f3ea306641 | 38 | |
qrti | 1:f5f3ea306641 | 39 | static void init(MicroBit *uBit); |
qrti | 1:f5f3ea306641 | 40 | static void receive(); |
qrti | 1:f5f3ea306641 | 41 | |
qrti | 1:f5f3ea306641 | 42 | private: |
qrti | 1:f5f3ea306641 | 43 | static MicroBit *uBit; // reference |
qrti | 1:f5f3ea306641 | 44 | |
qrti | 1:f5f3ea306641 | 45 | static uint8_t hsec; // help time |
qrti | 1:f5f3ea306641 | 46 | static uint8_t hmin; |
qrti | 1:f5f3ea306641 | 47 | static uint8_t hhou; |
qrti | 1:f5f3ea306641 | 48 | static uint8_t hday; |
qrti | 1:f5f3ea306641 | 49 | static uint8_t hwday; |
qrti | 1:f5f3ea306641 | 50 | static uint8_t hmonth; |
qrti | 1:f5f3ea306641 | 51 | static uint8_t hyear; |
qrti | 1:f5f3ea306641 | 52 | |
qrti | 1:f5f3ea306641 | 53 | static uint8_t bit; |
qrti | 1:f5f3ea306641 | 54 | static uint8_t parity; |
qrti | 1:f5f3ea306641 | 55 | |
qrti | 1:f5f3ea306641 | 56 | static uint32_t nextSec; |
qrti | 1:f5f3ea306641 | 57 | static uint32_t pulseStart; |
qrti | 1:f5f3ea306641 | 58 | static uint32_t lastStart; |
qrti | 1:f5f3ea306641 | 59 | static uint32_t pulseEnd; |
qrti | 1:f5f3ea306641 | 60 | static uint32_t dt; |
qrti | 1:f5f3ea306641 | 61 | |
qrti | 1:f5f3ea306641 | 62 | static void secPulse(MicroBitEvent e); |
qrti | 1:f5f3ea306641 | 63 | static void bitPulse(MicroBitEvent e); |
qrti | 1:f5f3ea306641 | 64 | |
qrti | 1:f5f3ea306641 | 65 | static void incTime(); |
qrti | 1:f5f3ea306641 | 66 | static uint8_t getData(); |
qrti | 1:f5f3ea306641 | 67 | static void takeData(); |
qrti | 1:f5f3ea306641 | 68 | static uint8_t verifyData(); |
qrti | 1:f5f3ea306641 | 69 | |
qrti | 1:f5f3ea306641 | 70 | static uint8_t decBin(uint8_t b); |
qrti | 1:f5f3ea306641 | 71 | // static uint8_t parity(uint8_t b); |
qrti | 1:f5f3ea306641 | 72 | }; |
qrti | 1:f5f3ea306641 | 73 | |
qrti | 1:f5f3ea306641 | 74 | #endif |