Comments (7)
Changes included in version 1.0.1 of the library
from hlw8012.
Hi
Sorry, been away for a while. Very useful information. Will update the library and my code.
Thank you so much!
from hlw8012.
Original comment by Alexander Christian (Bitbucket: alexander_christian, GitHub: Unknown):
Still working fine. Webpage refreshes every 5sec and displays interrupt-measured values. Now running for ~45min... So I assume: Finally solved.
Please consider putting the attribute to your lib and mention the use of the attribute in your documentation.
from hlw8012.
Original comment by Alexander Christian (Bitbucket: alexander_christian, GitHub: Unknown):
Issue solved for me.
Solution, according to esp8266/Arduino#3337 (comment):
Put ICACHE_RAM_ATTR attribute to library's interrupt handler functions, as well as to interrupt-wrapper functions in sketch:
So, in HLW8012.cpp:
#!arduino
void ICACHE_RAM_ATTR HLW8012::cf_interrupt() {
unsigned long now = micros();
_power_pulse_width = now - _last_cf_interrupt;
_last_cf_interrupt = now;
}
void ICACHE_RAM_ATTR HLW8012::cf1_interrupt() {
unsigned long now = micros();
unsigned long pulse_width;
if ((now - _first_cf1_interrupt) > _pulse_timeout) {
if (_last_cf1_interrupt == _first_cf1_interrupt) {
......
and in your sketch:
#!arduino
// redirect interrupt to HLW library
void ICACHE_RAM_ATTR hlw8012_cf1_interrupt() {
_hlw8012.cf1_interrupt();
}
void ICACHE_RAM_ATTR hlw8012_cf_interrupt() {
_hlw8012.cf_interrupt();
}
No crash since ~15min... Before it crashed within seconds...
from hlw8012.
Original comment by Alexander Christian (Bitbucket: alexander_christian, GitHub: Unknown):
looks like the ESP does not crash if I simply disable the "crashing" interrupt-handler:
#!arduino
// attachInterrupt(GPIO_HLW8012_CF1, hlw8012_cf1_interrupt, CHANGE);
attachInterrupt(GPIO_HLW8012_CF, hlw8012_cf_interrupt, CHANGE);
very weird... the only difference is then, that
- one interrupt less
- one digitalWrite()
- a bit less if/else logic
Any ideas?
from hlw8012.
Original comment by Alexander Christian (Bitbucket: alexander_christian, GitHub: Unknown):
Also created an issue on esp8266 arduino core: esp8266/Arduino#3337
from hlw8012.
Original comment by Alexander Christian (Bitbucket: alexander_christian, GitHub: Unknown):
Looks like it's esp8266 arduino core related?! --> esp8266/Arduino#1020
But the suggested solution (disabling interrupts before actually handling interrupt code in HLW lib and enabling it again after) does not work/solve the problem.... Still facing crashes.
from hlw8012.
Related Issues (20)
- CSE7759 HOT 1
- Random readings when no load\relay off HOT 10
- Add CSE7759 and CSE7766 HOT 2
- HLW8012 CP1 frequency capping HOT 2
- Connect to non PWM pin
- Multiple HLW8012 HOT 2
- Zero Readings HOT 4
- Voltage and current power formula HOT 2
- Sonoff POW v2 HOT 1
- Some readings contain only 0 values (sonoff POW v2)
- Energy Measurement using BL0937 HOT 1
- Multipliers for Gosund SP1? HOT 9
- HLW8012 board calibration HOT 2
- Multiple instances of HLW8012 class with interrupts? HOT 1
- NO LOAD READINGS ARE FUNNY HOT 3
- Will the interrupts example work on Sonoff POW R2?
- Wrong value for VOLTAGE_RESISTOR_UPSTREAM in examples? HOT 1
- Nothing happens after uploading the code for sonoff pow
- Zero values when using this library for ESP32 HOT 1
- support for rp2040 mc
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hlw8012.