![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Tobi's ubw test branch
Dependencies: mavlink_bridge mbed
Fork of AIT_UWB_Range by
Diff: main.cpp
- Revision:
- 14:8041c9b68406
- Parent:
- 13:b4d27bf7062a
- Child:
- 15:e1fea7e2aff1
--- a/main.cpp Sun Nov 23 15:07:24 2014 +0000 +++ b/main.cpp Sun Nov 23 15:37:45 2014 +0000 @@ -5,14 +5,19 @@ PC pc(USBTX, USBRX, 921600); // USB UART Terminal DW1000 dw(D11, D12, D13, D10, D14); // SPI1 on Nucleo Board (MOSI, MISO, SCLK, CS, IRQ) - +int i=0; +bool starter = 1; +bool ping = 0; +char message[1024] = ""; uint64_t timestamp_old = 0; -//#define SENDER + +//#define DEBUGSTRING void Interrupthandler() { /*uint8_t frameready = 0; dw.readRegister(DW1000_SYS_STATUS, 1, &frameready, 1); pc.printf("Interrupt status: %X\r\n", frameready);*/ + starter = 0; uint16_t framelength = 0; // get framelength TODO: just for debugging of string dw.readRegister(DW1000_RX_FINFO, 0, (uint8_t*)&framelength, 2); @@ -35,15 +40,22 @@ timestamp_old = timestamp; pc.printf("Timestamp: %lld\r\n", difference); + wait(1); // TODO: ugly, never wait in interrupthandler! + if (ping) { + sprintf((char*)message, "PING! %d", i); + dw.sendString(message); + } else { + sprintf((char*)message, "PONG! %d", i); + dw.sendString(message); + } + dw.receiveFrame(); } int main() { - int i=0; - char message[1024] = ""; pc.printf("DecaWave 0.1\r\nup and running!\r\n"); - dw.setEUI(0xFAEDCD01FAEDCD01); + dw.setEUI(0xFAEDCD01FAEDCD01); // basic methods called to check if we have a slave pc.printf("%d DEVICE_ID register: 0x%X\r\n", i, dw.getDeviceID()); pc.printf("%d EUI register: %016llX\r\n", i, dw.getEUI()); pc.printf("%d Voltage: %f\r\n", i, dw.getVoltage()); @@ -53,16 +65,17 @@ pc.printf("%d System Configuration: %X\r\n", i, conf); dw.callbackRX = &Interrupthandler; -#ifndef SENDER + + // Receiver initialisation uint8_t dataframereadyinterrupt = 0x40; // only good frame 0x40 all frames 0x20 dw.writeRegister(DW1000_SYS_MASK, 1, &dataframereadyinterrupt, 1); dw.receiveFrame(); -#endif + wait(3); while(1) { i++; -# ifdef SENDER // to make one node sender and one receiver +# ifdef DEBUGSTRING // to make one node sender and one receiver //message[i-1] = 'O'; //message[i] = '\0'; sprintf((char*)message, "HELLO WORLD! %d", i); @@ -89,8 +102,15 @@ #else pc.printf("%d Waiting... ", i); - sprintf((char*)message, "BETWEEN! %d", i); - dw.sendString(message); + if (starter) { + ping = 1; + while (starter) { + sprintf((char*)message, "PING! %d", i); + dw.sendString(message); + wait(1); + } + } + uint64_t status; dw.readRegister(DW1000_SYS_STATUS, 0, (uint8_t*)&status, 5);