Hallo,
den Code habe ich nur daheim, nicht auf meinem Tablet (bin Unterwegs und habe grad Frühschluck).
Ich kann so viel sagen, dass ich alles in der Mainloop schreibe, ohne Unterprogramme.
Zu Beginn habe ich es so festgelegt, dass der Controller mit dem Programm nur dann fortfährt, wenn der Pulsein-Wert >85 liegt.
Danach soll ein Flag gesetzt werden, wenn der PulseIn-Wert kleiner 110 ist (relativ nahe am Anschlag) und das Flag zurückgesetzt, bei einem Wert größer 115, um eine Hysterese zu schaffen. Dazwischen ist Totraum.
Im weiteren wird das Flag abgefragt und soll mit jedem Setzen auf 1 den Zähler einer Select-Case um 1 erhöhen.
Bei 0 sind alle Ausgänge 0. Bei 1 Ausgang B.1 auf 1, bei 2 Ausgang B.2 auf 1 und bei 3 der Zähler wieder auf 0.
Habe verschiedenste Sachen probiert. übergabe in eine weitere Variable, Toggeln der Flag, Weglassen des Flag-Rücksetzbefehls, Flag-Pufferwartezeit nach dem Setzen (100-300ms, allerdings erfolgt die Reaktion erst nach Ablauf der Pufferzeit), Wartezeiten von 1-2 Sek zeitgleich bei Setzen der entsprechenden Ports.
Könnt ihr damit vielleicht etwas anfangen?
Jetzt fällt mir ein, dass das Programm selbst mit dem Servotester nur passabel lief. Wenn das Flag gesetzt wurde, wurde es auch gleich wieder zurück gesetzt. Ohne Wartezeit blinkten die Led also sehr schnell, mit irgendwas um die 20Hz.
Meine Suche nach Bascom-Programmen für einen RC-Memory-Schalter waren bislang nicht das, was ich mir vorstelle und alle ohne Pulsein-Befehl aufgebaut.
LG - Maik
- - - Aktualisiert - - -
Könnte es vielleicht daran liegen, dass ich keinen konkreten Wertebereich mit Anfangs- und Endwert bei der Messung der Flankenwechsel eingetragen habe? Ich sage dem Controller ja bisher, er soll bei einem Wert ab 85 erst mit der Messung beginnen und lediglich bei einem Wert kleiner 110 das Flag setzen. Kann es sein, dass ich ihm sagen muss, dass er das Flag nur bei Werten zwischen 85 und 110 setzt oder wäre das nur doppelt-gemoppelt?
LG - Maik
Lesezeichen