Forum: Mikrocontroller und Digitale Elektronik VNC1L - Connection and Transfer


von Daniel F. (todi_aut)


Lesenswert?

In zuge unsere Diplomarbeit, ist es notwendig auf einen VNC1L-Modul, 
Daten an einen USB-Stick zu senden.
Die Aufgabe ist es die Geschwindigkeiten des Fahrradanhängers 
auszuwerten und anschließend auf den USB-Stick zu übertragen (TXT.file) 
- Geschieht im 10 Sekunden Intervall in der Form von Kilometer pro 
Stunde.

Wir wollen das Modul mit UART betreiben nun stellen sich die Fragen:

a) Können wir die Handshake-Leitungen verwerfen?
 - Nur Versorung und RXD / TXD, CTS auf GND, RTS nicht anschgeschlossen?


b) Wie können wir das Modul mit einem USB-Stick flashen UND wie wissen 
wir ob es funktioniert hat (Welche Version derzeit drauf ist?)?

mfg Todi

von ... (Gast)


Lesenswert?

Daniel Fida schrieb:
> a) Können wir die Handshake-Leitungen verwerfen?
>  - Nur Versorung und RXD / TXD, CTS auf GND, RTS nicht anschgeschlossen?

yep

Daniel Fida schrieb:
> Wie können wir das Modul mit einem USB-Stick flashen UND wie wissen
> wir ob es funktioniert hat (Welche Version derzeit drauf ist?)?

Die neue Versions-Datei auf den Stick kopieren lt.Anleitung von FTDI. 
Stick in das VNC1L stecken. Warten.
Beim booten meldet sich der VNC1L über den UART mit der Versionsnummer.

von acr (Gast)


Lesenswert?

CTS zwingend benutzen, sonst wird Müll geschrieben.

UART anschließen, einschalten. Interface meldet sich mit Versionsnr.

von Alf (Gast)


Lesenswert?

http://www.mikrocontroller.net/articles/USB-Stick_am_Mikrocontroller

>a) Können wir die Handshake-Leitungen verwerfen?
> - Nur Versorung und RXD / TXD, CTS auf GND, RTS nicht anschgeschlossen?

Nein, minimal RTS und CTS miteinander verbinden. Damit kann man aber 
nicht mehr schnell arbeiten, musst dafür sorgen, dass der VNC1L-Buffer 
niemals voll wird. Sonst gibts Datenverluste.

Besser: RTS und CTS mit einbeziehen in die µC-Kommunikation.

von Daniel F. (todi_aut)


Lesenswert?

@...
yep???

Meinst du jetzt mit dieser Antw. das wir die Handshake Leitung verwerfen 
können ODER ob nur Versorung, RXD / TXD, CTS auf GND, RTS nicht 
angeschlossen, stimmt oder falsch ist?

An welche Anleitung von FTDI hast du dich gehalten? (Link?)


----------------------------------------

@acr:

UART ist mit dem Arduino verbunden.
Nach Inbetriebnahme des Moduls erscheind keine Versionsnummer im Serial 
Fenster!
Für diese Versionsausgabe müssen keine weiteren Programmierschritte 
vorgenommen worden sein?


@Alf:
Aus welchen Grund RTS und CTS verbinden?

von Daniel F. (todi_aut)


Lesenswert?

Kann man hier keine Beträge Editieren?!

Status:
Über das Oszilloskop haben wir jetzt gemessen, dass das Modul dem 
Serial-Fenster etwas schickt. Jedoch wird es im Serial-Fenster nicht 
angezeigt.

von Matthias K. (matthiask)


Lesenswert?

Die Funktionensweise von RTS/CTS findest Du im Internet oder hier:
http://www.mikrocontroller.net/articles/RS-232 beschrieben. Der VNC1L 
hält den RTS-Pin auf L, wenn er weitere Daten annehmen kann. Das musst 
Du mit dem µC erfassen und wenn der RTS-Pin H wird entsprechend das 
Senden unterbrechen bis RTS wieder L wird.

Die Alternative mit RTS und CTS zu verbinden, wie im Datenblatt 
beschriebn, geht zwar, aber der Buffer des VNC1L wird recht schnell 
voll. Das bekommst Du dann nicht mit, was Datenverluste und meist den 
Totalabsturz zur Folge hat.

von acm (Gast)


Lesenswert?

Dadurch ist das Interface übrigens sehr langsam.

von Matthias K. (matthiask)


Lesenswert?

>Nach Inbetriebnahme des Moduls ...

Was ist das überhaupt für ein Modul?

Ein fabrikneuer VNC1L (als Chip) hat überhaupt keine Firmware drauf und 
kann demnach auch nicht kommunizieren. Ein VDIP1 zB. hat dagegen bereits 
die VDAP-Firmware, meist in einer alten Version, drauf und ist sofort 
bereit um mit einen USB-Stick zu arbeiten.

