Autor Tema: Problema Xbee  (Leído 2014 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado nosegerman

  • PIC10
  • *
  • Mensajes: 3
Problema Xbee
« en: 25 de Junio de 2012, 11:22:01 »
Hola, he estado leyendo y veo que no hay muchos que sepan del tema, pero espero conseguir la respuesta.

Mi proyecto me demanda entre otras cosas que el Pic conosca el modulo padre del Xbee que tiene que controlar.

Entonces,, tengo (PIC)-->Xbee (ED) <------> Xbee (R) -----> Xbee (C)----> PC

Si yo envio una trama de datos cualquiera no tengo problema, la historia comienza cuando yo quiero saber el MY del R, esto lo debo lograr con el comando "AT MY", tras haber ingresado al modo comando con la siguiente secuencia
(1 seg inactividad)
envio: +++
(1 seg inactividad)
devuelve: OK
envio: AT MY
devuelve (ej.): 5358

les muestro mi codigo con "mis intentos"

;--------------------- Project attributes ---------------------------
;Project name :      Sistema remoto Personal                   
;                                                             
;Author :     Carlos Germán Ruiz                         
;                                                             
;Version : 1.0.0 ~ 11/06/2012 
;                                                             
;----------------------- Compiler settings --------------------------
                                                                   
Declare  SHOW_SYSTEM_VARIABLES = OFF   ; At simulation in Proteus not show internal variables
Declare  FSR_CONTEXT_SAVE = OFF   ; Do not save FSR register context
Declare  Reminders = OFF    ; Turn off reminders
Declare  Warnings = OFF   ; Turn off warnings
                                                                   
;-------------------------- Base settings --------------------------
                                                                   
Device = 16F876A   ; Chosen Picmicro
Xtal = 20   ; Oscillator  20 MGz
                                                                   
;-------------------------- USART --------------------------
                                                                   
Declare  Hserial_Baud  9600   ; USART speed, baud
Declare  Hserial_TXSTA = %00100000   ; Turn on USART transmitter
Declare  Hserial_RCSTA = %10010000   ; Turn on USART receiver
;Declare  Hserial_SPBRG  32   ; SPBRG register value for chosen speed
Declare  Hserial_Clear = On   ; Turn on automatic overflow error clear
Declare Rsin_Mode = TRUE
                                                                   
;-------------------------- Ports --------------------------
                                                                   
Declare  PortB_Pullups = OFF   ; Turn off PORTB pull-ups
Declare  All_Digital = On ; Each port carries out the function by default
 
Input PORTB.0
Output PORTC.5

Symbol pb0 = PORTB.0
Symbol exbee = PORTC.5   
Dim ID As Word
Dim i As Byte
Dim a As Byte
Dim aux[2]As Byte
Dim MP[4]As Byte
                                 
;----------------------------- SFR ------------------------------------
                                                                   
;-------------------------------- Start ----------------------------
                                                                   
;------------------------ Main program -----------------------
                                                                   
MainProgram:
   i=0
   a=0
   High PORTC.5
   HSerOut ["Asi no tiene k mandar nada"]
   If PORTB.0 = 1 Then
;       While  a <=3
         Low PORTC.5     ;activa el enable del Xbee
         DelayMS 5000    ;tarda 13ms asi que espero 50ms
         
         HSerOut ["HOLA COMO ESTAS?"]
         DelayMS 1000
         HSerOut ["+++"]    ;entrar en modo AT del Xbee                               
         DelayMS 500                                                                 
         DelayMS 500
         ;HSerIn [ID]
         
;         For i=0 To 1        ;leo la respuesta del XB tiene que ser OK
;            HSerIn[aux]

            ;DelayMS 10
;         Next i
;         If aux[0]=="O"  Then
;            If aux[1]=="K"  Then        ;si no es OK entonces vuelvo a intentar
                HRSOut "AT MP"       ;si salio bien entonces pido el MP
                For i=0 To 3
                    ;HSerIn[MP]       ;guardo este valor que es el MY
                    HRSIn MP
                    ;DelayMS 10
                Next i
                HSerOut ["AT CN"]       ;salgo del modo AT!!!!!!!!!!
                DelayMS 20
                ;For i=0 To 3
                    HSerOut["$",MP[0],MP[1],MP[2],MP[3]]  ;envio este valor a traves del Xbee
                    ;DelayMS 10
                ;Next i
;            EndIf
;         EndIf
       DelayMS 1000
       HSerOut ["AT CN"]
       HSerOut ["termino 1 ciclo"]
;       HSerOut [a]
;       a= a+1                                                             
;       Wend                                                           
   EndIf                                                               
GoTo  MainProgram   ; Return to main program

Como veran he probado muchas variantes y aun asi no consigo pasar del "Hola como estas?"

tras eso pasan 2 cosas: o recivo como dato +++ o no pasa nada.
en el segundo caso creo que lo que sucede es que efectivamente estoy en modo de programación. pero no me devuelve el MY como informacion.

Este programa lo simule en Proteus con un virtual terminal (simulando ser un Xbee) y funciona de maravilla.
Los modulos Xbee transmiten correctamente y estan configurados para 9600, por lo que no secual es mi error.

Desde ya gracias al que pueda darme una mano.!

Atte. Germán.
                                                   

Desconectado nosegerman

  • PIC10
  • *
  • Mensajes: 3
Re: Problema Xbee
« Respuesta #1 en: 25 de Junio de 2012, 11:28:30 »
TEngo una idea, como puedo simular que presiono (ENTER)

despues de +++ no es necesario presionar enter, pero si despues del "AT MY" en una consola, entonces quizas deba hacerlo con el pic también.

Alguien sabe esta respuesta, por que quizas sea la solución.

Gracias!