2014-01-07 2 views
1

Я пытаюсь подключить два sbee s s2 и заставить их общаться друг с другом в режиме API (далее я буду использовать больше устройств конца и маршрутизатора). В принципе, у меня есть координатор xbee, подключенный к компьютеру через адаптер digi, и у меня есть другое xbee, подключенное к PIC18f25. Сейчас я работаю над отправкой и получением данных от одного к другому и наоборот. Когда я подключаю оба адаптера usb, связь работает очень хорошо (я могу отправлять и получать данные с/на оба устройства). Однако, когда я пытаюсь работать с предыдущей конфигурацией, мне не удается получить данные, которые отправляются от координатора, с конечного устройства с ПОС. Здесь идет данные, которые я пытаюсь отправить:Невозможно получить данные с конечного устройства xbeepro2 с помощью pic18f25k20

От Coord 2 EndD - 7E 00 13 10 01 00 13 00 40 A2 8D 5A 8B FF FE 00 00 48 65 6C 6C 6F 96

От EndD 2 Координаты - 7E 00 13 10 01 00 00 00 00 00 00 00 00 FF FE 00 00 48 65 6C 6C 6F FD

Я думаю, что можно сказать, что когда я пытаюсь отправить данные из ПОС, устройство, координатор, он работает. Интересно, если проблема зависит от моего кода, который можно найти ниже:

#include <18F25K20.h> 
#device adc =10 
#device ICD=TRUE 
#FUSES noWDT     // Watch Dog Timer 
#fuses  LP      //low power crystal 
#FUSES XT      //Crystal osc <= 4mhz 
#fuses BROWNOUT_SW    //Brownout enabled during operation, disabled during SLEEP 
#FUSES NOPROTECT    //Code not protected from reading 
#FUSES BROWNOUT     //brownout reset 
#FUSES BORV27     //Brownout reset at 2.7V 
#FUSES NOPUT      //Power Up Timer 
#FUSES NOCPD     //No EE protection 
#FUSES STVREN     //Stack full/underflow will cause reset 
#FUSES noDEBUG     //No Debug mode for ICD 
#FUSES noLVP     //Low Voltage Programming on B3(PIC16) or B5(PIC18) 
#FUSES NOWRT     //Program memory not write protected 
#FUSES NOWRTD     //Data EEPROM not write protected 
#FUSES noIESO      //Internal External Switch Over mode enabled 
#FUSES FCMEN     //Fail-safe clock monitor enabled 
#FUSES NOPBADEN     //PORTB pins are configured as analog input channels on RESET 
#FUSES NOWRTC     //configuration not registers write protected 
#FUSES NOWRTB     //Boot block not write protected 
#FUSES NOEBTR     //Memory not protected from table reads 
#FUSES NOEBTRB     //Boot block not protected from table reads 
#FUSES NOCPB     //No Boot Block code protection 
#FUSES LPT1OSC     //Timer1 configured for low-power operation 
#FUSES MCLR      //Master Clear pin enabled 
#FUSES XINST     //Extended set extension and Indexed Addressing mode enabled*/ 


#use delay(clock = 4000000)       /* Clock definition */ 
#use rs232(BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)  /* ZigBee and PIC Communication */ 

int16 var; 
byte var2=0x00; 
long timeout; 

void main() { 
output_low(PIN_C5); // Turning on Xbee 

delay_ms(10); 

while(1) { 
     delay_ms(100); 
     output_high(PIN_C0);  // TESTE 
     delay_ms(100); 
     output_low(PIN_C0); 
     timeout=0; 
      while(!kbhit()&&(++timeout<5000)) delay_us(5); 
        if(kbhit()){ 
       output_high(PIN_C0); 
       delay_ms(10); 
       output_low(PIN_C0); 
       delay_ms(10); 
       output_high(PIN_C0); 
       delay_ms(10); 
       output_low(PIN_C0); 
       delay_ms(10); 
       output_high(PIN_C0); 
       delay_ms(10); 

       output_low(PIN_C0); 
       var2 = getc(); 
       delay_ms(1000); 
      } 
/* Data which is succesfully sent to coordinator 
      putc(0x7E); 
      putc(0x00); 
      putc(0x13); 
      putc(0x10); 
      putc(0x01); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0x00); 
      putc(0xFF); 
      putc(0xFE); 
      putc(0x00); 
      putc(0x00); 
      putc(0x48); 
      putc(0x65); 
      putc(0x6C); 
      putc(0x6C); 
      putc(0x6F); 
      putc(0xFD);*/    
     } 

} 

Программа должна мигать светодиод (PIN_C0) 100 мс, и мигать его быстрее, если какие-либо данные, введите в ПОС , Однако это не работает, как я планировал, и я не знаю, почему.

Любая помощь будет оценена по достоинству.

Благодарю вас всех,

С уважением.

ответ

0

Вы знаете, что на данный момент работает много штук. Если ПОС отправляет кадры в модуль XBee, который получает координатор, то:

  • У вас есть правильная скорость передачи.
  • Вы, по крайней мере, правильно подключили PIC Tx к XBee Rx.
  • Модуль XBee имеет мощность и работает.
  • Модуль XBee соединен с сетью координатора.
  • Строка RESET модуля XBee утверждается правильно.

Возможно ли, что вы аппаратное квитирование включены (ATD6=1) модуль XBee, поэтому он не в состоянии отправить в ПОС из-за этого не утверждая RTS?

Можете ли вы подключить стандартный последовательный кабель к PIC (вместо XBee) и подтвердить, что данные, отправленные из программы терминала, запускают мигание и что программа терминала видит отправленный кадр?

Можете ли вы использовать интерфейс XBee, который мигает светодиодами на Tx и Rx, чтобы вы могли визуально видеть, проходят ли данные?

+0

Определенно это была ошибка в макете или какой-либо связи. Я просмотрел его, и он работает сейчас. – user3169135