main/task_dcf.c

Sat, 21 Oct 2023 16:22:20 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 21 Oct 2023 16:22:20 +0200
changeset 4
426defedd402
parent 3
849ca14d4a2f
child 5
676c38f52d08
permissions
-rw-r--r--

Added 77.5 KHz signal generation

1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
1 /**
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
2 * @file task_dcf.c
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
3 * @brief DCF77 task.
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
4 */
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
5
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
6
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
7 #include "dcf77tx.h"
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
8
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
9
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
10 static const char *TAG = "task_dcf";
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
11
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
12
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
13 SemaphoreHandle_t xSemaphoreDCF = NULL; ///< Semaphore DCF task.
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
14 EventGroupHandle_t xEventGroupDCF; ///< Events DCF task.
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
15 DCF_State *dcf_state = NULL; ///< Public state for other tasks.
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
16 esp_timer_handle_t timerHandle; ///< Timer handler
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
17 int impulseCount = 0; ///< 100 mSec transmit slices.
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
18 int8_t impulseArray[61]; ///< Pulses, 0 = no pulse, 1=100ms, 2=200ms
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
19 int actualSecond = 0; ///< Current second to transmit.
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
20 time_t dcf_now; ///< Current time to send.
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
21 struct tm dcf_tm; ///< Local broken down time.
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
22
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
23
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
24 ledc_timer_config_t ledc_timer = {
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
25 .speed_mode = LEDC_LOW_SPEED_MODE, ///< Use high speed timer
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
26 .timer_num = LEDC_TIMER_0, ///< Timer 0
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
27 .duty_resolution = LEDC_TIMER_10_BIT, ///< 10 bits resolution
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
28 .freq_hz = 77500, ///< 77.5 KHz
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
29 .clk_cfg = LEDC_AUTO_CLK ///< Auto select PWM clock
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
30 };
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
31
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
32 ledc_channel_config_t dcf77_100tx = { ///< 100% Antenna power
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
33 .channel = LEDC_CHANNEL_0,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
34 .duty = 0, ///< Default 0%
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
35 .gpio_num = CONFIG_ANTENNA_100_PIN, ///< Antenna pin 100%
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
36 .speed_mode = LEDC_LOW_SPEED_MODE,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
37 .hpoint = 0,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
38 .intr_type = LEDC_INTR_DISABLE,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
39 .timer_sel = LEDC_TIMER_0 ///< Timer 0
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
40 };
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
41 ledc_channel_config_t dcf77_15tx = { ///< 15% Antenna power
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
42 .channel = LEDC_CHANNEL_1,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
43 .duty = 0,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
44 .gpio_num = CONFIG_ANTENNA_15_PIN, ///< Antenna pin 15%
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
45 .speed_mode = LEDC_LOW_SPEED_MODE,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
46 .hpoint = 0,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
47 .intr_type = LEDC_INTR_DISABLE,
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
48 .timer_sel = LEDC_TIMER_0 ///< Timer 0
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
49 };
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
50
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
51
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
52 extern bool System_TimeOk;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
53
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
54
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
55 #define LED1 CONFIG_LED1_PIN
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
56 #define LED2 CONFIG_LED2_PIN
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
57
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
58
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
59 const int TASK_DCF_REQUEST_START = BIT0;
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
60 const int TASK_DCF_REQUEST_STOP = BIT1;
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
61
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
62 const int TASK_DCF_RUN = BIT2;
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
63
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
64
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
65 bool ready_DCF(void)
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
66 {
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
67 return dcf_state->DCF_running;
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
68 }
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
69
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
70
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
71
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
72 void request_DCF(bool run)
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
73 {
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
74 ESP_LOGI(TAG, "request_DCF(%s)", run ? "start":"stop");
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
75
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
76 if (run)
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
77 xEventGroupSetBits(xEventGroupDCF, TASK_DCF_REQUEST_START);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
78 else
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
79 xEventGroupSetBits(xEventGroupDCF, TASK_DCF_REQUEST_STOP);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
80 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
81
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
82
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
83 int bin2bcd(int data)
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
84 {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
85 int msb, lsb;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
86
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
87 if (data < 10)
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
88 return data;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
89 msb = (data / 10) << 4;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
90 lsb = data % 10;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
91 return msb + lsb;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
92 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
93
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
94
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
95 static void DCFout(void* arg);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
96 void DCFout(void* arg)
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
97 {
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
98 int i;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
99 static int tmp, tmpin, parity = 0;
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
100
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
101 switch (impulseCount++) {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
102 case 0: if (actualSecond == 0) {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
103 time(&dcf_now);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
104 dcf_now += 60;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
105 }
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
106 /* Carrier to 15% */
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
107 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
108 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
109 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1, 512);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
110 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1);
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
111 if (impulseArray[actualSecond] == 1) {
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
112 gpio_set_level(CONFIG_LED1_PIN, 1);
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
113 } else if (impulseArray[actualSecond] == 2) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
114 gpio_set_level(CONFIG_LED2_PIN, 1);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
115 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
116 break;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
117 case 1: if (impulseArray[actualSecond] == 1) {
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
118 /* Carrier back to 100% */
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
119 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 512);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
120 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
121 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1, 0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
122 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
123 gpio_set_level(CONFIG_LED1_PIN, 0);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
124 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
125 break;
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
126 case 2: /* Carrier back to 100% */
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
127 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 512);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
128 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
129 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1, 0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
130 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
131 gpio_set_level(CONFIG_LED1_PIN, 0);
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
132 gpio_set_level(CONFIG_LED2_PIN, 0);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
133 break;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
134 case 9: impulseCount = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
135 /*
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
136 * To spread the CPU load, we set all bits during the first seconds
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
137 * because we don't use these bits.
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
138 */
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
139 switch (actualSecond) {
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
140 case 0: /*
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
141 * Bit 0 is always 0.
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
142 * Bits 1..14 are used to transmit weather information.
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
143 * Just some fixed values here.
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
144 * Bit 15, Antenna bit. 0 = normal operation, 1 = fault
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
145 */
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
146 for (i = 0; i < 16; i++)
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
147 impulseArray[i] = 1;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
148 break;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
149 case 1: localtime_r(&dcf_now, &dcf_tm);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
150 char strftime_buf[64];
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
151 strftime(strftime_buf, sizeof(strftime_buf), "%c", &dcf_tm);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
152 ESP_LOGI(TAG, "The current date/time to send is: %s", strftime_buf);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
153 break;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
154 case 2: /* DST bits */
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
155 if (dcf_tm.tm_isdst == 0) {
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
156 impulseArray[17] = 1; /* Set when DST is in effect. */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
157 impulseArray[18] = 2; /* Set when DST is not in effect. */
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
158 } else {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
159 impulseArray[17] = 2;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
160 impulseArray[18] = 1;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
161 }
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
162 /* Start of encoded time. Always set */
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
163 impulseArray[20] = 2;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
164 break;
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
165 case 3: /* announce DST on-off bit 16 */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
166 int month = dcf_tm.tm_mon + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
167 bool announce = false;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
168 if (dcf_tm.tm_mday >= 25 || dcf_tm.tm_wday == 0) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
169 /* Last sunday in the month */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
170 if (month == 3) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
171 if (dcf_tm.tm_isdst == 0 && dcf_tm.tm_hour == 1 && dcf_tm.tm_min != 0) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
172 announce = true; /* Wintertime to summertime */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
173 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
174 } else if (month == 10) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
175 if (dcf_tm.tm_isdst > 0 && dcf_tm.tm_hour == 1 && dcf_tm.tm_min != 0) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
176 announce = true; /* Summertime to wintertime */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
177 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
178 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
179 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
180 ESP_LOGI(TAG, "%d announce TZ change %s", dcf_tm.tm_isdst, announce ? "true":"false");
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
181 impulseArray[16] = (announce) ? 2:1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
182 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
183 case 4: /*
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
184 * We don't announce the leap second. It is not always sure when this will
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
185 * happen, possible at end of 2023, but it is not sure. And the next?
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
186 * SNTP timesync will deal with this and we will see a timejump.
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
187 */
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
188 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
189 case 5: tmpin = bin2bcd(dcf_tm.tm_min);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
190 parity = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
191 for (i = 21; i < 28; i++) {
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
192 tmp = tmpin & 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
193 impulseArray[i] = tmp + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
194 parity += tmp;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
195 tmpin >>= 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
196 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
197 impulseArray[28] = (parity & 1) ? 2:1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
198 ESP_LOGI(TAG, "minute %d%d%d%d%d%d%d P1 %d", impulseArray[21], impulseArray[22], impulseArray[23],
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
199 impulseArray[24], impulseArray[25], impulseArray[26], impulseArray[27], impulseArray[28]);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
200 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
201 case 6: tmpin = bin2bcd(dcf_tm.tm_hour);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
202 parity = 0;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
203 for (i = 29; i < 35; i++) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
204 tmp = tmpin & 1;
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
205 impulseArray[i] = tmp + 1;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
206 parity += tmp;
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
207 tmpin >>= 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
208 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
209 impulseArray[35] = (parity & 1) ? 2:1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
210 ESP_LOGI(TAG, "hour %d%d%d%d%d%d P2 %d", impulseArray[29], impulseArray[30], impulseArray[31],
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
211 impulseArray[32], impulseArray[33], impulseArray[34], impulseArray[35]);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
212 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
213 case 7: tmpin = bin2bcd(dcf_tm.tm_mday);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
214 parity = 0;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
215 for (i = 36; i < 42; i++) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
216 tmp = tmpin & 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
217 impulseArray[i] = tmp + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
218 parity += tmp;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
219 tmpin >>= 1;
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
220 }
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
221 ESP_LOGI(TAG, "mday %d%d%d%d%d%d", impulseArray[36], impulseArray[37], impulseArray[38],
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
222 impulseArray[39], impulseArray[40], impulseArray[41]);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
223 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
224 case 8: tmpin = bin2bcd(dcf_tm.tm_wday);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
225 if (tmpin == 0)
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
226 tmpin = 7;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
227 for (i = 42; i < 45; i++) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
228 tmp = tmpin & 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
229 impulseArray[i] = tmp + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
230 parity += tmp;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
231 tmpin >>= 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
232 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
233 ESP_LOGI(TAG, "wday %d%d%d", impulseArray[42], impulseArray[43], impulseArray[44]);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
234 break;
3
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
235 case 9: tmpin = bin2bcd(dcf_tm.tm_mon + 1);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
236 for (i = 45; i < 50; i++) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
237 tmp = tmpin & 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
238 impulseArray[i] = tmp + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
239 parity += tmp;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
240 tmpin >>= 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
241 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
242 ESP_LOGI(TAG, "month %d%d%d%d%d", impulseArray[45], impulseArray[46], impulseArray[47],
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
243 impulseArray[48], impulseArray[49]);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
244 break;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
245 case 10: tmpin = bin2bcd(dcf_tm.tm_year - 100);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
246 for (int i = 50; i < 58; i++) {
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
247 tmp = tmpin & 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
248 impulseArray[i] = tmp + 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
249 parity += tmp;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
250 tmpin >>= 1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
251 }
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
252 impulseArray[58] = (parity & 1) ? 2:1;
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
253 ESP_LOGI(TAG, "year %d%d%d%d%d%d%d%d P3 %d", impulseArray[50], impulseArray[51], impulseArray[52],
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
254 impulseArray[53], impulseArray[54], impulseArray[55], impulseArray[56], impulseArray[57], impulseArray[58]);
849ca14d4a2f Finished coding second bits.
Michiel Broek <mbroek@mbse.eu>
parents: 2
diff changeset
255 break;
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
256 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
257 if (actualSecond < 59) /* Can include leap second */
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
258 actualSecond++;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
259 break;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
260 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
261
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
262 if (actualSecond >= 59) {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
263 time_t now = time(NULL);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
264 localtime_r(&now, &dcf_tm);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
265 if (dcf_tm.tm_sec == 0) {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
266 actualSecond = impulseCount = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
267 }
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
268 }
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
269 }
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
270
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
271
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
272
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
273 void task_DCF(void *pvParameters)
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
274 {
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
275 ESP_LOGI(TAG, "Starting DCF77");
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
276
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
277 xEventGroupDCF = xEventGroupCreate();
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
278 xSemaphoreDCF = xSemaphoreCreateMutex();
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
279 dcf_state = malloc(sizeof(DCF_State));
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
280 memset(dcf_state, 0x00, sizeof(DCF_State));
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
281
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
282 gpio_reset_pin(LED1);
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
283 gpio_reset_pin(LED2);
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
284 gpio_set_direction(LED1, GPIO_MODE_OUTPUT);
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
285 gpio_set_direction(LED2, GPIO_MODE_OUTPUT);
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
286
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
287 esp_timer_create_args_t timerDCF = {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
288 .callback = &DCFout,
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
289 .name = "DCF timer"
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
290 };
4
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
291 ESP_ERROR_CHECK(esp_timer_create(&timerDCF, &timerHandle));
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
292
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
293 /*
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
294 * Prepare the LEDC PWM channels
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
295 */
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
296 ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
297 ESP_ERROR_CHECK(ledc_channel_config(&dcf77_100tx));
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
298 ESP_ERROR_CHECK(ledc_channel_config(&dcf77_15tx));
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
299 ESP_LOGI(TAG, "DCF77 antennas at pins %d and %d", CONFIG_ANTENNA_100_PIN, CONFIG_ANTENNA_15_PIN);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
300 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, 0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
301 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
302 ledc_set_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1, 0);
426defedd402 Added 77.5 KHz signal generation
Michiel Broek <mbroek@mbse.eu>
parents: 3
diff changeset
303 ledc_update_duty(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_1);
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
304
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
305 for (int i = 0; i < 59; i++)
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
306 impulseArray[i] = 1;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
307 impulseArray[59] = impulseArray[60] = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
308
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
309 xEventGroupClearBits(xEventGroupDCF, TASK_DCF_RUN);
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
310 EventBits_t uxBits;
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
311
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
312 for (;;) {
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
313 uxBits = xEventGroupWaitBits(xEventGroupDCF, TASK_DCF_REQUEST_START | TASK_DCF_REQUEST_STOP, pdFALSE, pdFALSE, portMAX_DELAY );
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
314
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
315 if (uxBits & TASK_DCF_REQUEST_START) {
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
316 if (dcf_state->DCF_running) {
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
317 /* Already running */
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
318 } else {
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
319 actualSecond = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
320 impulseCount = 0;
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
321 esp_timer_start_periodic(timerHandle, 100000);
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
322 dcf_state->DCF_running = true;
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
323 }
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
324 xEventGroupClearBits(xEventGroupDCF, TASK_DCF_REQUEST_START);
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
325
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
326 } else if (uxBits & TASK_DCF_REQUEST_STOP) {
2
053649608c09 Begin coding transmit bits.
Michiel Broek <mbroek@mbse.eu>
parents: 1
diff changeset
327 esp_timer_stop(timerHandle);
1
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
328 }
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
329 } /* for(;;) */
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
330 }
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
331
86b275481021 Added framework for the DCF77 transmitter. Added two debug LEDs.
Michiel Broek <mbroek@mbse.eu>
parents:
diff changeset
332

mercurial