From d84082f147020ba8e1916de522105e64bba30548 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Sun, 9 Oct 2016 17:04:42 +0200 Subject: [PATCH] option bytes watchdog option read --- main.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index 90c2dd4..70eadfa 100644 --- a/main.c +++ b/main.c @@ -36,6 +36,7 @@ #include // real time clock utilities #include // independent watchdog utilities #include // debug utilities +#include // flash utilities /* own libraries */ #include "global.h" // board definitions @@ -252,7 +253,6 @@ void main(void) printf("setup PZEM-004 electricity meter: "); sensor_pzem_setup(); // setup PZEM electricity meter printf("OK\n"); - sensor_pzem_measurement_request(0xc0a80101, SENSOR_PZEM_VOLTAGE); // setup SDM120 electricity meter printf("setup SDM120 electricity meter: "); @@ -276,8 +276,15 @@ void main(void) iwdg_set_period_ms(WATCHDOG_PERIOD); // set independent watchdog period iwdg_start(); // start independent watchdog printf("OK\n"); + if (FLASH_OBR&FLASH_OBR_OPTERR) { + printf("option bytes not set in flash: software wachtdog used (not started at reset)\n"); + } else if (FLASH_OBR&FLASH_OBR_WDG_SW) { + printf("software wachtdog used (not started at reset)\n"); + } else { + printf("hardware wachtdog used (started at reset)\n"); + } #endif - + // send HTTP POST request printf("making HTTP request: "); char line[256] = {0}; // measurement line to send @@ -298,6 +305,11 @@ void main(void) button_flag = false; // reset button flag char c = ' '; // to store received character bool char_flag = false; // a new character has been received + + struct sensor_pzem_measurement_t pzem_measurements[3][4]; // PZEM-004T measurements + uint8_t pzem_measurement_i = 0; // PZEM-004T measurement index + sensor_pzem_measurement_request(0xc0a80100+pzem_measurement_i, SENSOR_PZEM_VOLTAGE); // start measurement + while (true) { // infinite loop iwdg_reset(); // kick the dog /* @@ -333,10 +345,12 @@ void main(void) } while (sensor_pzem_measurement_received) { // measurement from electricity meter received struct sensor_pzem_measurement_t measurement = sensor_pzem_measurement_decode(); // decode measurement + pzem_measurements[pzem_measurement_i][measurement.type] = measurement; // save measurement (the type matches the index) + (void)pzem_measurements[pzem_measurement_i][measurement.type]; if (measurement.valid) { // only show valid measurement switch (measurement.type) { case SENSOR_PZEM_VOLTAGE: - printf("voltage: %.01f V\n", measurement.value.voltage); + printf("voltage: %.01f V\n", measurement.value.voltage); // display measurement break; case SENSOR_PZEM_CURRENT: printf("current: %.02f A\n", measurement.value.current);