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
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.
CTS zwingend benutzen, sonst wird Müll geschrieben. UART anschließen, einschalten. Interface meldet sich mit Versionsnr.
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.
@... 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?
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.
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.
>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
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.
Auf dieser Seite findet ihr alle Informationen: http://www.vinculum.com/documents.html Welches Terminalprogramm benutzt ihr?
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!!!
... 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.
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.
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.
Tut euch selbst einen Gefallen und nutzt den "short command set"
... 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?
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.
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.
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();
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?
Daniel Fida schrieb:
> Aber wie kann man im File einen Zeilenumbruch (Enter) machen?
\n\r
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?
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");
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
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.
... 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.
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.
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
Hast du denn das mal probiert? Habe ich letztens schon geschrieben. Simon K. schrieb: > Probiere mal: >
1 | > serial.print("\n"); |
2 | >
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.