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 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):
Router (configure el puerto D3 para ADC, y envía los datos cada 2000 milisegundos, en hexadecimal es 7D0):
Programa en CCS:
#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. Por cierto, la BAUD RATE de los XBees es de 9600.
Agradecería cualquier ayuda, necesito entregar luego este proyecto, muchas gracias