Hier 2 Videos für Uart-Kommunikation:
http://www.youtube.com/watch?v=r3fF48pI0Wo
http://www.youtube.com/watch?v=QezocqrQuNw

von Daniel F. (todi_aut)


Lesenswert?

Modul: VDIP
Chipsatz: VNC1L
Firmware: VDAP bereits oben (Laut Hersteller)

Weitere LÖsungsvorschläge wieso er die Versionsnummer nicht ausspuckt?
Einziges was wir sehen sind Zahlen aber sind keine Ascii-Zeichen.
In diesem Video (http://www.youtube.com/watch?v=QezocqrQuNw) ist der 
Zusammenhang zwischen Versionsbezeichnung und Hexwerten zu sehen, bei 
uns sind es nur willkürliche Zahlen.

von ... (Gast)


Lesenswert?

Auf dieser Seite findet ihr alle Informationen:
http://www.vinculum.com/documents.html

Welches Terminalprogramm benutzt ihr?

von Daniel F. (todi_aut)


Lesenswert?

Diese Seite kennen wir und haben schon die meisten PDF's recherchiert.

Status: Nach kleinen Abänderungen des Programmes schreibt er uns jetzt 
auch die Versionsnummer hin und ob ein Wechseldatenträger vorhanden ist 
oder nicht.
CTS ist jetzt auf LOW
RTS noch nicht verwendet --> es funktioniert!!!

von ... (Gast)


Lesenswert?

... schrieb:
> Daniel Fida schrieb:
>
>> a) Können wir die Handshake-Leitungen verwerfen?
>
>>  - Nur Versorung und RXD / TXD, CTS auf GND, RTS nicht anschgeschlossen?
>
>
>
> yep

Mit yep meinte ich, dass ihr es genau so wie ihr es selbst beschrieben 
habt machen kö´nnt.

von ... (Gast)


Lesenswert?

Der Firmwareupdate ist einfach. Die neue Firmware in der speziellen 
Namensgebung auf den Stick kopieren, den Jumper zum programmieren 
setzen, den Stick einstecken und Versorgungsspannung einschalten. Den 
Rest erledigt der Bootloader.

von Daniel F. (todi_aut)


Lesenswert?

Danke ...
So wie wir es beschrieben haben, habe wir es auch nochmal angeschlossen, 
getestet, neuste Firmware ist nun am Chip vorhanden.

Jetzt müssen wir nur mehr das Programm für das erstellen der Textfile, 
programmieren mit der Arduino-Software.

von ... (Gast)


Lesenswert?

Tut euch selbst einen Gefallen und nutzt den "short command set"

von Daniel F. (todi_aut)


Lesenswert?

... schrieb:
> Tut euch selbst einen Gefallen und nutzt den "short command set"

Sorry, ich fang jetzt mit diesen Satz nicht wirklich was an...was meinst 
den damit?

von ... (Gast)


Lesenswert?

Ihr könnt den VNC1L über UART sowohl im "extendend command set" als auch 
im "short command set" betreiben, siehe Datenblatt. Im SCS-Modus habt 
ihr mehr Möglichkeiten.

von todi_aut (Gast)


Lesenswert?

Die Kommunikation zwischen Controller und Modul funktioniert 
einwandfrei.
Aber das Modul sendet andauernd "command bad" - normal?
Aus den Videos (siehe oben - youtube) sieht man das Verhalten nicht.

von Matthias K. (matthiask)


Lesenswert?

todi_aut schrieb:
> Aber das Modul sendet andauernd "command bad" - normal?

Ein Kommando wurde nicht verstanden.

Das wichtigste bei der Kommunikation ist immer das warten auf ein Prompt 
(D:\>), bevor ein neues Kommando gesendet wird.

Empfehle erstmal am Anfang einfache Kommandos in dieser Reihenfolge:
vnc_wr_cmd("ECS"); // Extented Command Set
prompt_check();
vnc_wr_cmd("IPA"); // Monitor Kommandos Zahlen in ASCII
prompt_check();
vnc_wr_cmd("FWV"); // Firmwareversion anzeigen
prompt_check();
vnc_wr_cmd("DIR"); // Dir anzeigen
prompt_check();

von Daniel F. (todi_aut)


Lesenswert?

Matthias K. schrieb:
> todi_aut schrieb:
>> Aber das Modul sendet andauernd "command bad" - normal?
>
> Ein Kommando wurde nicht verstanden.



Das Problem mit "Command Bad" wurde gelöst (CTS haben wir vergessen auf 
LOW zu legen :D )

Schreiben / Erstellen des Files funktioniert problemlos.
Aber wie kann man im File einen Zeilenumbruch (Enter) machen?

