-
-
Erfahrener Benutzer
Roboter Genie
Gib doch einfach einmal
Toggle Porth.3
ein, ohne RS232 abzufragen. Dann muss der Ausgang doch zumindest stehen bleiben.
Ansonsten würde ich denken, dass du mehrfach den Character 49 bzw. 50 empfängst, sodass der Port dann noch mal toggelt.
Gruß
Rolf
-
Erfahrener Benutzer
Roboter-Spezialist
ich glaube ich habe es nun verstanden warum es nicht geht es verhält sich bei mir so :
Bei waitms 40 Blinkt meine LED am Ausgang im 40ms Takt
do
toggle port x.x
waitms 40
loop
Ohne den Behl waitms bleibt der Ausgang permanent ein
do
toggle port x.x
loop
Das bedeutet wenn ich also den kurzen Impuls abfrage und meine Schleife mit dem waitms 40 durchläuft das dann nur die Bedingung erfüllt ist das mein Ausgang nur ein einziges mal für 40ms schaltet.
Ok daraufhin habe ich versucht es in eine Subroutine zu packen nur das dumme ist wenn ich 4 Ausgänge permanent schalten möchte brauch ich für jeden erdenklichen Zustand ja ca. 16 Subroutinen wo sich mein ellenlanger Code permanent wiederholt und nur jewals der Ausgang Low oder high gesetzt wird.
Ich verstehe nicht warum es so schwer ist mal Zeichen vom UART so auszuwerten das ein Ausgang geschalten und gehalten wird bin ich zu dumm oder was ?
Das ist voll die Sackgasse was mach ich nun ?
Gruß
Steffen
-
Neuer Benutzer
Öfters hier
Es erscheint so als ob dein Ausgang immer auf Ein ist, wei der Prozessor so schnell ist. Weil das Auge träge ist. Dennoch wird der Ausgang geschaltet !!!
Erhöhe mal die Zeit in der der Prozessor warten soll. z.B. Wait 2 Dann wirst du sehen das der Prozessor sauber arbeitet und nach jedem durchlaufen der Schleife deinen Ausgang setzt und rücksetzt.
Jürgen
-
Erfahrener Benutzer
Roboter-Spezialist
ne der Ausgang ist nicht immer auf ein ich habe jetzt mal die Zeit auf 4 Sekunden genommen.
Das Problem ist der Aufbau meines Programm :
Wie gesagt in der Schleife fragt das Programm den UART ab wenn die bedingung erfüllt ist und das Zeichen was ich aus dem Excel geschickt habe ausgewertet ist dann wartet er durch den Waitms Befehl noch 40ms bis er seinen Zustand wieder vergisst und mit der do loop Schleife von vorne beginnt.
Sowie ich einen waitms befehl in der schleife verwende funktioniert das ganze nicht mehr mit dem Port toggle.
Gruß
Steffen
-
Neuer Benutzer
Öfters hier
Versuch es mal mit folgendem Befehl:
UART-Zeichen minus 48 ergibt das zu empfangene Zeichen ( z.B. eine 1 ) dieses Zeichen in A speichern.
Keine do Schleife !
statt dessen schreibst du If A = 1 Then toggle portx.1 If A = 2 then toggle oprtx.2 ...u.s.w. danach läßt du den uP wieder deine UART abfragen.
müßte eigentlich laufen !!! aber nur wenn deine Tastatur immer nur EIN Zeichen pro Tastendruck sendet !!!
Jürgen
-
Erfahrener Benutzer
Roboter-Spezialist
Problem gelößt
so nachdem ich nun lange über mein Programm nachgedacht habe. Habe ich nun alles von vorne bis hinten nochmal neu aufgerollt im Programm und siehe da der Fehler war klar.
Das ganze Problem bestand daran das ich die Ausgänge durch ein anderen Code ständig neu beschrieben habe. Durch das ständige neue Beschreiben entstand der Zustand das der Ausgang ohne ende in einer extrem schnellen Impulsfolge flackerte.
Puhh was bin ich froh das nun gefunden zu haben.
Vielen Dank an alle die geholfen haben es war nicht umsonnst 
Gruß
Steffen
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen