mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 20:56:35 +00:00
Changed CounterType 1 to micros() and implemented stall detection
This commit is contained in:
parent
acbc76614a
commit
432a812dc3
@ -21,13 +21,13 @@
|
|||||||
* Counter sensors (water meters, electricity meters etc.)
|
* Counter sensors (water meters, electricity meters etc.)
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
unsigned long last_counter_timer[MAX_COUNTERS]; // Last counter time in milli seconds
|
unsigned long last_counter_timer[MAX_COUNTERS]; // Last counter time in micro seconds
|
||||||
|
|
||||||
void CounterUpdate(byte index)
|
void CounterUpdate(byte index)
|
||||||
{
|
{
|
||||||
unsigned long counter_debounce_time = millis() - last_counter_timer[index -1];
|
unsigned long counter_debounce_time = micros() - last_counter_timer[index -1];
|
||||||
if (counter_debounce_time > Settings.pulse_counter_debounce) {
|
if (counter_debounce_time > Settings.pulse_counter_debounce * 1000) {
|
||||||
last_counter_timer[index -1] = millis();
|
last_counter_timer[index -1] = micros();
|
||||||
if (bitRead(Settings.pulse_counter_type, index -1)) {
|
if (bitRead(Settings.pulse_counter_type, index -1)) {
|
||||||
RtcSettings.pulse_counter[index -1] = counter_debounce_time;
|
RtcSettings.pulse_counter[index -1] = counter_debounce_time;
|
||||||
} else {
|
} else {
|
||||||
@ -98,7 +98,7 @@ void CounterShow(boolean json)
|
|||||||
for (byte i = 0; i < MAX_COUNTERS; i++) {
|
for (byte i = 0; i < MAX_COUNTERS; i++) {
|
||||||
if (pin[GPIO_CNTR1 +i] < 99) {
|
if (pin[GPIO_CNTR1 +i] < 99) {
|
||||||
if (bitRead(Settings.pulse_counter_type, i)) {
|
if (bitRead(Settings.pulse_counter_type, i)) {
|
||||||
dtostrfd((double)RtcSettings.pulse_counter[i] / 1000, 3, counter);
|
dtostrfd((double)RtcSettings.pulse_counter[i] / 1000000, 6, counter);
|
||||||
} else {
|
} else {
|
||||||
dsxflg++;
|
dsxflg++;
|
||||||
dtostrfd(RtcSettings.pulse_counter[i], 0, counter);
|
dtostrfd(RtcSettings.pulse_counter[i], 0, counter);
|
||||||
@ -124,6 +124,7 @@ void CounterShow(boolean json)
|
|||||||
#endif // USE_WEBSERVER
|
#endif // USE_WEBSERVER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(bitRead(Settings.pulse_counter_type, i)) RtcSettings.pulse_counter[i]=0xFFFFFFFF; // Set Timer to max in case of no more interrupts due to stall of measured device
|
||||||
}
|
}
|
||||||
if (json) {
|
if (json) {
|
||||||
if (header) {
|
if (header) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user