Liebe Leute !
Ich hätte gern eure Hilfe um folgendes Problem zu lösen bzw. zu
erklären.
Ein "WATER FLOW SENSOR" hängt mit Pin 2 am Arduino-board -:)
Eine interrupt-routine zählt die Impulse. Funktioniert auch - aber es
werden immer wieder einzelne Impulse gezählt welche nicht vom Sensor
kommen (das Oszi am Eingangspin 2 kann keine Impulse erkennen)! Ein in
der Nähe (0,5 Meter) schaltendes Relais löst aber einige Impuls aus ?!
Gibts dafür eine Erklärung bzw. Lösung ?
nixwasigenau schrieb:> unsigned long Impule=0;
Warum nicht auch volatile?
>digitalWrite(LedImpuls,ImpulsLedState);
Waum dieses im Interrupt?
bayuwaare schrieb:> Das ist ja kein Code, das ist ja Arduino.
Sehr konstruktiver Beitrag, echt jetzt.
Es soll tatsächlich Leute da draußen geben, die die Arduino IDE, z.B.
u.a. ich, nutzen und gut mit zurechtkommen. Für kleine Projekte zum
Vortesten ohne sich über die Tiefen der Fuses und Dude's gedanken machen
zu müssen, ideal.
Wenn dann eine Projekt über Q&D hinaus kommen sollte (90% meiner
Spielereien werden nie älter als 24h) dann wechsel ich die Umgebung.
bayuwaare schrieb:> Das ist ja kein Code, das ist ja Arduino.
Qualitativer Beitrag, hauptsache man schreibt mal irgendeinen Müll.
Natürlich ist das Code aber eben in der Arduino IDE. Muss nicht alles in
C, Assembler oder sonstiges programmiert sein.
Alexander J. schrieb:> nixwasigenau schrieb:>> unsigned long Impule=0;>> Warum nicht auch volatile?
Muss ich dem Vorredner zustimmen. Variablen welche global definiert sind
definiere ich meist volatile aus dem einfachen Grund, dass diese
Variable IMMER den aktuellen Wert erhält, auch bei einer
Funktionsübergabe, wobei ich dennoch auf Zeiger verweise.
>>>digitalWrite(LedImpuls,ImpulsLedState);>> Waum dieses im Interrupt?
Ist auch richtig. Interrupt immer so schnell wie möglich verlassen.
Lieber ein Statusbit setzen und in der Main z.B. abfragen
Liebe Grüße
Franz. B schrieb:> Interrupt immer so schnell wie möglich verlassen.> Lieber ein Statusbit setzen und in der Main z.B. abfragenFranz. B schrieb:>>>digitalWrite(LedImpuls,ImpulsLedState);
... gilt jetz nicht gerade als Zeitverschwender, daher in
der ISR durchaus "zulässig" .... (you mileage may vary)
bayuwaare schrieb:> ... gilt jetz nicht gerade als Zeitverschwender, daher in> der ISR durchaus "zulässig" .... (you mileage may vary)
Mag sein dass es das nicht ist, allerdings scheint es so als sei der TE
Anfänger in Programmierung. Lieber gleich einen guten Programmierstil
erlernen als nachträglich umstellen. Früher oder später kommt es auf
solche Zeiten an
bayuwaare schrieb:> ... gilt jetz nicht gerade als Zeitverschwender
Alles relativ. Afaik braucht nen digitalWrite in der Arduino-Welt so 70
bis 80 Takte.
ALSO - Diese Diskussion ist von meinen eigentlichen Problem weit weg und
hilft mir überhaupt nicht weiter. Das Programm (Sketch) ist ein
Schnelltest um dem Problem der willkürlich gezählten Impulse auf die
Spur zu kommen.
Da ist es sicher wurscht ob in der Interruptroutine eine Led geschalten
wird oder nicht (ist im Orginal sowieso nicht so).
Schade - hatte auf Tipps gehofft, trotzdem Danke.
nixwasigenau schrieb:> Schade - hatte auf Tipps gehofft, trotzdem Danke.
Du wolltest doch gar keine Hilfe, denn du hattest geantwortet:
nixwasigenau schrieb:> Schaltbild ist ja wohl überflüssig (Sensor: +5V GND DATA)
Franz. B schrieb:> Muss ich dem Vorredner zustimmen. Variablen welche global definiert sind> definiere ich meist volatile aus dem einfachen Grund, dass diese> Variable IMMER den aktuellen Wert erhält, auch bei einer> Funktionsübergabe, wobei ich dennoch auf Zeiger verweise.
das ist Unsinn.
volatile macht nur sinn in Kombination mit Threads oder Interrupts.
Zu viele volatile verhindert nur zuverlässig eine sinnvolle Optimierung
vom Compiler. Da kannst du auch gleich die Optimierung abschalten.
@Route 66 / @bayuwaare
> Schaltbild ist ja wohl überflüssig (Sensor: +5V GND DATA)
Also wenn ihr für den Anschluß von 3 Drähten auf ein Arduino Board einen
Schaltplan braucht .... - dann lasst es einfach !
nixwasigenau schrieb:> @Route 66 / @bayuwaare>> Schaltbild ist ja wohl überflüssig (Sensor: +5V GND DATA)>> Also wenn ihr für den Anschluß von 3 Drähten auf ein Arduino Board einen> Schaltplan braucht .... - dann lasst es einfach !möglicherweise ging's den Leuten ja nur darum zu sehen, wie gross dein
Pullup an Pin2 und ggf. die Abblock-Cs sind... Sind ja sicher
vorhanden... :)
Jan L. schrieb:> möglicherweise ging's den Leuten ja nur darum zu sehen, wie gross dein> Pullup an Pin2 und ggf. die Abblock-Cs sind... Sind ja sicher> vorhanden... :)bayuwaare schrieb:> Und nach jetzigen Erkenntnissen ist sogar dein Aufbau> nicht überflüssig.
Eingangspost:
nixwasigenau schrieb:> mit Pin 2 am Arduino-board -:)
Erste Antwort:
bayuwaare schrieb:> Das ist ja kein Code, das ist ja Arduino.
Herrlich ;)
Jan L. schrieb:> möglicherweise ging's den Leuten ja nur darum zu sehen, wie gross dein> Pullup an Pin2 und ggf. die Abblock-Cs sind... Sind ja sicher> vorhanden... :)
In der Hoffnung, daß die Arduino-Götter auf den Bords solche
Kleinigkeiten drauf gebäppt haben ... zumindest an der Versorgung.
So wie sich Das hier liest, koppeln hier Störungen von einem Relais ein
- da könnte vll. sogar schon der erwähnte Keramik-Kondensator zwischen
Sensor und GND helfen, Diese nach GND abfließen zu lassen.
Ein Oszi wird wohl nicht vorhanden sein?
MfG
Patrick J. schrieb:> So wie sich Das hier liest, koppeln hier Störungen von einem Relais ein> - da könnte vll. sogar schon der erwähnte Keramik-Kondensator zwischen> Sensor und GND helfen, Diese nach GND abfließen zu lassen.
Ja genau, einen Kondensator irgendwo in die unbekannte Schaltung
und schon ist alles geheilt.
Patrick J. schrieb:> Diese nach GND abfließen zu lassen.
Übrigens können über einen Kondensator (auch wenn es ein Keramik-
Kondensator ist) keine "Störungen abfließen". Über zwei gegen-
überstehende Platten fliesst nix.
Patrick J. schrieb:> Ein Oszi wird wohl nicht vorhanden sein?
Selbst wenn es da wäre würde es nix helfen.
bayuwaare schrieb:> Über zwei gegenüberstehende Platten fliesst nix.
Du bist ja ein ganz schlauer, oder?
Schon mal davon gehört, daß Störungen nicht nur aus DC bestehen?