ImageImageImageImage
Hazte Socio (El Foro siempre Gratis)
Paga con Tarjetas+ Info www.arde.cc/socios

Problema con codigo para Micro Atmel

Foro para postear los temas de ensamblador

Moderator: Junta Directiva

Post Reply
User avatar
cloud_g
Novato
Novato
Posts: 16
Joined: Wed Dec 12, 2007 11:57 am

Problema con codigo para Micro Atmel

Post by cloud_g » Wed Jun 18, 2008 10:16 pm

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

BoOpS
Administrador
Administrador
Posts: 1812
Joined: Mon Sep 19, 2005 7:29 pm
Nombre: Javier

Re: Problema con codigo para Micro Atmel

Post by BoOpS » Wed Jun 18, 2008 10:20 pm

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.
Mi Blog de RoBoOpS

Bastian
Usuario Avanzado
Usuario Avanzado
Posts: 384
Joined: Wed Feb 13, 2008 9:29 pm
Nombre: David Carmona
Location: Utiel
Contact:

Re: Problema con codigo para Micro Atmel

Post by Bastian » Thu Jun 19, 2008 12:52 am

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!
Existen 10 tipos de personas...
los que saben binario y los que no.

El conocimiento es un arma poderosa... Aprende!!!


Mi blog: Robotica Lúdica Pingubot

User avatar
cloud_g
Novato
Novato
Posts: 16
Joined: Wed Dec 12, 2007 11:57 am

Re: Problema con codigo para Micro Atmel

Post by cloud_g » Thu Jun 19, 2008 10:38 am

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!

User avatar
Luison
Usuario de baja
Posts: 493
Joined: Mon Dec 24, 2007 12:03 pm
Location: Guecho

Re: Problema con codigo para Micro Atmel

Post by Luison » Thu Jun 19, 2008 12:30 pm

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.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest