dcf routines for microbit
Fork of microbit-dcf by
dcf.h@3:baecb5137d1a, 2017-02-24 (annotated)
- Committer:
- qrti
- Date:
- Fri Feb 24 07:52:08 2017 +0000
- Revision:
- 3:baecb5137d1a
- Parent:
- 1:f5f3ea306641
- Child:
- 4:eda8c18d0564
automatic sec correction
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
qrti | 3:baecb5137d1a | 1 | // dcf V0.3 170224 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 | 3:baecb5137d1a | 38 | static uint16_t secMs; // second in system ms |
qrti | 1:f5f3ea306641 | 39 | |
qrti | 1:f5f3ea306641 | 40 | static void init(MicroBit *uBit); |
qrti | 1:f5f3ea306641 | 41 | static void receive(); |
qrti | 1:f5f3ea306641 | 42 | |
qrti | 1:f5f3ea306641 | 43 | private: |
qrti | 1:f5f3ea306641 | 44 | static MicroBit *uBit; // reference |
qrti | 1:f5f3ea306641 | 45 | |
qrti | 1:f5f3ea306641 | 46 | static uint8_t hsec; // help time |
qrti | 1:f5f3ea306641 | 47 | static uint8_t hmin; |
qrti | 1:f5f3ea306641 | 48 | static uint8_t hhou; |
qrti | 1:f5f3ea306641 | 49 | static uint8_t hday; |
qrti | 1:f5f3ea306641 | 50 | static uint8_t hwday; |
qrti | 1:f5f3ea306641 | 51 | static uint8_t hmonth; |
qrti | 1:f5f3ea306641 | 52 | static uint8_t hyear; |
qrti | 1:f5f3ea306641 | 53 | |
qrti | 1:f5f3ea306641 | 54 | static uint8_t bit; |
qrti | 1:f5f3ea306641 | 55 | static uint8_t parity; |
qrti | 1:f5f3ea306641 | 56 | |
qrti | 1:f5f3ea306641 | 57 | static uint32_t nextSec; |
qrti | 3:baecb5137d1a | 58 | static uint32_t secStart; |
qrti | 3:baecb5137d1a | 59 | static uint32_t secStartL; |
qrti | 3:baecb5137d1a | 60 | static uint32_t bitEnd; |
qrti | 3:baecb5137d1a | 61 | static uint32_t incStart; |
qrti | 3:baecb5137d1a | 62 | static uint32_t ct; |
qrti | 1:f5f3ea306641 | 63 | static uint32_t dt; |
qrti | 1:f5f3ea306641 | 64 | |
qrti | 1:f5f3ea306641 | 65 | static void secPulse(MicroBitEvent e); |
qrti | 1:f5f3ea306641 | 66 | static void bitPulse(MicroBitEvent e); |
qrti | 1:f5f3ea306641 | 67 | |
qrti | 1:f5f3ea306641 | 68 | static void incTime(); |
qrti | 1:f5f3ea306641 | 69 | static uint8_t getData(); |
qrti | 1:f5f3ea306641 | 70 | static void takeData(); |
qrti | 1:f5f3ea306641 | 71 | static uint8_t verifyData(); |
qrti | 1:f5f3ea306641 | 72 | |
qrti | 1:f5f3ea306641 | 73 | static uint8_t decBin(uint8_t b); |
qrti | 1:f5f3ea306641 | 74 | // static uint8_t parity(uint8_t b); |
qrti | 1:f5f3ea306641 | 75 | }; |
qrti | 1:f5f3ea306641 | 76 | |
qrti | 3:baecb5137d1a | 77 | #endif |