El tema es sencillo, quiero saber el MP del modulo que tengo arriba.
(PIC)<--->Xbee (ED)<----->Xbee (R)----> Xbee (C)---->PC
quiero saber el MY del R preguntandoselo al ED mediante el comando AT MP
este es el codigo
#include <SRP.h>
#include <stdio.h>
#include <stdlib.h>
char ID[2];
char MY[4];
int i=0;
int a=0;
void main()
{
LOOP: output_high((PIN_C5)); // asi no anda,, !enable
printf("asi no anda");
if (bit_test (portb,0)) //si esta en 1 funciona
{
a=0;
while (a<=1) // esto para probar no tiene motivo
{
output_low((PIN_C5)); //habilito el enable
delay_ms (5000);
printf("Hola como estas?\r"); // este texto es para seguir la posicion del progrma en la terminal
delay_ms (1000); //segundo muerto
printf("+++"); //entro en modo de prog
//puts("+++");
for(i=0 ;i < 2; i++)
{
ID[i]=getc(); //leo el OK (aca tengo problemas leo ruido)
}
delay_ms (1000); //segundo muerto
if (ID[0] =='O')
if (ID[1]=='K') //hasta aca verifico haber recivido "OK"
{
printf("AT MP\r"); //pido el MP
for(i=0 ;i < 4; i++)
{
MY[i]=getch(); //Guardo el MP (en este punto se tilda)
}
}
printf("AT CN\r"); //SAlgo del Modo Prog
DELAY_MS (1000);
printf("$,%c%c%c%c",MY[0],MY[1],MY[2],MY[3]); //Imprimo
a++;
}
}
delay_ms(1000);
GOTO LOOP;
}
La cosa es que desde la terminal del PC no recivo los datos.
Estoy muy desconcertado y no se que pueda ser,
este es el SRP.h#include <16F876A.h>
#device adc=16
#FUSES NOWDT //No Watch Dog Timer
#FUSES HS //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
#use rs232(baud=1200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)
#byte PORTB = 0x006
#byte PORTC = 0x007
Desde ya gracias, y recivo cualquier idea.. los Xbee estan bien configurados y si solo transmito en modo transparente funciona de lo mas bien!