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:
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
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
Última edición: