Skip to content

Commit

Permalink
Bugfixes im avr Node
Browse files Browse the repository at this point in the history
  • Loading branch information
Norbert committed Dec 6, 2023
1 parent f61cc2b commit 5de2f3d
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 16 deletions.
30 changes: 17 additions & 13 deletions avr/Node/Node.ino
Original file line number Diff line number Diff line change
Expand Up @@ -182,10 +182,10 @@ float u_batt2;
#endif

#if defined (ZAEHLER)
float zaehlerF;
uint32_t zaehlerUI;
uint8_t statusStack;
uint16_t sumSleepTime;
float zaehlerF;
uint32_t zaehlerUI;
uint8_t statusStack;
unsigned long sumSleepTime_ms;
#endif

payload_t r_payload, s_payload;
Expand Down Expand Up @@ -229,6 +229,7 @@ uint8_t last_orderno = 0;
uint8_t msg_id = 0;
uint8_t heartbeatno=0;
boolean monitormode = false;
unsigned long tempsleeptime_ms;

//Some Var for restore after sleep of display
#if defined(DISPLAY_ALL)
Expand Down Expand Up @@ -890,7 +891,7 @@ void setup(void) {
zaehlerF = 0;
zaehlerUI = 0;
#endif
sumSleepTime = 0;
sumSleepTime_ms = 0;
statusStack = 0;
#endif

Expand Down Expand Up @@ -1822,33 +1823,36 @@ void loop(void) {
#if defined(DISPLAY_ALL)
display_refresh();
#endif
long int tempsleeptime = eeprom.sleeptime; // regelmaessige Schlafzeit in Sek.
if (low_voltage_flag) tempsleeptime = eeprom.sleeptime_lv;
tempsleeptime += sleeptime_kor; // einmalige Korrektur in Sek.
tempsleeptime *= eeprom.sleep4ms_fac; // Umrechnung in Millisek.
if (low_voltage_flag) {
// Low Voltage Schlafzeit in Sek. * Korrekturfaktor
tempsleeptime_ms = (unsigned long)eeprom.sleeptime_lv * eeprom.sleep4ms_fac;
} else {
// (regelmaessige Schlafzeit in Sek. + einmalige Korrektur) * Korrekturfaktor
tempsleeptime_ms = ((unsigned long)eeprom.sleeptime + sleeptime_kor) * eeprom.sleep4ms_fac;
}
sleeptime_kor = 0;
#if defined(DISCHARGE1)
if (batt_mod1 == 1) {
unsigned long mymillis = millis();
while ( millis() - mymillis < tempsleeptime ) {
while ( (uint16_t)(millis() - mymillis) < tempsleeptime ) {
delay(1000);
batt_monitor();
if ( millis() < mymillis ) mymillis = 0;
}
} else {
#endif
#ifdef ZAEHLER // Sonderhehandlung für Zähler
while (sumSleepTime < tempsleeptime) {
while (sumSleepTime_ms < tempsleeptime_ms) {
bool pinstate = digitalRead(ZAEHLER_PIN);
if ( (statusStack & 0b00001111) == 0b00001111 && (pinstate == LOW) ) {
zaehlerUI++;
zaehlerF = (float)zaehlerUI / 100;
}
statusStack = (statusStack << 1) | (pinstate? 0b00000001:0b00000000);
SLEEPTYPE(61); //sleep 60ms
sumSleepTime += 60;
sumSleepTime_ms += 60;
}
sumSleepTime = 0;
sumSleepTime_ms = 0;
#else
/*
* Behandlung normale Nodes
Expand Down
6 changes: 3 additions & 3 deletions avr/Node/Node_settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,9 @@
//-----------------------------------------------------
#if defined(GASZAEHLERNODE)
#define RF24NODE 111
#define EEPROM_VERSION 4
#define EEPROM_VERSION 6
#define SENSOR_BOSCH
#define SLEEPTIME 60
#define SLEEPTIME 120
#define EMPTYLOOPS 0
#define LOW_VOLT_LEVEL 2.0
#define ZAEHLER
Expand All @@ -235,7 +235,7 @@
#define ZAEHLER_CHANNEL 13
#define ZAEHLER_LO_SET_CHANNEL 51
#define ZAEHLER_HI_SET_CHANNEL 52
#define ZAEHLER_START 287846
#define ZAEHLER_START 288140
#define SLEEP4MS_FAC 990
#endif
//-----------------------------------------------------
Expand Down

0 comments on commit 5de2f3d

Please sign in to comment.