Leer RS232 manualmente
 

www.geocities.ws/danielperez    www.qsl.net/lw1ecp   Ing. Daniel Pérez    LW1ECP   

fb: Daniel Ricardo Perez Alonso    contacto: danyperez1{arrroba}yahoo.com.ar


Al depurar un PIC que envía datos serie a una PC, la cual no los detectaba o daba errores, surgió la duda de si había un error en cómo se estaban transmitiendo.
Se decidió sacar foto al osciloscopio, conectado a la línea de datos. Afortunadamente el PIC reiteraba continuamente los mismos datos.



Se procesó la imagen para resaltar la onda y la escala de tiempos. Se sabía que era de 9600 bit/s, por lo tanto cada bit 104us, un poco más que la división de 100us de la pantalla. Con este dato, se comenzó a deducir dónde comenzaba y terminaba cada bit. No confundirse, no es donde se dibujaron las líneas de tiempo del osciloscopio.
Recordemos que en RS232 el nivel alto es un cero, y el bajo es un 1. Y que en cada palabra se transmite primero el bit menos significativo.
Antes de comenzar cada paquete de bits, la línea está en un largo estado 1 (-11V). El osciloscopio se puso para disparar en el primer flanco ascendente, o sea que allí tenemos el bit de arranque, un 0.
Luego tenemos que contar 8 bits si la transmisión es de 7 + paridad, o 9 si es de 8 + paridad. Este último es nuestro caso.
Luego confirmamos que viene un 1 que es el bit de parada.
Luego un nuevo arranque y así sucesivamente.
Los bits de datos se pasaron de binario a decimal, y al valor ASCII correspondiente. Se aprecia que lo recibido es "F:".
El PIC debía transmitir con paridad par, o sea que la cantidad total de unos (incluyendo el bit de paridad) debe ser par. Esto se cumple.
En fin, todo indicaba un buen comportamiento del PIC. El problema estaba en el programa de recepción en la PC.
 

Nov 2019

En este otro caso no se disponía de una transmisión repetitiva de los mismos caracteres. Se tipean los caracteres en una app del celular, que los transmite por bluetooth, y los oscilogramas son a la salida del receptor HC-05. Se necesitaba crear un sketch de Arduino para decodificar los caracteres, pero era imposible hacerle reconocer la ñ, probando con el 164d del ASCII o con el 0241d del ANSI. Para capturar cada pulsación de teclado se puso el osciloscopio en modo disparo 'normal' (no auto), se puso la cámara en modo filmación, y luego se buscó el cuadro donde había quedado capturado el trazo. La 1a imagen es de una letra conocida. La 2a revela por qué no sirvieron los valores probados: se emite con dos caracteres (y tampoco son el equivalente Unicode).

 

 

<eof>