Estoy transmitiendo RS485 a través de:
Aplicación mono - > Dispositivo USBTTY de Linux - > Adaptador RS485 con un terminador 100R agregado - > ~ 1m CATV - > SN65176 con un terminador 100R agregado - > PIC.
A través de la depuración, puedo ver que la transmisión de la aplicación al PIC es exitosa y que la transmisión del PIC fuera de su puerto serial también está bien. Sin embargo, cuando el SN65176 cambia de modo de recepción a modo de manejo, el nivel bajo de salida es muy ruidoso (ver captura de alcance):
Enestacapturadealcance,elcanal1(azul)eselladodedatos(R/D)delSN65176,yelcanal2(amarillo)estáenelterminalRS485cercadelaPC.
Enestecasoparticular,elprimerbytefuedelaPC(00001101)yelsegundobytefuedelPIC.Sesuponíaquedebíaser00011101peroserecibiócomo00000100.
AquíestáelcódigodepuertoMono/C#relevante:
port=newSerialPort(portName:portName,baudRate:115200,parity:Parity.None,dataBits:8,stopBits:StopBits.One){Encoding=ASCIIEncoding.ASCII,Handshake=Handshake.RequestToSend,DtrEnable=false,RtsEnable=false,WriteTimeout=1000//ms};port.Open();//...Port.ReadByte()
EladaptadorRS232a485esun
Va-Vb = 44mV
Va-gnd = 311mV
Vb-gnd = 267mV
El XS201A también afirma usar "Control de envío automático de datos", para ser alimentado por puerto desde RTS / DTR / TXD, y para abreviar RTS + CTS y DTR + DSR + CT.
Con el SN65176 desconectado, y algunas desviaciones ligeramente diferentes, parece que el XS201A tiene una unidad de línea sin documentar de 4 bits, después de lo cual el controlador está deshabilitado:
Esto muestra dos 0x33 consecutivos desde la PC. Hay un bit de parada e inicio que rodea a ambos bytes, más el tiempo de espera de la unidad final.