la señal rs232 en el osciloscopio no cuadra

Programé un pic18f4685 para usar el UART integrado para enviar un Ascii (48), para su información, eso es un cero, sin fin. 19200baudios 8-N-1 usando una placa prototipo NorthMicro NM101 .

void    TX_UART(void)
{  
unsigned char phrase[]="Press 0 to Exit\0";
unsigned char TX_Value;
lcd_clear();
lcd_goto(0x40);
lcd_puts(phrase);
lcd_goto(0x00);

//  Initialize SPBRGH:SPBRG for 19200 baud  BRGH =1 BRG16=0
SPBRGH  = 0;
SPBRG   = 64;
TXSTAbits.BRGH  = 1;
BAUDCONbits.BRG16   = 0;
TXSTAbits.SYNC  = 0;
RCSTAbits.SPEN  = 1;
TXSTAbits.TXEN = 1;  

while(KEYBOARD()!='0')
    {
      while(!TXSTAbits.TRMT)
      {}
        TXREG='0';
      while(!TXSTAbits.TRMT)
      {}
        TXREG='0';
      while(!TXSTAbits.TRMT)
      {}
        TXREG='0';      
    }               

lcd_clear();        
}           

He probado el chip pre-max232 del pin RC6, por lo que aún no se ha invertido y solo tiene aproximadamente 0,5 Vp-p.

Según las fuentes de Internet, debería ver un bit de inicio/LSB a MSB/bit de parada.

Basándome en esa información, pensé que debería ver en el alcance de Ascii (48) una señal como esta: 1000011001 pero parece que tengo un bit adicional. ¿Qué me estoy perdiendo? [Cada 2 bits/Div]

Cuando la señal es recibida por PuTTY, llega bien, sin fallas. Solo quiero entender por qué estoy viendo lo que tengo y no lo que esperaba.

ingrese la descripción de la imagen aquí

Eso parece un visor 5462x. ¿Has jugado el clon incorporado de Asteroids?
Sí, nos llevó de vuelta a 1984. Fue un puntazo.
Si su señal es realmente .5V TT algo definitivamente está mal. ¿Quizás has conectado la salida del MAX232 a la salida del PIC? Intente quitar el MAX e intente nuevamente para ver qué voltajes obtiene. Para dar sentido a la forma de onda, coloque un retraso entre los caracteres, como sugiere David.
¿Llegaste alguna vez al fondo de esto? Estoy viendo lo mismo, soy nuevo en PIC y estoy bastante seguro de que es un problema de configuración porque vi lo mismo en los pines de E / S hasta que borré el registro analógico. gracias james

Respuestas (1)

Tampoco estoy seguro de lo que estás viendo en el alcance. Pero puedo decirte algunas cosas importantes que te ayudarán a interpretar lo que ves.

Un bit inactivo, cuando no se transmiten datos, es un '1'. Anotaré un bit inactivo con una "I".

Un bit de inicio es un "0" binario, y lo anotaré con una "A". Un bit de parada es "1" y será una "B".

Un "0" ASCII es un 48 decimal, un 30 hexadecimal o un 00110000 binario. Lo llamaremos "D".

Cuando se transmite un byte (8-N-1), se envía como IIIADDDDDDDDBIIII. Puede haber más, menos o ningún bit inactivo, dependiendo de qué otros datos se estén transmitiendo. Por ejemplo, dos bytes transmitidos uno tras otro podrían ser: IIIIIADDDDDDDDBADDDDDDDDBIIII.

Los datos se transmiten primero por el bit menos significativo, es decir, en orden inverso al que normalmente se escribe. Entonces, un ASCII "0", cuando se transmite por cable, sería 0000011001, en orden cronológico y sin bits inactivos. Con bits inactivos, agregue algunos 1 al principio y al final de eso.

Cabe señalar que cuando digo '0' y '1', me refiero a los datos que salen del UART, donde '0' es un voltaje bajo y '1' es un voltaje alto. Un chip controlador RS-232 estándar invierte eso, por lo que un '0' binario es un voltaje alto y un '1' es un voltaje bajo. Así que ten eso en cuenta, dependiendo de dónde estés probando la señal.

Pero aquí está el problema: la imagen de su alcance no coincide con nada de esto. No hay una cadena de 5 bits que sean todos 0 o todos 1 para desactivar. Además, el nivel de la señal es de aproximadamente 0,7 V, lo que es un poco problemático.

Esto es lo que yo haría: Disminuir la velocidad de transmisión. Déjalo a 19200 baudios, pero pon algo de tiempo entre bytes. Tal vez un byte, retraso de 0,25 segundos, luego otro byte, retraso, etc. Lo que esto hará es permitirle capturar un solo byte en el o-scope sin confundirse con otros bytes que se transmiten uno tras otro. Capture una imagen de alcance de esto y agréguela a su pregunta. También averigüe y explique por qué el nivel de la señal es tan bajo.

Suena como un buen plan de acción. Lo haré hoy y lo editaré esta noche.