![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Tobi's ubw test branch
Dependencies: mavlink_bridge mbed
Fork of AIT_UWB_Range by
main.cpp@10:d077bb12d259, 2014-11-21 (annotated)
- Committer:
- manumaet
- Date:
- Fri Nov 21 14:33:23 2014 +0000
- Revision:
- 10:d077bb12d259
- Parent:
- 9:c8839de428ac
- Child:
- 11:c87d37db2c6f
in between messing with framelenght of sendFrame to solve issue with >1 byte;; readRegister8 tested
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
manumaet | 0:f50e671ffff7 | 1 | #include "mbed.h" |
manumaet | 0:f50e671ffff7 | 2 | #include "PC.h" // Serial Port via USB for debugging with Terminal |
manumaet | 0:f50e671ffff7 | 3 | #include "DW1000.h" |
manumaet | 0:f50e671ffff7 | 4 | |
manumaet | 0:f50e671ffff7 | 5 | PC pc(USBTX, USBRX, 921600); // USB UART Terminal |
manumaet | 7:e634eeafc4d2 | 6 | DW1000 dw(D11, D12, D13, D10, D14); // SPI1 on Nucleo Board (MOSI, MISO, SCLK, CS, IRQ) |
manumaet | 0:f50e671ffff7 | 7 | |
manumaet | 8:7a9c61242e2f | 8 | #define SENDER |
manumaet | 5:111f11c95d27 | 9 | |
manumaet | 6:d5864a1b9e17 | 10 | void Interrupthandler() { |
manumaet | 10:d077bb12d259 | 11 | /*uint8_t frameready = 0; |
manumaet | 7:e634eeafc4d2 | 12 | dw.readRegister(DW1000_SYS_STATUS, 1, &frameready, 1); |
manumaet | 10:d077bb12d259 | 13 | pc.printf("Interrupt status: %X\r\n", frameready);*/ |
manumaet | 10:d077bb12d259 | 14 | |
manumaet | 10:d077bb12d259 | 15 | uint16_t framelength = 0; // get framelength |
manumaet | 10:d077bb12d259 | 16 | dw.readRegister(DW1000_RX_FINFO, 0, (uint8_t*)&framelength, 2); |
manumaet | 10:d077bb12d259 | 17 | framelength &= 0x03FF; |
manumaet | 10:d077bb12d259 | 18 | framelength -= 2; |
manumaet | 10:d077bb12d259 | 19 | |
manumaet | 10:d077bb12d259 | 20 | char* receive = dw.receiveString(); |
manumaet | 10:d077bb12d259 | 21 | pc.printf("Message Received: %s %d\r\n", receive, framelength); |
manumaet | 10:d077bb12d259 | 22 | delete[] receive; |
manumaet | 10:d077bb12d259 | 23 | |
manumaet | 10:d077bb12d259 | 24 | dw.resetRX(); // TODO: is crucial because otherwise only 1 frame is received correct |
manumaet | 8:7a9c61242e2f | 25 | dw.receiveFrame(); |
manumaet | 6:d5864a1b9e17 | 26 | } |
manumaet | 6:d5864a1b9e17 | 27 | |
manumaet | 0:f50e671ffff7 | 28 | int main() { |
manumaet | 4:6240b9c7a033 | 29 | int i=0; |
manumaet | 10:d077bb12d259 | 30 | char message[1024] = ""; |
manumaet | 0:f50e671ffff7 | 31 | pc.printf("DecaWave 0.1\r\nup and running!\r\n"); |
manumaet | 0:f50e671ffff7 | 32 | |
manumaet | 0:f50e671ffff7 | 33 | dw.setEUI(0xFAEDCD01FAEDCD01); |
manumaet | 4:6240b9c7a033 | 34 | pc.printf("%d DEVICE_ID register: 0x%X\r\n", i, dw.getDeviceID()); |
manumaet | 4:6240b9c7a033 | 35 | pc.printf("%d EUI register: %016llX\r\n", i, dw.getEUI()); |
manumaet | 4:6240b9c7a033 | 36 | pc.printf("%d Voltage: %f\r\n", i, dw.getVoltage()); |
manumaet | 0:f50e671ffff7 | 37 | |
manumaet | 4:6240b9c7a033 | 38 | // read System Configuration |
manumaet | 4:6240b9c7a033 | 39 | uint32_t conf = 0; |
manumaet | 4:6240b9c7a033 | 40 | dw.readRegister(DW1000_SYS_CFG, 0, (uint8_t*)&conf, 4); |
manumaet | 4:6240b9c7a033 | 41 | pc.printf("%d System Configuration: %X\r\n", i, conf); |
manumaet | 4:6240b9c7a033 | 42 | |
manumaet | 7:e634eeafc4d2 | 43 | wait(1); |
manumaet | 5:111f11c95d27 | 44 | |
manumaet | 8:7a9c61242e2f | 45 | dw.callbackRX = &Interrupthandler; |
manumaet | 9:c8839de428ac | 46 | #ifndef SENDER |
manumaet | 10:d077bb12d259 | 47 | uint8_t dataframereadyinterrupt = 0x40; // only good frame 0x40 all frames 0x20 |
manumaet | 5:111f11c95d27 | 48 | dw.writeRegister(DW1000_SYS_MASK, 1, &dataframereadyinterrupt, 1); |
manumaet | 7:e634eeafc4d2 | 49 | |
manumaet | 7:e634eeafc4d2 | 50 | // Receive something |
manumaet | 8:7a9c61242e2f | 51 | dw.receiveFrame(); |
manumaet | 5:111f11c95d27 | 52 | #endif |
manumaet | 5:111f11c95d27 | 53 | |
manumaet | 0:f50e671ffff7 | 54 | while(1) { |
manumaet | 0:f50e671ffff7 | 55 | i++; |
manumaet | 5:111f11c95d27 | 56 | # ifdef SENDER // to make one node sender and one receiver |
manumaet | 0:f50e671ffff7 | 57 | // Send something |
manumaet | 10:d077bb12d259 | 58 | message[i-1] = 'O'; |
manumaet | 10:d077bb12d259 | 59 | message[i] = '\0'; |
manumaet | 10:d077bb12d259 | 60 | //sprintf((char*)message, "HELLO WORLD! %d", i); |
manumaet | 10:d077bb12d259 | 61 | if (i < 200) |
manumaet | 10:d077bb12d259 | 62 | pc.printf("%d Message: \"%s\" %d\r\n", i, message, strlen(message)); |
manumaet | 10:d077bb12d259 | 63 | else |
manumaet | 10:d077bb12d259 | 64 | pc.printf("%d Message: %d\r\n", i, strlen(message)); |
manumaet | 10:d077bb12d259 | 65 | dw.sendString(message); |
manumaet | 0:f50e671ffff7 | 66 | |
manumaet | 10:d077bb12d259 | 67 | char messagecheck[1024]; |
manumaet | 10:d077bb12d259 | 68 | dw.readRegister(DW1000_TX_BUFFER, 0, (uint8_t*)messagecheck, strlen(message)+1); |
manumaet | 10:d077bb12d259 | 69 | messagecheck[1] = '\0'; |
manumaet | 10:d077bb12d259 | 70 | if (i < 200) |
manumaet | 10:d077bb12d259 | 71 | pc.printf("%d Buffer: \"%s\" %d\r\n", i, messagecheck, strlen(messagecheck)+1); |
manumaet | 10:d077bb12d259 | 72 | else |
manumaet | 10:d077bb12d259 | 73 | pc.printf("%d Buffer: %d\r\n", i, strlen(messagecheck)+1); |
manumaet | 9:c8839de428ac | 74 | /*for(int i=0; i<10; i++) { // to control Voltage |
manumaet | 9:c8839de428ac | 75 | pc.printf("%d Voltage: %f\r\n", i, dw.getVoltage()); |
manumaet | 9:c8839de428ac | 76 | wait(0.2); |
manumaet | 9:c8839de428ac | 77 | }*/ |
manumaet | 10:d077bb12d259 | 78 | wait(1); |
manumaet | 8:7a9c61242e2f | 79 | #else |
manumaet | 8:7a9c61242e2f | 80 | pc.printf("%d Waiting...\r\n", i); |
manumaet | 10:d077bb12d259 | 81 | wait(1); |
manumaet | 0:f50e671ffff7 | 82 | # endif |
manumaet | 4:6240b9c7a033 | 83 | |
manumaet | 0:f50e671ffff7 | 84 | } |
manumaet | 0:f50e671ffff7 | 85 | } |