VNC1L - Connection and Transfer

OP #1635830
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
Gast #1635855
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.
Gast #1635858
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.
OP #1635878
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?
#1635984
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.
#1636051
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
OP #1636718
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.
OP #1636768
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!!!
Gast #1636782
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.
Gast #1636789
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.
Gast #1640927
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.
#1641081
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();
OP #1641315
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?
#1641453
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");
Gast #1641598
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.
OP #1644694
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.
OP #1644750
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
OP #1645220
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren