Problema al leer ADC XBee S2 con PIC

Hola muy buenas, estoy haciendo un proyecto para mi universidad, tengo 2 XBee S2 y 1 PIC 18f4550 configurados en la siguiente manera:

1° XBee como ZIGBEE ROUTER API, a éste le tengo conectado un sensor de humedad a la entrada análoga AD3, que me tira de 0 a 3.3v, pero lo puse en un divisor resistivo y obtengo desde 0 a 1.2v (que es lo máximo que lee el ADC del XBee)

2° XBee como ZIGBEE COORDINATOR API, a éste le llega la señal análoga del otro XBee, y la manda por tramas de más o menos 22 bytes en serie. Esta trama la conecté al PIC para leer la trama

y pues, estoy programando con el compilador CCS. Intenté hacer una interrupción para que cuando hayan datos en el puerto serie, se active ésta, y lo siguiente fue guardar solo 2 bytes que son los que me interesan (2 bytes del ADC del XBee), pero no funciona, creo que estoy haciendo algo mal o no se.

Por eso pido ayuda, no se como hacer esto :/

En resumen, los XBee:

Coordinador (nada en especial, solo configure la PAN ID, y modo API):
(IMAGEN ABAJO)

Router (configure el puerto D3 para ADC, y envía los datos cada 2000 milisegundos, en hexadecimales 7D0):
(IMAGEN ABAJO)

Programa hecho en CCS:
Código:
#include <18F4550.h>
#device ADC=16

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES WDT128                   //Watch Dog Timer uses 1:128 Postscale
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled
#FUSES NOIESO                   //Internal External Switch Over mode disabled
#FUSES PUT                      //Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOVREGEN                 //USB voltage regulator disabled
#FUSES NOPBADEN                 //PORTB pins are configured as digital I/O on RESET
#FUSES NOLPT1OSC                //Timer1 configured for higher power operation
#FUSES NOSTVREN                 //Stack full/underflow will not cause reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOXINST                  //Extended set extension and Indexed Addressing mode disabled (Legacy mode)

#use delay(crystal=4MHz)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1)

#include <flex_lcd.h>

int msb, lsb;
char serie[22]; 

#INT_RDA
void  RDA_isr(void) 
{
   gets(serie);
   msb=serie[20];
   lsb=serie[21];
}

void main()
{
   lcd_init();

   enable_interrupts(INT_RDA);
   enable_interrupts(GLOBAL);

   while(TRUE)
   {
      lcd_gotoxy(1,1);
      printf(lcd_putc, "Recibido: %X, %X", msb, lsb);
   }
}

Y bueno, en conexiones, conecté el pin DOUT del XBee, al pin RX del PIC, y las tierras las conecté entre si para tener tierra común.

Agradecería cualquier ayuda, necesito entregar luego este proyecto, muchas gracias :)
 

Adjuntos

  • cor.jpg
    cor.jpg
    80.7 KB · Visitas: 6
  • rou.jpg
    rou.jpg
    80.9 KB · Visitas: 4
Última edición:
Atrás
Arriba