counter measuring correctly
This commit is contained in:
@ -18,7 +18,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
static const char *TAG = "app";
|
// static const char *TAG = "app";
|
||||||
|
|
||||||
void deviceInit() {
|
void deviceInit() {
|
||||||
/* Initialize NVS partition */
|
/* Initialize NVS partition */
|
||||||
|
@ -26,10 +26,11 @@ static void counterSecondTask(void *arg) {
|
|||||||
static void counterZeroCrossingAveragerTask(void *arg) {
|
static void counterZeroCrossingAveragerTask(void *arg) {
|
||||||
uint64_t counterCnt = 0;
|
uint64_t counterCnt = 0;
|
||||||
uint64_t counterSum = 0;
|
uint64_t counterSum = 0;
|
||||||
|
uint64_t savedCounterValue = 0;
|
||||||
while (1) {
|
while (1) {
|
||||||
uint64_t counterCurrentValue;
|
uint64_t currentCounterValue;
|
||||||
xQueueReceive(zeroCrossingQueue, &counterCurrentValue, portMAX_DELAY);
|
xQueueReceive(zeroCrossingQueue, ¤tCounterValue, portMAX_DELAY);
|
||||||
if (counterCurrentValue == QUEUE_MARKER) {
|
if (currentCounterValue == QUEUE_MARKER) {
|
||||||
if (counterCnt > 0) {
|
if (counterCnt > 0) {
|
||||||
uint32_t counterSecondAverage = ((uint32_t)(counterSum)) / ((uint32_t)(counterCnt));
|
uint32_t counterSecondAverage = ((uint32_t)(counterSum)) / ((uint32_t)(counterCnt));
|
||||||
ESP_LOGI(TAG, "%u %u %u", (uint32_t)counterCnt, (uint32_t)counterSum, counterSecondAverage);
|
ESP_LOGI(TAG, "%u %u %u", (uint32_t)counterCnt, (uint32_t)counterSum, counterSecondAverage);
|
||||||
@ -39,8 +40,12 @@ static void counterZeroCrossingAveragerTask(void *arg) {
|
|||||||
counterCnt = 0;
|
counterCnt = 0;
|
||||||
counterSum = 0;
|
counterSum = 0;
|
||||||
} else {
|
} else {
|
||||||
|
uint64_t period = (savedCounterValue < currentCounterValue) ?
|
||||||
|
(currentCounterValue - savedCounterValue) :
|
||||||
|
((UINT64_MAX - savedCounterValue) + currentCounterValue);
|
||||||
|
savedCounterValue = currentCounterValue;
|
||||||
counterCnt += 1;
|
counterCnt += 1;
|
||||||
counterSum += counterCurrentValue;
|
counterSum += period;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user