Forum: Mikrocontroller und Digitale Elektronik Eure Erfahrungen zu Geschwindigkeit und Zuverlässigkeit von VDIP1, VNC1L, RS232, USB-Stick


von Michael S. (mschildt)


Lesenswert?

Guten Abend,

Für ein Projekt nutze ich einen ATMega644 um 8 Bit Daten zu loggen, die 
maximal mit 500 Hz ankommen und einen VNC1L (Firmware VDPS 3.68) um die 
Daten auf einen USB-Stick zu schreiben oder/und an einen PC zu senden.

Beim ersten Prototypen habe ich das VDIP1 Modul verwendet und RX/TX vom 
ATMega und VNC1l gekreuzt, und CTS vom VNC1L mit Masse verbunden. 
Baudrate ist auf 57600 eingestellt. Mit dieser Version läuft das Logging 
mal 30 Minuten mal 1.5h, bis der VNC1L hängen bleibt. Ich schreibe immer 
1,5kByte auf einmal auf den Stick.

Bei der nächsten Platinen-Version habe ich den VNC1L direkt auf die 
Platine gelötet und RX/TX wieder gekreuzt und RTS/CTS Pins vom VNC1L mit 
zwei Pins des ATMega verbunden, um den Handshake nutzen zu können und so 
Verzögerungen beim VNC1L feststellen zu können. Ich habe zuerst mit 
1MBaud getestet. Hier bleibt der VNC1L regelmäßig beim zweiten 1,5KByte 
Block hängen und seine LED blinkt ewig vor sich hin. Und in dem was er 
auf den Stick schreibt sind einige Fehler enthalten. Dann habe ich auf 
57600 Baud umgestellt und bisher gab es damit keine Probleme. Der ATMega 
läuft mit 16MHz, kann also die 1MBaud ohne Fehler produzieren.

Hat schon jemand den VNC1L zuverlässig mit serieller Verbindung und 
hohen Baudraten über längere Zeiträume laufen gehabt? Es gibt ja einige 
Beträge zum VNC1L mit angefangenen Projekten, wo man nie erfährt wie es 
ausgegangen ist. Anderen Beiträge von Projekten die erfolgreich waren, 
scheinen sehr geringe Datenraten zu benötigen.

Ich werde die nächsten Tage mit einem Oszi schauen, ob der Handshake 
auch wirklich funktioniert. Aber eine andere Idee warum das schief läuft 
habe ich nicht. Fällt jemand vielleicht noch etwas ein, was man testen 
könnte?

Grüße.

PS: Es gibt scheinbar einen Nachfolger 
http://www.electropages.com/viewArticle.aspx?intArticle=15224

von -Gast_XIV (Gast)


Lesenswert?

- Hast du die neueste Firmware?
- Ist das auch bei USB Sticks anderer Hersteller der Fall
  (fang mit den besten und schnellsten an)

von Michael S. (Gast)


Lesenswert?

Hallo Michael Schildt,

bei meinen Tests mit dem VNC hatte ich bei kontinuierlichen 
Datenübertragungen mit mehr als 19200 Baud keine echte Freude.
Allerdings habe ich auch kein Handshake benutzt.

Wenn Du "nur" max. 500 Byte/Sekunde übertragen musst (das sind dann 
brutto ca. 5000 Bit/Sekunde), dann sollte sogar eine Baudrate von 9600 
Baud ausreichend sein.
Versuch's doch einfach mal mit 'Gemütlichkeit'.

Denn wenn Du mit 57KBbaud 1.5kB Daten versendest, dann hat der VNC 
einiges zu packen - und er hat ja auch nur einen beschränkten Puffer 
(wieviel ist mir aber nicht bekannt).

Wenn jetzt der Einwand kommt, dass Dein Controller bei dieser geringen 
Baudrate keine Zeit mehr für andere Arbeiten hat:
Schreibe die zu sendenden Daten in einen Ringpuffer und lass den 
Controller per Interrupt senden - dann kommen sich Datenverarbeitung und 
Datenversand nicht in die Quere.


mfg

Michael S.

von Michael S. (mschildt)


Lesenswert?

-Gast_XIV schrieb:
> - Hast du die neueste Firmware?
Ja.
> - Ist das auch bei USB Sticks anderer Hersteller der Fall
>   (fang mit den besten und schnellsten an)
Ja, 4 getestet, zwei gingen (mehr oder weniger)

