Leer RS232 manualmente
danielperez.webcindario.com  Ing. Daniel Pérez LW1ECP  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.
 

<eof>