von Matthias K. (matthiask)


Lesenswert?

Daniel Fida schrieb:
> Aber wie kann man im File einen Zeilenumbruch (Enter) machen?

\n\r

von Daniel F. (todi_aut)


Lesenswert?

Matthias K. schrieb:
> Daniel Fida schrieb:
>> Aber wie kann man im File einen Zeilenumbruch (Enter) machen?
>
> \n\r

Wir programmieren über Arduino und soll es so aussehen:
serial.print(\n\r);

Oder wie?

von Daniel F. (todi_aut)


Lesenswert?

ÄHM das ist doch HTML-Code ?

von Matthias K. (matthiask)


Lesenswert?

Daniel Fida schrieb:
> Wir programmieren über Arduino und soll es so aussehen:
> serial.print(\n\r);

Das kenne ich nicht. Da findet sich doch bestimmt in der Anleitung was 
zur Ausgabe von Steuerzeichen, wie NL, CR oder Tab.

In C gehts so:

send_string_rs232("Mein Text\n\rAb hier die 2.Zeile");

von Simon K. (simon) Benutzerseite


Lesenswert?

Daniel Fida schrieb:
> ÄHM das ist doch HTML-Code ?

Was ist HTML Code?

Probiere mal:
1
serial.print("\n");

@Matthias: Wenn, dann ist es \r\n aber nicht \n\r

von ... (Gast)


Lesenswert?

Daniel Fida schrieb:
> Schreiben / Erstellen des Files funktioniert problemlos.

Schön, das ist auch Aufgabe des VNC1L.

Daniel Fida schrieb:
> Aber wie kann man im File einen Zeilenumbruch (Enter) machen?

Das ist nicht Aufgabe des VNC1L. Den File musst du schon mit/in deinem 
Arduino
erstellen. Dann kannst du ihn zum Stick spielen.

von Daniel F. (todi_aut)


Lesenswert?

... schrieb:
> Das ist nicht Aufgabe des VNC1L. Den File musst du schon mit/in deinem
> Arduino
> erstellen. Dann kannst du ihn zum Stick spielen.


Wenn wir ein File im Arduino erstellen könnten, würden wir doch das 
Modul nicht brauchen!
Wir schreiben ja im Arduino, wie das File "aussehen" soll, und erst das 
Modul erstellt das File am Stick.

von Simon K. (simon) Benutzerseite


Lesenswert?

Daniel Fida schrieb:
> Wir schreiben ja im Arduino, wie das File "aussehen" soll, und erst das
> Modul erstellt das File am Stick.

Eben, deswegen kannste am Arduino ja sagen wo Zeilenumbrüche hinsollen.

von Daniel F. (todi_aut)


Lesenswert?

Simon K. schrieb:
> Daniel Fida schrieb:
>> Wir schreiben ja im Arduino, wie das File "aussehen" soll, und erst das
>> Modul erstellt das File am Stick.
>
> Eben, deswegen kannste am Arduino ja sagen wo Zeilenumbrüche hinsollen.

{
if (digitalRead(button) == 0){
digitalWrite(ledPin, HIGH);
delay(20);
digitalWrite(ledPin, LOW);
Serial.print("WRF ");
Serial.print("15");
Serial.print(13, BYTE);
Serial.print("Hallo \n\r fred");
delay(20);
}

else{
Serial.print("CLF LOG.TXT");
delay(100);
Serial.print(13, BYTE);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(5000);
digitalWrite(ledPin, LOW);
delay(1000);
while(1);
}

Das hallo Fred sollte so aussehen im textfile:
hallo
fred

von Daniel F. (todi_aut)


Lesenswert?

Erledigt...Zeilenumbruch funktioniert jetzt

von Simon K. (simon) Benutzerseite


Lesenswert?

Hast du denn das mal probiert? Habe ich letztens schon geschrieben.

Simon K. schrieb:
> Probiere mal:
>
1
> serial.print("\n");
2
>

von Daniel F. (todi_aut)


Lesenswert?

Simon K. schrieb:
> Hast du denn das mal probiert? Habe ich letztens schon geschrieben.
>
> Simon K. schrieb:
>> Probiere mal:
>>
1
>> serial.print("\n");
2
>>

Na klar haben wir das probiert, eigentlich alles was es zum probieren 
gibt ;)
Aber wie gesagt, es funktioniert.

Serial.print("WRF "); //Write file
Serial.print("13"); // Anzahl der Zeichen
Serial.print(13, BYTE); // Ende des Befehls durch "Enter"
Serial.print("Hallo fred "); // ausgegebener Text
Serial.print(13, BYTE); // Steuerzeichen
Serial.print(10, BYTE); // Steuerzeichen

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.