serial-port - son - velocidad de un puerto serial
No se puede guardar la configuraciĆ³n de velocidad de baudios? (4)
El comando AT & W debe enviarse con la nueva velocidad en baudios. En otras palabras, después de haber cambiado la velocidad de transmisión a 19200, el módem no puede continuar recibiendo comandos con la velocidad anterior. Intente cambiar la velocidad de transmisión del host a 19200 antes de enviar el comando AT & W.
El módem GSM que tengo está configurado a 115200 baudios por defecto. Tengo el microcontrolador PIC18 conectado a él con una velocidad en baudios de 19200. Cambié la velocidad en baudios del módem a 19200 y luego guardé la configuración, pero cada vez que reinicio el módem, la velocidad en baudios vuelve a 115200.
Estos son los siguientes comandos que utilicé.
Cambiar la tasa de baudios
AT+IPR=19200
Luego volví a abrir el hyper-terminal (masilla) con 19200 baudios para guardar la configuración actual.
Guardar ajustes
AT&W
Pero al reiniciar el módem, la velocidad en baudios vuelve a 115200. Estoy usando el módulo M6000 GSM / GPS (Tk115 Gps Tracker) pero no hay mucho soporte para ello, aquí está la hoja de datos para referencia.
¿Estoy guardando la configuración correctamente?
Estaba pensando en cambiar la velocidad en baudios a 115200 en mi PIC18F87j11, pero no es posible con el oscilador actual de 8 mhz. Cualquier comentario sería útil.
¡Gracias!
No estoy seguro de por qué tendrías que modificar la velocidad en baudios, especialmente porque creo que mucho de eso sería impulsado dinámicamente por la conexión, ¿no? Han pasado años desde que hice la programación de módem.
En cualquier caso, el afiche Demetris sí notó la importancia de AT & W: es lo que realmente logra el cambio. Piensa que necesitas tener eso en tu script.
Si esto ayuda, este sitio al menos documenta algunas cosas básicas que puede hacer con este tipo de módem. Probablemente ya lo hayas encontrado, pero quizás otros lectores no lo hayan hecho.
Una posible solución alternativa (aunque probablemente no sea la mejor) es guardar la velocidad en baudios en el almacenamiento flash interno y luego tener un hilo separado que establezca continuamente la velocidad en baudios de su puerto.
O un hilo como;
while (true)
{
MySerialPort.BaudRate = 19200; //this will set/update baud rate
Thread.Sleep(30000); //this will sleep for 30 seconds
}
Salvará la velocidad de Baudios cada 30 segundos;
Primer ejemplo
O yendo con mi primer ejemplo (donde la velocidad en baudios se guarda en flash)
es que en el inicio de su programa, lee su almacenamiento flash interno, y desde el valor almacenado allí asigna la velocidad en baudios.
En cuanto a establecer la velocidad en baudios en HyperTerminal / etc - estas son solo velocidades de baudios ''temporales'' - Un poco como sintonizar una radio - puedes escuchar diferentes cosas de diferentes velocidades en baudios - así es como funciona el hyperterminal - no ''salva'' el velocidad en baudios, solo la asigna por un tiempo temporal (hasta que apague y encienda su radio).
En cuanto a BootLoader, debería haber una forma de ''salir'' del modo de gestor de arranque: eche un vistazo a la documentación de sus microcontroladores, ya que solo debería estar encendida cuando esté actualizando su MC o ''Intermitente'' una actualización, no constantemente (Bootloader es como presionando el botón ''reiniciar'' en tu PC)!
Su intento de corregir la velocidad en baudios combinando AT+IPR
y AT&W
es correcto, pero desafortunadamente no necesariamente funciona.
El comando AT&W
no está especificado en ningún estándar (ver mi pregunta: ¿Qué estándar especifica el comando AT & W AT? ), Eso significa que exactamente lo que AT&W
ahorró depende completamente del manejador y usted (desafortunadamente) no puede asumir nada con respecto Baudizar salvarse o no.
Por supuesto, si el manejador especifica explícitamente que AT&W
efectivamente ahorra velocidad en baudios, entonces está listo (para ese dispositivo específico) pero el documento que vinculó ni siquiera incluye AT&W
en la lista de comandos ... Entonces, cuando pruebe y descubre que su módem no ahorra velocidad en baudios, entonces ese es un hecho desafortunado que debe aceptar.
Cuando dice que no es posible cambiar la velocidad en baudios, supongo que quiere decir que el problema es que 8MHz no se puede dividir fácilmente hasta 115200, por lo que la marcación de error no es grande, como se muestra en la tabla de 8MHz de la calculadora AVR Baud Rate de WormFood , ¿derecho?
La tabla indica un error de 7.8% para 8MHz, pero tal vez el módem sea tolerante en su recepción. Si uno en X intenta tener éxito, eso es todo lo que necesita ya que la velocidad se ajustará a lo que necesita, por ejemplo, pruebe AT+IPR=19200
en 115200 y luego pruebe AT
en 19200. Si tiene éxito, termine, de lo contrario intente de nuevo. Tal vez esto será lo suficientemente bueno y se resuelva después de un tiempo razonable? Creo que valdría la pena intentarlo.
Alternativamente, tal vez podrías intentar escribir una rutina de interrupción para enviar los bits start + data + stop para "AT+IPR=19200/r"
a una velocidad de 115200 en un pin GPIO y conectarte solo para ver si es posible arrancar de esa manera la velocidad del módem (consulte http://www.fpga4fun.com/SerialInterface2.html para obtener cálculos para reducir la frecuencia). Probablemente también necesite una adaptación de señal eléctrica adicional para esto y encuentre alguna manera de multiplexar GPIO y UART.