mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik VNC1L - Connection and Transfer


Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: acr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CTS zwingend benutzen, sonst wird Müll geschrieben.

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

Autor: Alf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/USB-Stick_...

>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.

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: acm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dadurch ist das Interface übrigens sehr langsam.

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht 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:
Youtube-Video "VNC1l-1A VDIP2 USB HOST"
Youtube-Video "Roteno Labs - MSP430 Flash Drive Test"

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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 (Youtube-Video "Roteno Labs - MSP430 Flash Drive Test") ist der 
Zusammenhang zwischen Versionsbezeichnung und Hexwerten zu sehen, bei 
uns sind es nur willkürliche Zahlen.

Autor: ... (Gast)
Datum:

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

Welches Terminalprogramm benutzt ihr?

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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!!!

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tut euch selbst einen Gefallen und nutzt den "short command set"

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: todi_aut (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht 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();

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Matthias K. (matthiask)
Datum:

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

\n\r

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ÄHM das ist doch HTML-Code ?

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht 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");

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daniel Fida schrieb:
> ÄHM das ist doch HTML-Code ?

Was ist HTML Code?

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

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

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Daniel Fida (todi_aut)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Erledigt...Zeilenumbruch funktioniert jetzt

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du denn das mal probiert? Habe ich letztens schon geschrieben.

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

Autor: Daniel Fida (todi_aut)
Datum:

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

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.