Forum: Mikrocontroller und Digitale Elektronik CH341 transparent?


von R. F. (rfr)


Lesenswert?

Hallo allerseits,

ich schreibe gerade eine Software in C, die auf einer Arduino Hardware 
laufen soll. Sie enthält eine Kommunikation zwischen dem AVR und einem 
Termial. Der Arduino hat aber einen CH341 drin. Ich wüsste jetzt, ob das 
programmiertechnisch einen Unterschied macht.

Gruss

Robert

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Seriell über USB sendet üblicherweise nicht Zeichen pro Zeichen, denn 
USB arbeitet mit Paketen, und ein Zeichen pro Paket ist sehr 
ineffizient. Weiß nicht, wie der CH341 das handhabt, aber übliche 
Strategie ist, dass man, sofern nicht gerade der Puffer zum Absenden 
eines USB-Pakets voll ist, einige Zeit wartet, ob noch weitere Zeichen 
kommen, bevor das zum Host geht.

Keine Ahnung, ob das für deine Applikation nun ein Unterschied zu einer 
echten seriellen Schnittstelle ist oder nicht.

von Stefan F. (Gast)


Lesenswert?

R. F. schrieb:
> Ich wüsste jetzt, ob das
> programmiertechnisch einen Unterschied macht.


Einen Unterschied zu was?

von Olli Z. (z80freak)


Lesenswert?

Du hast programmtechnisch keinen Einfluss auf den USB Chip. Das einzige 
was der tut ist dem Arduino ein serielles Terminal vorzugaukeln und 
Deinem PC einen virtuellen COM Port, via Treiber, um vom PC aus so zu 
tun, als wäre dieser direkt an die TxD und RxD Leitungen des Atmega328 
angeschlossen.

Auf der Atmegaseite programmierst Du also nur über den UART. Wie der 
Ch341 das dann in Pakete packt ist sache dieses Chips.

von R. F. (rfr)


Lesenswert?

Vielen Dank für die Antworten.

Ich brauche in der Software keine Unterscheidung, ob der Chip da ist 
oder nicht? Das wird doch alles interruptgesteuert? Oder nicht

Gruss

Robert

von Stefan F. (Gast)


Lesenswert?

Welche Software meinst du, und was wird Interruptgesteuert?

von R. F. (rfr)


Lesenswert?

Daas Programm, welches ich schreibe und auf dem AVR läuft.

von Stefan F. (Gast)


Lesenswert?

Dein Programm auf dem AVR spricht den UART an, wahlweise mit oder ohne 
Interrupts.

Die Kommunikation über einen USB-UART Adapter unterscheidet sich zu 
einer Kommunikation über RS232 Adapter nur im Timing. Du wirst bei USB 
Verzögerungen im einstelligen Millisekunden-Bereich feststellen.

Dein Programm muss so geschrieben sein, dass es dies toleriert. Wenn es 
Dir nur um Bildschirmausgaben und Tastatureingaben geht, spielt dieses 
Detail im Timing keine Rolle.

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.