Forum: Mikrocontroller und Digitale Elektronik USB2Seriell


von can (Gast)


Lesenswert?

Ich habe ein Programm, das die Hex-code von dem PC durch serielle
Schnittstelle nach einen Microcontroller übertragen. Das heiß, dieses
Programm funktioniert nur mit einer seriellen Schnittstellle.
Nun habe ich einen Laptop erworben und der Laptop hat keine serielle
Schnittstelle, deshalb habe ich einen USB-Serielle Schnittstelle
gekauft und an meinen Laptop angeschlossen.
Wie soll ich dann nun an dem Programm melden, das es eine serielle
Schnittstelle gibt ?

von Peter D. (peda)


Lesenswert?

"...und an meinen Laptop angeschlossen."

Und dann schreit er aber doch nach dem Treiber.

Wenn Du den dann installiert hast, sieh doch mal unter den
Schnittstellen nach.

Bei mir war da eine COM4, aber auch nur solange, wie das Kabel
eingesteckt ist.

Du must also das Kabel einstecken, bevor Du das Programm startest und
erst dann rausziehen, nachdem das Programm wieder beendet ist.


Beachte aber, der USB hat eine elend lange Latenzzeit.
Es ist also günstig, große Datenbrocken am Stück zu versenden, damits
auch schnell geht.
Ich schicke deshalb die Daten in Paketen zu 512 Byte.


Peter

von Benedikt (Gast)


Lesenswert?

Ich hatte auch gedacht, dass USB Die Daten Packetweise verschickt.
Zumindest bei meinem Adapter (eigentlich ein USB-LCD Adpater für ein
serielles Crystalfontz Display, hat aber einen FT232 Chip drauf) kommen
auch einzelne Bytes quasi sofort an. Man kann zumindest keine
Verzögerung erkennen, wenn der CPU nicht gerade zu 100% ausgelastet
ist.

von Peter D. (peda)


Lesenswert?

@Benedikt,

"sofort" ist relativ.
Bei 1200 Baud wirst du keinen Unterschied merken, bei 115200 Baud
dagegen schon.


Peter

von can (Gast)


Lesenswert?

Hallo peter dannegger
Danke für die Hinweise.
Bei mir ist es auch COM4, kann ich an dem Programm melden, daß es eine
COM4 gibt und das Programm starten, als der Laptop eine serielle
Schnittstelle hätte?
Der Port am Laptop ist physikalisch USB und das Programm sendet die
Daten nach der internen Implementierung an serielle Schnittstelle,
deshalb bin ich nicht sicher ob es wirklich funktioniert.
Für mein Zweck habe ich kein Problem mit der Latenzzeit

von Thorsten (Gast)


Lesenswert?

@Peter:

Ich nehme mal an, diese Latenzzeit kann man nicht wesentlich verkürzen,
oder ? Ich programmiere meinen ATmega (Bootloader) via USB, und das ist
sooooooo langsam. Bei gleicher Baudrate ist es bei einer normalen
seriellen Schnittstelle um ein Vielfaches schneller.

Thorsten

von Peter D. (peda)


Lesenswert?

@Thorsten,

siehe:

http://www.mikrocontroller.net/forum/read-4-53146.html#85425

Bis ATMega16 ist das auszuhalten und mehr brauchte ich bisher auch
nicht.

Bei einem randvollen ATMega128 siehts aber schon anders aus.

Da könnte man vielleicht die neuen Routinen ans Ende schreiben, damit
nicht immer alles komplett programmiert werden muß.
Und dann eine intelligente PC-Software, die mit dem letzten gebrannten
Hex-File vergleicht und nur die Unterschiede runtersendet.
Die könnte auch erst eine CRC anfordern, damit sie weiß, daß es auch
wirklich das letzte Hex-File war.


Peter

von nguyen le thuan (Gast)


Lesenswert?

Cau 10! sao may hom nay con ko thay cau online?

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.