@ Michael S: Wo ich das las mit deiner Datenratenrechnung, kam mir das 
wenig vor. Da ist mir aufgefallen, dass ich einen Faktor 8 unterschlagen 
habe. Pro aufgenommen Byte kommen noch 7 Byte für Timestamp, ID und Type 
hinzu. Das wären dann netto 40000Baud. Mit Start und Stoppbit so ca. 
50000Baud. Ich nutze zwei Buffer, damit in einen aufgenommen und der 
Andere gespeichert werden kann.

Grüße.

von Michael S. (mschildt)


Angehängte Dateien:

Lesenswert?

Nabend,

Der Test mit einem Oszi hat sich gelohnt. Der Fehler hat sich schnell 
gezeigt. Auch wenn der VNC1L das Signal /CTS auf logisch 1 gesetzt hat, 
hat der ATMega trotzdem lustig weiter Daten gesendet. Da ging Einiges 
verloren (Bild1).
Ich hatte in der Firmware die Leitungen für CTS und RTS vertauscht. 
Nachdem ich das korrigiert hatte, sah die Welt schon ganz anders aus 
(Bild2).
Jetzt habe ich mit 57600Baud und 1MBaud getestet und bisher keine 
Probleme. :) Ist halt Freitag der 13.

Aber erst der Langzeittest wird zeigen, ob das System stabil läuft.

Grüße.

von hatietz (Gast)


Lesenswert?

Habe einen Teensy mit einem VDIP1 per UART mit der Standard Baud Rate 
verbunden, um mehrere Human Interface devices am VDIP1 über Teensy dann 
als ein zentrales hunman interface device an den PC zu übertragen. Dabei 
reichte die Standard Baud Rate nicht. Laut Hersteller Beschreibung habe 
ich dann versucht die Baud Rate per VDIP1 Monitor Commands  als auch 
über die VDIP1 Firmware zu erhöhen. Dies gelang mir aber zunächst nicht. 
Habe dann den Hersteller angeschrieben, der mich dann an deren manuals 
verwies, was mir aber nicht weiterhalf, da ich diese kannte und 
erfolglos nach deren Massgabe
kein Baud Raten Erhöhung hinbekam. Nachdem ich diesen Zustand per mail 
an den Hersteller weitergab mit der Bitte um Hilfe gab es 3 Wochen lang 
keine Antwort. Als ich mich darüber bei der Marketingabteilung 
beschwerte gabs ledichlich eine Entschuldigung - der Laden sei z. Zt. 
überlastet, er würde sich aber darum kümmern, wenn ich das Problem noch 
hätte. Ich hatte, aber nach weiteren 3 Wochen immer noch keine Antwort ( 
seltsamer Laden, dort kaufe ich nicht mehr). Zwischenzeitlich aber ich 
per Zufall in einem Forum gelesen, dass die zu erzeugene Firmwaredatei 
einen bestimmten Namen (ftrfb.ftd) haben musss und siehe da es 
funktionierte jetzt auch für mich. Das VDIP1 manual beschreibt diese 
Einschränkung nicht. Der Laden Future Technology Devices International 
Ltd (FTDI) ist gar nicht kundenfreundlich, allerdings läuft die 
Schaltung mit 57600 Baud einwandfrei über mehrere Wochen.

von StinkyWinky (Gast)


Angehängte Dateien:

Lesenswert?

Nach meiner Messung wird CTS gesetzt, sobald 50 Zeichen an den VDrive2 
gesendet worden sind, gemessen @ 115200.
Befehlssequenz: 08h 20h 00h 00h 00h 4dh 0dh 01h 02h 03h ... 4dh
Cursor A: 0ms
Cursor B: 4.57ms, CTS geht auf H
Cursor C: 23.76ms, CTS geht wieder auf L

In dieser Messung gibt es einen Überlauf beim VDrive2 und er "hängt".

Somit dürften 50 Bytes / 28ms = 1770 Bytes / s als Dauertransfer 
erreichbar sein. Wahrscheinlich ist diese Messung abhängig vom 
verwendeten Stick.

von StinkyWinky (Gast)


Lesenswert?

Sorry, es muss heissen RTS und nicht CTS. Im Bild ist es richtig.

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.