diff --git a/src/main/app_main.c b/src/main/app_main.c index e5b3581..bb9c0f1 100644 --- a/src/main/app_main.c +++ b/src/main/app_main.c @@ -18,7 +18,7 @@ -static const char *TAG = "app"; +// static const char *TAG = "app"; void deviceInit() { /* Initialize NVS partition */ diff --git a/src/main/counter.c b/src/main/counter.c index 07a9e95..b18c59c 100644 --- a/src/main/counter.c +++ b/src/main/counter.c @@ -26,10 +26,11 @@ static void counterSecondTask(void *arg) { static void counterZeroCrossingAveragerTask(void *arg) { uint64_t counterCnt = 0; uint64_t counterSum = 0; + uint64_t savedCounterValue = 0; while (1) { - uint64_t counterCurrentValue; - xQueueReceive(zeroCrossingQueue, &counterCurrentValue, portMAX_DELAY); - if (counterCurrentValue == QUEUE_MARKER) { + uint64_t currentCounterValue; + xQueueReceive(zeroCrossingQueue, ¤tCounterValue, portMAX_DELAY); + if (currentCounterValue == QUEUE_MARKER) { if (counterCnt > 0) { uint32_t counterSecondAverage = ((uint32_t)(counterSum)) / ((uint32_t)(counterCnt)); ESP_LOGI(TAG, "%u %u %u", (uint32_t)counterCnt, (uint32_t)counterSum, counterSecondAverage); @@ -39,8 +40,12 @@ static void counterZeroCrossingAveragerTask(void *arg) { counterCnt = 0; counterSum = 0; } else { + uint64_t period = (savedCounterValue < currentCounterValue) ? + (currentCounterValue - savedCounterValue) : + ((UINT64_MAX - savedCounterValue) + currentCounterValue); + savedCounterValue = currentCounterValue; counterCnt += 1; - counterSum += counterCurrentValue; + counterSum += period; } } }