Hiperterminal, Bluetooth, USART mejorado, PIC

Estoy usando PIC16F1824, Xtal 8Mhz y módulo bluetooth con tasa de baudios 9600. Cuando envié datos usando hiperterminal al módulo BT, funciona bien. Pero cuando envío los mismos datos usando Android (Amarino), los datos recibidos estaban dañados.

¿Qué salió mal?


Información adicional: datos dañados. @Kevin: Datos originales: 1234567890 Pero cuando envié usando Android, ¡se lee como 1234! 0 De alguna manera, faltaba 56789. **

Otro ejemplo: ABCDEF, ¡pero solo se lee como ABCD! Básicamente solo sabe leer los primeros 4 caracteres.

Necesitamos muchos más detalles que esto. Hay toneladas de cosas que podrían haber salido mal.
¿Está seguro de que la configuración de Amarino coincide con la de su Hyperterminal? Parece ese tipo de problema.
¿Puedes describir lo que quieres decir con "Corrupto"? ¿Realmente lo analizaste?
lo que intentan decir es que una simple toma de alcance de los datos en la línea le indicará dónde se origina el problema.
los mismos caracteres corruptos en ambas ocasiones con datos diferentes significa que casi se garantiza que esto sea intencional de Android o del módulo.

Respuestas (2)

No diste mucha información, pero esto huele a un problema de configuración del puerto serie. ¿Está realmente seguro de que la velocidad en baudios, el número de bits de datos, la paridad y el número de bits de parada es el mismo en ambos casos? Probablemente no. Dado que funciona con Hyperterm, vea en qué está configurado, luego asegúrese de que Android esté configurado de la misma manera.

También mire cómo se maneja el control de flujo. Si la unidad espera usar RTS/CTS y el Android no tiene esas líneas conectadas o no las tiene encendidas, es posible que no funcione.

donde tiene dos plataformas diferentes para terminales, esto parece probable.
Gracias @Olin. Buscaré cosas de RTS/CTS. No hay configuraciones para la tasa de baudios, la paridad o RTS/CTS en Android. Voy a investigar más sobre esto. Normalmente todos los ajustes se realizan en el módulo bluetooth. El cual configuré el Módulo BT 9600 8 N 1 y funciona para Hyperterminal. Una cosa más, tengo otro MCU, PIC18F452. Funciona perfectamente bien. Usando el mismo módulo BT, puedo enviar datos usando Hyperter y Android. La diferencia es que PIC18F452 usa USART mientras que PIC16F1824 usa USART MEJORADO.
@Olin, el hecho de que algunos de los datos salgan ilesos, pero algunos no me dicen que es más cobarde que la velocidad en baudios. Si se tratara de velocidad en baudios, sus datos se corromperían en su totalidad. Con un error como este, alguien está corrompiendo los datos, casi garantizo que está en el teléfono Android, aunque me encanta Android.
Gracias @Kortuk. Al principio, no di muchos detalles sobre los datos y el código. Entonces, según esa información, @Olin me pidió que verificara RTS/CTS.
@mlam, ahora que ha proporcionado más información, posiblemente podría ser un problema de saturación de búfer. Eso podría significar que el módulo espera algún tipo de control de flujo que Android no está haciendo.
@Olin, verifiqué la configuración del puerto. El control de flujo es Ninguno. Probé con otro software serial rs232 y probé diferentes controles de flujo, pero todos fallaron. Solo se leen 4 caracteres. ¿Podría ser la configuración de MCU? ¿Oscilador? ¿Temporizador?
Señalaste la fuente, androide. No tiene configuraciones, pero lo que hice fue ralentizar el envío de datos. En lugar de enviar la cadena completa, básicamente envía byte por byte. Gracias @Olin!

He intentado esto usando una aplicación Sena Bluetooth en Android para mi Android. Me aseguré de que mi CTS y RTS de mi módulo bluetooth estuvieran conectados entre sí. Mi aplicación bluetooth requería que estableciera la velocidad en baudios en 115200. Tuve éxito en la transferencia de datos.

Deberá encender su módulo bluetooth y cambiar la configuración de la velocidad en baudios. Consulte el siguiente enlace:

¿Cómo cambio la velocidad en baudios de bluesmirf sin conectarme a la PC?

Gracias @Sai. No entiendo lo que quieres decir con "Me aseguré de que mi CTS y RTS de mi módulo bluetooth estuvieran conectados entre sí". Mi configuración de velocidad en baudios se ve bien, 9600 8 N 1. Funciona con Hyperter.
Por favor, no utilice firmas. Su gravatar, nombre de usuario, reputación, recuento de insignias, etc., se encuentran en la esquina inferior derecha de su respuesta.
A menos que esté utilizando el control de flujo, puede acortar sus pines CTS (claro para enviar) y RTS (listo para enviar) entre sí para indicar que el dispositivo siempre está listo para enviar y siempre listo para recibir.
Además, las ediciones deben ser en su mayoría independientes de los comentarios y dejar su respuesta en su mayoría contigua: ¡desea que sea lo más fácil de leer y comprender posible! Para responder a la pregunta de @mlam, debe aclarar por qué conectó CTS y RTS en la segunda oración, no como una edición, o responder directamente en un comentario si no siente que la información pertenece a su respuesta, o ambos.
@Kevin: Lo siento. No pude comentar la publicación de mlam. soy capaz de hacerlo ahora