if482.cpp: comments added
This commit is contained in:
parent
95521641ac
commit
bf1d8ab1d4
@ -1,7 +1,19 @@
|
|||||||
#if defined HAS_IF482 && defined HAS_RTC
|
#if defined HAS_IF482 && defined HAS_RTC
|
||||||
|
|
||||||
/*
|
/* NOTE:
|
||||||
|
The IF482 Generator needs an high precise 1 Hz clock signal which cannot be
|
||||||
|
acquired in suitable precision on the ESP32 SoC itself. Additional clocking
|
||||||
|
hardware is required, ususally the clock signal is generated by external RTC or
|
||||||
|
GPS chip or a GPS chip which can generate a precise clock signal (+/- 2ppm). In
|
||||||
|
this example code we use a Maxim DS3231 RTC chip, and configure it's interrupt
|
||||||
|
output as clock output. The clock signal triggers an interrupt on the ESP32,
|
||||||
|
which controls the realtime output of IF482 telegram. This is why code in
|
||||||
|
IF482.cpp depends on code in RTCTIME.cpp.
|
||||||
|
*/
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
IF482 Generator to control clocks with IF482 telegram input (e.g. BÜRK BU190)
|
IF482 Generator to control clocks with IF482 telegram input (e.g. BÜRK BU190)
|
||||||
|
|
||||||
Example IF482 telegram: "OAL160806F170400"
|
Example IF482 telegram: "OAL160806F170400"
|
||||||
@ -63,6 +75,7 @@ L: Local Time
|
|||||||
not evaluated by model BU-190
|
not evaluated by model BU-190
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "if482.h"
|
#include "if482.h"
|
||||||
|
|
||||||
@ -79,7 +92,7 @@ int if482_init(void) {
|
|||||||
// open serial interface
|
// open serial interface
|
||||||
IF482.begin(HAS_IF482);
|
IF482.begin(HAS_IF482);
|
||||||
|
|
||||||
// use rtc 1Hz clock for triggering IF482 telegram send
|
// use external rtc 1Hz clock for triggering IF482 telegram
|
||||||
Rtc.SetSquareWavePinClockFrequency(DS3231SquareWaveClock_1Hz);
|
Rtc.SetSquareWavePinClockFrequency(DS3231SquareWaveClock_1Hz);
|
||||||
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeClock);
|
Rtc.SetSquareWavePin(DS3231SquareWavePin_ModeClock);
|
||||||
pinMode(RTC_INT, INPUT_PULLUP);
|
pinMode(RTC_INT, INPUT_PULLUP);
|
||||||
@ -124,7 +137,7 @@ void if482_loop(void *pvParameters) {
|
|||||||
time_t t, tt;
|
time_t t, tt;
|
||||||
const TickType_t shotTime = pdMS_TO_TICKS(IF482_OFFSET);
|
const TickType_t shotTime = pdMS_TO_TICKS(IF482_OFFSET);
|
||||||
|
|
||||||
// wait until begin of a new second
|
// wait until begin of a new second to sync clock signal and absolute time
|
||||||
t = tt = now();
|
t = tt = now();
|
||||||
do {
|
do {
|
||||||
tt = now();
|
tt = now();
|
||||||
@ -146,7 +159,7 @@ void if482_loop(void *pvParameters) {
|
|||||||
// now we're synced to start of second t and wait
|
// now we're synced to start of second t and wait
|
||||||
// until it's time to start transmit telegram for t+1
|
// until it's time to start transmit telegram for t+1
|
||||||
vTaskDelayUntil(&wakeTime, shotTime);
|
vTaskDelayUntil(&wakeTime, shotTime);
|
||||||
IF482.print(if482Telegram(t+1));
|
IF482.print(if482Telegram(t + 1));
|
||||||
}
|
}
|
||||||
vTaskDelete(IF482Task); // shoud never be reached
|
vTaskDelete(IF482Task); // shoud never be reached
|
||||||
} // if482_loop()
|
} // if482_loop()
|
||||||
|
Loading…
Reference in New Issue
Block a user