CH341 transparent?

OP #5575082
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
Moderator Persönliche Seite #5575088
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.
#5575097
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.
Gast #5575143
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.

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