Bit-Unterschied zwischen 16550A/16C950

M

Mathis Moder

Guest
Hi,
ich hab hier ein kleines Problem mit seriellen Ports, und da an dieser
Stelle schon ein wenig was in der Richtung erörtert wurde, hoffe ich mal
dass ich nicht zu sehr OT bin. Ich habe zwei verschiedene Seriell-Porttypen
im Rechner, diese verarbeiten das gleiche Eingangssignal unterschiedlich,
explizit heisst das, der mit dem 16550A liegt richtig, der mit dem 16C950
lässt bei jedem zweiten Byte das zweitoberste (2^6) weg. Theoretisch sollte
es also irgendwo/wie einen logischen Grund geben, der in der
Portkonfiguration liegen dürfte (normal 19200 Baud, 8n1).

Hier die Ausgabe per dmesg:
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS04 at port 0xd000 (irq = 11) is a 16C950/954
ttyS05 at port 0xd400 (irq = 11) is a 16C950/954

setserial -G sagt das dazu:
/dev/ttyS0 uart 16550A port 0x03f8 irq 4 baud_base 115200 \
spd_normal skip_test
/dev/ttyS4 uart 16950/954 port 0xd000 irq 11 baud_base 921600 \
spd_normal skip_test

Mein kleiner Dumper bringt mir das (ttyS0 ist richtig)
matiz@cardserver zugang $ ./dump-port.pl /dev/ttyS0
ab05d30012430030
matiz@cardserver zugang $ ./dump-port.pl /dev/ttyS4
6b05930011fd000a

Hat vielleicht irgend jemand eine Idee?
Grüsse, Mathis
 
In article <ber918$mtg$1@styx.primacom.net>,
Mathis Moder <spam-remove_matiz@gmx.de> wrote:

ich hab hier ein kleines Problem mit seriellen Ports, und da an dieser
Stelle schon ein wenig was in der Richtung erörtert wurde, hoffe ich mal
dass ich nicht zu sehr OT bin. Ich habe zwei verschiedene Seriell-Porttypen
im Rechner, diese verarbeiten das gleiche Eingangssignal unterschiedlich,
explizit heisst das, der mit dem 16550A liegt richtig, der mit dem 16C950
lässt bei jedem zweiten Byte das zweitoberste (2^6) weg. Theoretisch sollte
es also irgendwo/wie einen logischen Grund geben, der in der
Portkonfiguration liegen dürfte (normal 19200 Baud, 8n1).
Kann das ein "naaloges" Problem mit Pegeln / Pegelwandlern sein?

Ich habe die 16C950 im Einsatz, die liefen von Anfang an absolut problemlos
mit meinem vorhandenen 16C550-Treiber - inzwischen fahre ich die aber im
erweiterten Modus, um einen Teil der neuen Features nutzen zu können.

cu
Michael
 
Hallo Mathis,

ist es möglich das die erweiterten Register des 16C950 auf nicht gewünschten
Default-Werten stehen? Diese haben zusätzliche Tack-teiler/multiplikatoren.
Ist die Quarzfrequenz OKay? wie siehts mit anderen baudraten aus.
Prüfe mal auf Framing-Error's

explizit heisst das, der mit dem 16550A liegt richtig, der mit dem 16C950
lässt bei jedem zweiten Byte das zweitoberste (2^6) weg. Theoretisch sollte
es also irgendwo/wie einen logischen Grund geben, der in der
Portkonfiguration liegen dürfte (normal 19200 Baud, 8n1).
RS232 arbeited mit LSB-First so das der zunehmende Fehler bei den höheren Bits
wirklich auf eine fehlerhafte Baudrate hindeuted. Sende mal mit dem 16C950
und analysiere mit nem Oszi, falls eins zu Hand.

Mein kleiner Dumper bringt mir das (ttyS0 ist richtig)
matiz@cardserver zugang $ ./dump-port.pl /dev/ttyS0
ab05d30012430030
matiz@cardserver zugang $ ./dump-port.pl /dev/ttyS4
6b05930011fd000a

Hat vielleicht irgend jemand eine Idee?
Hat Linux nicht mal probleme mit dem 16C950 gehabt??
Probiers mal mit nem anderen Betriebssystem (DOS) mit anderen Treibern.

Grüße
Erik
 

Welcome to EDABoard.com

Sponsor

Back
Top