Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a todos,
Estoy en la tediosa tarea de controlar un robot gobernado por un micro atmel a través de un pc, y usando 2 radiomodems.
Para la programación del micro (un 89c52 de atmel) uso el programa Keil.
Os resumo brevemente mi problema.
En la hoja de características del radiomodem, viene la forma de configurarlo mediante comandos, bien mediante un programa específico, o bien a través del microcontrolador. Mi caso es el segundo, el del microcontrolador.
Os pongo unos cuantos ejemplos de las distintas cosas que se pueden configurar, y los comandos asociados:
Easy-Radio Configuration Command Set
The programming software sends ‘Text Commands’ to the modules and this action can be performed by terminal software or the host’s Microcontroller using the following list of commands:
RF Power Output
Sets output power on a channel.
Warning! This level will be set to the default setting when the frequency is changed or reset via a Channel command.
ER_CMD#P0 1mW
ER_CMD#P1 2Mw
ER_CMD#P2 3mW
ER_CMD#P3 4mW
ER_CMD#P4 5mW
ER_CMD#P5 6mW
ER_CMD#P? Get Power Value The module replies with the power value. eg:
ER_CMD#P9
No ACK is required.
To successfully send a command do the following:
1. Send Command from host: e.g. ER_CMD#U5 (Set UART BAUD to 38400)
2. In the case of a TRS/RS:
o Wait for echo of command from module. e.g. ER_CMD#U5
In the case of a TS:
o Wait 20mS
3. Send the ASCII string from the host: ACK
The commands should be sent exactly as shown (case sensitive) with no spaces between characters. The ACK command is sent as three ASCII characters, ACK in sequence. ‘A’’C’’K’ .
Note that the TS (transmitter) devices send data ‘over air’ as they are not equipped with a serial data out or handshake pins. This takes approximately 20mS and time should be taken in to account before sending the ‘ACK’ sequence
Así, si por ejemplo quiero configurar el radiomodem para que transmita con 5mW de potencia, tendré que enviarle la cadena de texto ER_CMD#P4, esperar 20 ms, y enviarle la señal ACK.
Mi problema es: ¿cómo envío la cadena de texto ER_CMD#P4?
Supongamos que para enviar la cadena de texto desde el micro al radiomodem, basta con enviarla a un registro cualquiera, por ejemplo a R0, ¿cómo le paso la cadena de texto desde el micro al radiomodem, poniendo MOV R0, #’ER_CMD#P4’ ?
Así da fallo, ¿sabeis alguno cómo hacerlo? ¿Cómo se puede guardar una cadena de caracteres para pasarla al radiomodem?
Gracias, y un saludo
cloud_g, ¿puedes crear un array con la cadena?
Aparte... ¿el radio modem es por puerto serie? Si es así tu compilador tendrá que tener una instrucción para el envío de datos. si no es así o usas ensamblador (sin hardware serie) tendrás que establecer los tiempos de comunicación e ir mandando los bits sueltos.
Hola!
Imagino que utilizas el puerto serie para comunicar con el radio modem.... si es asi y estas utilizando el Keil tienes dos opciones:
Programa en C: comando printf.
Ensamblador: Tendras que enviar los caracteres uno a uno a través del registro SBUF
salu2!
Solo una cosa, recuerdo que hice una práctica con un LCD, y para que mostrase distintos mensajes en pantalla, usaba la directiva (creo que se llama directiva) DB 'Mensaje' Posición_de_Memoria, de forma que podía almacenar un String a partir de una posición en la memoria del microcontrolador. ¿No se puede hacer aquí igual?
Es que en la hoja de características del radiomodem, dice que se le envíe cada comando de configuración, y se esperen 20ms antes de enviarle un ACK. No sé si admitirá que se le envíen los caracteres por separado, no sé si me explico.
Un saludo!
hombre, el easyradio fue uno de los radiomodem que miré, pero no me hacía mucha gracia... aún así, la configuración se hace por puerto serie, osea, que tienes que abrir el puerto serie de tu micro y conectarlo al easyradio, una vez hecho ésto, empezar a configurarlo... o por lo menos eso creo.