Norimasa Okamoto
/
XBee-ExplorerLite
USB-UART bridge for XBee with XCTU.
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "BaseUsbUartBridge.h" 00002 DigitalOut led_xbee(LED1),led_usb(LED2),led_reset(LED3),led_heartbeat(LED4); 00003 RawSerial pc(MBED_UARTUSB); 00004 #if defined(TARGET_LPC4088) 00005 #define XBEE_UART P4_22,P4_23 00006 DigitalOut xbee_rts(P4_21); 00007 DigitalOut xbee_dtr(P4_19); 00008 DigitalOut xbee_reset(P4_17); 00009 DigitalIn reset_sw(P2_10); 00010 #define SW_MODE PullUp 00011 #elif defined(TARGET_LPC1768) 00012 #define XBEE_UART p9,p10 00013 DigitalOut xbee_rts(p21); 00014 DigitalOut xbee_dtr(p22); 00015 DigitalOut xbee_reset(p30); 00016 DigitalIn reset_sw(p14); 00017 #define SW_MODE PullDown 00018 #else 00019 #error "target error" 00020 #endif 00021 00022 class USB_XBee : public BaseUsbUartBridge { 00023 public: 00024 USB_XBee(PinName tx, PinName rx) : BaseUsbUartBridge(tx, rx) {} 00025 virtual void controlLineStateChanged(int rts, int dtr){ 00026 xbee_rts = rts ^ 1; 00027 xbee_dtr = dtr ^ 1; 00028 } 00029 virtual void monitor(src_t src, uint8_t c) { 00030 switch(src) { 00031 case _UART: led_xbee = !led_xbee; break; 00032 case _USB: led_usb = !led_usb; break; 00033 } 00034 //pc.putc(c);// debug 00035 } 00036 }; 00037 00038 USB_XBee usb_xbee(XBEE_UART); 00039 00040 int main() { 00041 pc.baud(115200); 00042 00043 xbee_rts = 0; 00044 xbee_dtr = 0; 00045 xbee_reset = 1; 00046 reset_sw.mode(SW_MODE); 00047 int prev_sw = 1; 00048 00049 Timer heartbeat_t; 00050 heartbeat_t.reset(); 00051 heartbeat_t.start(); 00052 while(1) { 00053 if (reset_sw ^ prev_sw) { 00054 prev_sw = reset_sw; 00055 xbee_reset = prev_sw ^ (SW_MODE == PullDown ? 1 : 0); 00056 led_reset = xbee_reset; 00057 } 00058 if (heartbeat_t.read_ms() > 500) { 00059 heartbeat_t.reset(); 00060 led_heartbeat = !led_heartbeat; 00061 } 00062 usb_xbee.poll(); 00063 } 00064 }
Generated on Sat Jul 23 2022 11:48:28 by 1.7.2