ESP8266WebServer & attachInterrupt
|
15.01.2021, 20:18
Beitrag #9
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Grüß Euch!
Hab jetzt mal die Windstärke im Code geändert, um den Schnitt von ein paar Clicks zu Ermitteln. Nachteil bei wenig Wind bringt diese Lösung nun leider nix. Anregungen von eurer Seite? Code: #define WIND_FACTOR 2.4 Gruß aus Wiener Neustadt Toni ================================================================= Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr. Wer Rechtschreibfehler findet darf sie behalten ![]() |
|||
15.01.2021, 20:26
Beitrag #10
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Ich hatte Dir mal was zum atomaren Lesen von Variablen, die länger als 1 Byte sind, geschrieben. Warum ignorierst Du das hartnäckig?
Wenn Du in Deiner ISR 3 Mal millis() aufrufst, ist es effektiver (und genauer), wenn Du einen Aufruf in eine Variable machst und diese dann verwendest. Wenn keine Impulse kommen, kannst Du auch keine messen. Warum rufst Du kmWind nicht in größeren Abständen auf? Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
15.01.2021, 21:16
Beitrag #11
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
(15.01.2021 20:26)Tommy56 schrieb: Ich hatte Dir mal was zum atomaren Lesen von Variablen, die länger als 1 Byte sind, geschrieben. Warum ignorierst Du das hartnäckig? Ich ignorier es nicht, ich Teste jetzt mal nur die Grundfunktion. Im Serversketch kann ich die Interrupts nicht sperren, nur mit attachInterrupt/detachInterrupt für Wind bzw. Regenwippe an-/abschalten. (15.01.2021 20:26)Tommy56 schrieb: Wenn Du in Deiner ISR 3 Mal millis() aufrufst, ist es effektiver (und genauer), wenn Du einen Aufruf in eine Variable machst und diese dann verwendest. Siehe dazu weiter unten. Daher würde im Serverloop Code: void loop(void) { und für getWIND folgendes machen wollen Code: void getWIND(){ Die ISR dann noch anpassen - hast das mit der Variable so gemeint? Code: void ICACHE_RAM_ATTR windISR() so in etwa hab ich mir das mit meinem vorhandenen Wissen vorgestellt. Und generell Interrupt abdrehen für die Messungen, nein. Da hab ich nur gelesen in diversen WWW Seiten, dass es nur Probleme bereitet wenn der Server am laufen ist. Lass mich gern von euch inspirieren ![]() Gruß aus Wiener Neustadt Toni ================================================================= Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr. Wer Rechtschreibfehler findet darf sie behalten ![]() |
|||
15.01.2021, 21:34
(Dieser Beitrag wurde zuletzt bearbeitet: 15.01.2021 21:38 von Tommy56.)
Beitrag #12
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Du darfst nicht alles glauben, was im Web geschrieben steht. Oft wird damit nur eine Ursache für die eigene schlampige Programmierung gesucht, weil die ISR zu lang ist.
Wieso führst Du jetzt ein Array ein? Mein Weg wäre (ungetestet): Code: volatile uint32_t counter = 0; // die einzige Variable, die in ISR und loop gebraucht wird Gruß Tommy Edit: Du kannst auch die Messzeit in abhängigkeit vom count anpassen. "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
16.01.2021, 00:38
Beitrag #13
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Servus Tommy!
Hab jetzt etwas länger getestet jetzt mal das rausgekommen Code: #define WIND_FACTOR 2.4 Grundsätzlich, glaub ich, dass die Berechnung ja passt - hab es mal zu fuß mit dem Taschenrechner nach gerechnet - soweit so gut Code: 00:25:26.092 -> 0.00 Wo ich nicht durchblicke im Moment, dass ist das eben nur jeweils nur die WIND_FACTOR um ein vielfaches rauskommen, ja klar geht ja nicht anders ![]() Und ja, deinen Vorschlag etwas abgeändert, hoffentlich nicht falsch. Prellen wie gesagt ist nicht. Hab es auch mit nur count in der ISR getestet, selbiges Ergebnis ![]() Irgendwie übersehe ich da etwas ... Gruß aus Wiener Neustadt Toni ================================================================= Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr. Wer Rechtschreibfehler findet darf sie behalten ![]() |
|||
16.01.2021, 10:52
Beitrag #14
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Deine Berechnung verstehe ich nicht. Ich halte sie inhaltlich für Unsinn.
Code: Serial.println((messZeit / (lastMess - lastMesstmp))*WIND_FACTOR); Da ist weder aktMillis noch tmpCount drin - warum zählst Du dann eigentlich? Woher die Impulse kommen, hast Du auch noch nicht beantwortet. Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
16.01.2021, 15:08
Beitrag #15
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
Irgendwie muss doch da sowas wie Impulse/Zeit * Faktor raus kommen.
Woher hast Du denn die 2.4? Gruß Tommy "Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt) |
|||
16.01.2021, 20:29
Beitrag #16
|
|||
|
|||
RE: ESP8266WebServer & attachInterrupt
(16.01.2021 10:52)Tommy56 schrieb: Deine Berechnung verstehe ich nicht. Ich halte sie inhaltlich für Unsinn. Servus Tommy! Bei dieser Berechnung bekomm ich die Zeit zwischen zwei Impulsen - die Impulszeiten passen, das Ergebnis KmH, wird aber aufgrund eines Fehlers meiner seits, denn ich nicht Durchblick, immer nur das 1 bis mehrfache von 2.4Kmh. Es gibt keine Werte dazwischen. Die Impulse kommen von dem (ist Ident mit meinem) WH1080 das über ein RC-Glied an GPIO14 am Wemos D1 hängt, und lt. Datenblatt 2.4KmH je Puls pro Sekunde (wobei hier aber 2 Impulse je Umdrehung [2 Reed 180°] kommen) Gruß aus Wiener Neustadt Toni ================================================================= Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr. Wer Rechtschreibfehler findet darf sie behalten ![]() |
|||
|
|
Möglicherweise verwandte Themen... | |||||
Thema: | Verfasser | Antworten: | Ansichten: | Letzter Beitrag | |
ESP8266WebServer RAW Post Data gesucht | Nichtraucher | 10 | 1.373 |
12.11.2020 12:11 Letzter Beitrag: Tommy56 |
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste