Forum: Mikrocontroller und Digitale Elektronik seriell FTDI TTL UART SUART ich blicke nicht mehr Durch!


von Veit D. (devil-elec)


Lesenswert?

Jörg W. schrieb:
> Veit D. schrieb:
>> habe mal nach deinen Testdaten geschaut.
>
> Die waren noch für den SET PORT Befehl, der ja alle Bits auf einmal
> setzen sollte.

Okay, Falschinterpretation meinerseits. Sorry.

> Weiß nicht, wenn man den Flash des AVRs, der da auf der Steuerung ist,
> auslesen könnte, könnte ich mir hier einen Simulator bauen … so ist das
> irgendwie ein Fischen im Trüben.

Ohne Karte muss man sich auf die Beschreibung verlassen. Wenn das nicht 
klappt, hat man ein Problem. Wenn da allerdings ein AVR draufsitzt, kann 
man den eigentlich selbst nach eigenen Wünschen komplett neu 
programmieren. Müßte allerdings der TO für sich machen. Wenn nicht und 
der Karten TOGGLE Befehl ein Problem hat, wonach es aktuell aussieht und 
ich mir das dennoch nicht so richtig vorstellen kann, aber egal, muss 
man mit SET_SINGLE und DEL_SINGLE leben, was meiner Meinung nach für 
Relais auch kein Problem darstellt. Werden die entsprechenden Relais 
kurz nacheinander geschalten und nicht zeitgleich.

Allerdings sollte der TO nochmal mit gezielten Mustern testen. Ob 
aktuell alle Bits nur eingeschalten werden können und nie aus. Oder ob 
irgendwas ganz anders reagiert wie gedacht. Noch eine Frage. Die Karte 
ist nicht defekt oder so? Die hat bis "jetzt" immer genauso funktioniert 
wie gewünscht?

Bis später ...

von Marco (alu_hut_nackt_bar)


Lesenswert?

Veit D. schrieb:
> Allerdings sollte der TO nochmal mit gezielten Mustern testen. Ob
> aktuell alle Bits nur eingeschalten werden können und nie aus. Oder ob
> irgendwas ganz anders reagiert wie gedacht. Noch eine Frage. Die Karte
> ist nicht defekt oder so? Die hat bis "jetzt" immer genauso funktioniert
> wie gewünscht?

Mahlzeit zusammen. Vergessen den Wecker zu stellen und gerade erst aus 
dem Bett gekrabbelt, ist das zu glauben ? :)

Also ich mache erst mal Kaffee und teste dann die Karte.
Die Karte die ich zum Testen nehme ist ein Schwestermodell, habe also 2 
Stück davon.
Habe es Gegengeprüft, die Ersatzkarte  funktioniert am COM pc mit dem 
Programm von Thomas Dohl 1:1 so wie die im Einsatz befindliche Karte. Da 
diese sich aber in der Küche befindet ist es mit der Schwesterkarte die 
neben mir liegt einfacher das Verhalten zu beobachten.

Ich lege gleich los Poste dann gegen 1400 die Ergebnisse.
Falls alle Stricke reißen könnte ich die Schwesterkarte auch eintüten 
und Verschicken.

LG

: Bearbeitet durch User
von Marco (alu_hut_nackt_bar)


Angehängte Dateien:

Lesenswert?

So, los gehts:

Sequenz 1 : /relais -d /dev/ttyUSB0 -e -s xxxxxxxx
got file descriptor fd=3
Firmware-Version 11
OK, Aktuelle Kontaktstellung: 0
Connection timeout (select failed).
FAIL: 253 1 0 255

Sequenz 2 : ./relais -d /dev/ttyUSB0 -e -s 00000000
got file descriptor fd=3
Firmware-Version 11
OK, Aktuelle Kontaktstellung: 0
Connection timeout (select failed).
FAIL: 253 1 0 255

Sequenz 3 : ./relais -d /dev/ttyUSB0 -e -s xxxxxxx1
got file descriptor fd=3
Firmware-Version 11
OK, Aktuelle Kontaktstellung: 0
Setze Bits 1
FAIL: 249 1 1 0

Sequenz 4 :./relais -d /dev/ttyUSB0 -e -s 11111111
got file descriptor fd=3
Firmware-Version 11
OK, Aktuelle Kontaktstellung: 1
Setze Bits 255
FAIL: 249 1 255 0

Sequenz 5 : ./relais -d /dev/ttyUSB0 -e -s 00000000
Firmware-Version 11
OK, Aktuelle Kontaktstellung: 255
Connection timeout (select failed).
FAIL: 253 1 255 255


Hmm also ausschalten geht jetzt garnimmer.
da haben wir wieder ein timeout jetzt.

LG

EDIT: habe mal bitweise von rechts nach links eingeschaltet ergebnis im 
anhang.

: Bearbeitet durch User
von Marco (alu_hut_nackt_bar)


Lesenswert?

Ich kann immer noch nen ssh Zugang zu meinem Laptop anbieten.
Der ist Isoliert im Netzwerk und die Karte hängt an dem drann.
Ich häng auch gern noch ne webcam auf die Platine.

Ist zumindest einfacher als verschicken :)

LG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Hmm, so mimosenhaft, wie sich das Teil benimmt, wäre das natürlich 'ne 
Option.

Ich maile dir mal einen pubkey zu. Soll ich ihn mit GPG unterschreiben?

von Marco (alu_hut_nackt_bar)


Lesenswert?

Jörg W. schrieb:
> Ich maile dir mal einen pubkey zu. Soll ich ihn mit GPG unterschreiben?

nicht nötig. Ich gebe dir einfach einen Vertrauens Vorschuss :)
vielleicht gibt es ja parallel noch die möglichkeit über 
teamspeak/discord/mumble zu kommunizieren ?

LG

: Bearbeitet durch User
von Veit D. (devil-elec)


Lesenswert?

Hallo,

okay, mit den Testergebnissen kann ich nichts anfangen. Wie schon 
bemerkt wurde deutet alles auf ein Kommunikationsproblem hin. Hab mir 
den Thread von weiter vorn durchgelesen. Mitten in eurer 
Festplattenunterhaltung kam vom TO eine Info das die Karte "abstürzt" 
wenn mehr als ein Relais geschalten wird. Ich denke das Thema 
Spannungsversorgung sollte man erstmal klären, weil bis dahin, wenn ich 
nichts überlesen habe, wurde immer nur ein Relais geschalten, nicht 
mehrere zeitgleich.
Beitrag "Re: seriell FTDI TTL UART SUART ich blicke nicht mehr Durch!"

Zwischendurch hat die Karte funktioniert. Vermutlich mit einem Relais.
Beitrag "Re: seriell FTDI TTL UART SUART ich blicke nicht mehr Durch!"

Nicht das der Wasserschaden einen Folgefehler auf der Karte 
hervorgerufen hat. Wasserschäden in der Elektronik sind das Übelste was 
man haben kann, weil man den Ausgang nicht abschätzen kann. Kann gut 
gehen muss aber nicht.

Ich halte mich erstmal zurück. Kann von weiten eh nix machen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Interessanter Aspekt. Ja, vielleicht sollte man ja ein Relais nach dem 
anderen schalten.

von Marco (alu_hut_nackt_bar)


Lesenswert?

Hallo.

Ich schrieb, das das gleichzeitige Schalten von Relais 1 + 5 zu einem 
Absturz der Karte führt, und nur die 2! alle anderen Kombinationen 
lassen sich Problemlos auch gleichzeitig schalten.

Nochmal : 1 + 5 führen zu dem Problem.
Der Wasserschaden könnte auf die Hauptkarte zutreffen, aber wie ich 
Schrieb laufen alle Tests mit der Schwesterkarte!
Bitte, ich möchte nicht Ungehalten erscheinen, aber lest doch bitte wenn 
dann den Beitrag auch genau durch.

mir ist das nur beim testen aufgefallen, da meine GUI sowieso nur das 
einzelne Schalten von Relais erlaubt. ( ausnahme NOTAUS wo alle 
gleichzeitig abgeschaltet werden )


LG

: Bearbeitet durch User
von Marco (alu_hut_nackt_bar)


Angehängte Dateien:

Lesenswert?

Das ist die GUI btw.

von Veit D. (devil-elec)


Lesenswert?

Okay, ich nehme es zur Kenntnis.

von Marco (alu_hut_nackt_bar)


Lesenswert?

So, nach ein paar Technischen Problemen, wäre ich heute Abend Verfügbar 
für einen life test falls du Zeit hast. :)

LG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ich denke, das passt.

von Marco (alu_hut_nackt_bar)


Lesenswert?

Der Jörg hat die Ziege bezwungen!
Ab morgen regnet es Bier. :)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Naja, war noch ein blöder Bug im Code, der Rest ist jetzt zurück auf SET 
PORT, was natürlich schon so funktioniert wie beschrieben.

von Marco (alu_hut_nackt_bar)


Lesenswert?

Jörg W. schrieb:
> Naja, war noch ein blöder Bug im Code, der Rest ist jetzt zurück auf SET
> PORT, was natürlich schon so funktioniert wie beschrieben.

Wir stoßen dann zusammen an.
LG
Bier ist auf dem Weg( 12-13. )

von Marco (alu_hut_nackt_bar)


Lesenswert?

Jörg W. schrieb:
> Naja, war noch ein blöder Bug im Code, der Rest ist jetzt zurück auf SET
> PORT, was natürlich schon so funktioniert wie beschrieben.

Ah warte mal. Hab das jetzt erst Sacken lassen.. Du sendest also ein SET 
und danach ein DEL um die Relais an den Benutzerwunsch anzupassen ? 
möglicherweise ist das das delay Problem.

Ich hatte bisher noch keine Muße die GUI umzuschreiben, mache ich 
Morgen..eehh heute Nachmittag.
Falls das Bier schmeckt, Vorsicht das hat 6.5 Volt! Vielleicht magst du 
mir ja mal "C" etwas näher bringen indem du mir den source mal 
erklärbärst :)

LG
Marco

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Das war meine vorige Strategie. Ich habe jetzt aber alles wieder zurück 
auf SET PORT gedreht, d.h. es wird alles auf einmal ein- oder 
ausgeschaltet.

Du schriebst ja, dass deine GUI sowieso letztlich die Bedienerhandlungen 
einzeln weitergibt, sodass es eigentlich nicht vorkommen kann, dass die 
beiden Relais, die die Karte abstürzen lassen, zeitgleich eingeschaltet 
werden. Sonst hätte ich das dort noch abfangen müssen, würde aber den 
Aufwand erhöhen.

von Marco (alu_hut_nackt_bar)


Lesenswert?

Moin!

Also das es den "ghost in the machine" gibt weiß ich aus eigener 
Erfahrung.
Aber gibt es auch so etwas wie "ghost in the code"?

Ich stelle gerade fest, das die Routine die den Status der Relais 
abfragt und Visualisiert komplett auskommentiert ist..trotz dem 
funktioniert alles wie es soll?!

Fragezeichen

LG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Marco schrieb:

> Wir stoßen dann zusammen an.

Kiste heute angekommen ;-), danke!

Marco schrieb:
> Ich stelle gerade fest, das die Routine die den Status der Relais
> abfragt und Visualisiert komplett auskommentiert ist.

Wo ist die auskommentiert? In relais.c? Da sehe ich nichts.

Wenn's in deiner GUI ist, wirst natürlich nur du allein wissen, was da 
passiert. ;-)

von Marco (alu_hut_nackt_bar)


Lesenswert?

Jörg W. schrieb:
> Wenn's in deiner GUI ist, wirst natürlich nur du allein wissen, was da
> passiert. ;-)

Ja, sorry ich meine die GUI, aber ich habe gerade keine Ahnung was da 
passiert, weil eigentlich... ich brauch noch n Kaffee! :)


> Kiste heute angekommen ;-), danke!

Es hätte eigentlich Winterbock werden sollen, aber hatte Amazon nicht :(


LG

von Marco (alu_hut_nackt_bar)


Lesenswert?

Gnarf !
Damit Ihr mitlachen könnt...

If Button_kitchen.Enabled = True And SwitchButton1.Value = False 
'küchenlicht

    Dial1.Value = Dial1.value - 1
  If Dial1.Value == 0
    kizchen_off_Click()
    'timer_minute.Enabled = False
        Dial1.Value = 1
  Endif
Endif

Und jetzt ratet mal welche Buttons ich aus dem Code entfernt habe, weil 
ich beim rewrite dachte ich brauche die nimmer ? Genau.
Haute Nachmittag habe ich wohl noch mehr Arbeit seufz

LG

von Marco (alu_hut_nackt_bar)


Lesenswert?

Programm läuft auf nem PI flawless. Morgen teste ich mal den shield.
LG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Das hört man doch gern. Das Bier schmeckt. ;-)

von Marco (alu_hut_nackt_bar)


Lesenswert?

Jörg W. schrieb:
> Das hört man doch gern. Das Bier schmeckt. ;-)

Der Shield muss erst mal noch warten, habe da einen lästigen bug in 
meiner GUI um den ich mich zuerst kümmern muss.

Genieße das Bier, hast du dir verdient. :)

LG

von Marco (alu_hut_nackt_bar)


Lesenswert?

Es läuft nun alles wie es soll, der Bug geht auf das Konto von Gambas!!
Habe den Shield verlegt, ist aber erst mal egal da ja alles auch mit dem 
"Adapter" funktioniert.

Vielen Dank nochmal an alle die geholfen haben, und besonderer Dank an 
Jörg, der nicht Aufgegeben hat :)

Ist noch jemand hier unterwegs der sich mit Gambas befasst? ( und nein 
ich meine nicht die Leckeren Dinger sondern die IDE/Programmiersprache).

LG

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Marco schrieb:
> Ist noch jemand hier unterwegs der sich mit Gambas befasst?

Das liest hier tief im Thread versteckt sicher keiner. Da ist es 
sinnvoller, wenn du einen neuen Thread eröffnest.

von Marco (Gast)


Lesenswert?

Moin ! Also das Programm funktioniert Tadellos, das vorweg.
Ich habe ein bischen Probleme mit dem Rückgabewert, da dieser ein LF 
enthält.
Gambas ist da sehr Sensibel.Ich habe das Umgangen indem ich eine 
Fehlerbehandlung geschrieben habe.

Den Rückgabewert von relais -d /dev/ttyusb0 -S ohne LF zu senden ist 
nicht so ohne weiteres möglich ?

LG
Marco

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Welche Ausschrift meinst du genau?

von Marco (Gast)


Lesenswert?

Jörg W. schrieb:
> Welche Ausschrift meinst du genau?

Wenn ich relais -d /dev/ttyUSB0 -S aufrufe mit >ausgabe.txt enthält 
diese Datei einen LF. d.H. die Ausgabe ist per definition ein string. 
ohne LF könnte ich die Ausgabe einfach als integer nutzen.

Beispiel:
relais -d /dev/ttyUSB0 -S  gibt
128 zurück.

allerdings 128+LF
kann man das unterdrücken ?

LG

von Veit D. (devil-elec)


Lesenswert?

Hallo,

will mich ja nicht wieder umsonst reinhängen. Aber eigentlich ist ein LF 
eine ganz normale genutzte Endeerkennung für eine Datenübertragung. Die 
einfachste Art und Weise für einen Abschluss. Das ist damit auch nicht 
automatisch ein String. Meine Einlesefunktionen schauen immer nach LF 
oder CR. Dann weiß man das diese eine Übertragung abgeschlossen ist.
Also wenn bei mir 128 + LF reinkommen würde, würde die 128 im Lesebuffer 
landen und das Einlesen an sich mit eintrudeln der LF Erkennung 
abgeschlossen sein. Danach wird die 128 anderswo verarbeitet.
Wenn nur 128 ohne LF/CR eintreffen würde, würde meine Einlesefunktion 
ewig warten, außer ich bau noch einen Timeout ein, aber dann müßte das 
Eingelesene noch verwurfen werden.

Wenn du nur immer ein Byte einliest, weil nie mehr sein kann, dann 
kannst du das LF abschneiden und dann verarbeiten. An dem '+LF' auf 
Relaiskartenseite wirst du wohl nichts ändern können.

Am Besten du änderst deine Einlesefunktion.

: Bearbeitet durch User
von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ah ja, es geht um das, was bei der Option -S ausgegeben wird.

Ich hab das geändert, schau mal.

von Marco (Gast)


Lesenswert?

Veit D. schrieb:
> Hallo,
>
> will mich ja nicht wieder umsonst reinhängen. Aber eigentlich ist ein LF
> eine ganz normale genutzte Endeerkennung für eine Datenübertragung. Die
> einfachste Art und Weise für einen Abschluss. Das ist damit auch nicht
> automatisch ein String. Meine Einlesefunktionen schauen immer nach LF
> oder CR. Dann weiß man das diese eine Übertragung abgeschlossen ist.
> Also wenn bei mir 128 + LF reinkommen würde, würde die 128 im Lesebuffer
> landen und das Einlesen an sich mit eintrudeln der LF Erkennung
> abgeschlossen sein. Danach wird die 128 anderswo verarbeitet.
> Wenn nur 128 ohne LF/CR eintreffen würde, würde meine Einlesefunktion
> ewig warten, außer ich bau noch einen Timeout ein, aber dann müßte das
> Eingelesene noch verwurfen werden.
>
> Wenn du nur immer ein Byte einliest, weil nie mehr sein kann, dann
> kannst du das LF abschneiden und dann verarbeiten. An dem '+LF' auf
> Relaiskartenseite wirst du wohl nichts ändern können.
>
> Am Besten du änderst deine Einlesefunktion.

Du hängst dich nicht umsonst rein :) Ich lerne immer wieder gerne dazu.
Aber du Verrennst dich möglicherweise in Dinge.
Möglicherweise verwechselst du hier EOF mit LF ?

LG

von Marco (Gast)


Lesenswert?

Jörg W. schrieb:
> Ah ja, es geht um das, was bei der Option -S ausgegeben wird.
>
> Ich hab das geändert, schau mal.

git ?

von Marco (Gast)


Lesenswert?

brauche den link nochmal dann bitte. Danke.

von Veit D. (devil-elec)


Lesenswert?

Marco schrieb:
> Möglicherweise verwechselst du hier EOF mit LF ?

Ich denke nicht. Aber das wird jetzt Jörg im Code "unterdrückt" haben.
Link: 
https://github.com/dl8dtl/conrad_8fa_relais/tree/new_option_handling

von Marco (Gast)


Lesenswert?

Veit D. schrieb:
> Marco schrieb:
>> Möglicherweise verwechselst du hier EOF mit LF ?
>
> Ich denke nicht. Aber das wird jetzt Jörg im Code "unterdrückt" haben.
> Link:
> https://github.com/dl8dtl/conrad_8fa_relais/tree/new_option_handling

Danke sehr.

von Marco (Gast)


Lesenswert?

Ich hasse Gambas wegen diesen blöden Variablen Deklarationen.
Perl ist deswegen meine Wahl, aber ständig Daten übertragen ist bei 
grö0eren Programmen dann auch wieder määh .)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.