Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: DW1000/DW1000.cpp
- Revision:
- 38:8ef3b8d8b908
- Parent:
- 37:40f94c634c3e
- Child:
- 39:bb57aa77b015
--- a/DW1000/DW1000.cpp Fri Feb 20 13:21:06 2015 +0000
+++ b/DW1000/DW1000.cpp Sun Feb 22 11:41:18 2015 +0000
@@ -11,8 +11,9 @@
loadLDE(); // important everytime DW1000 initialises/awakes otherwise the LDE algorithm must be turned of or there's receiving malfunction see User Manual LDELOAD on p22 & p158
// Configuration TODO: make method for that
- writeRegister8(DW1000_SYS_CFG, 3, 0x20); // enable auto reenabling receiver after error
- //writeRegister8(DW1000_SYS_CFG, 2, 0x03); // enable 1024 byte frames TODO: is this really what stated in the comment?
+ writeRegister8(DW1000_SYS_CFG, 3, 0x20); // enable auto reenabling receiver after error
+ writeRegister8(DW1000_SYS_CFG, 2, 0x40); // enable special receiving option for 110kbps!! (0x40) see p.64 of DW1000 User Manual [DO NOT enable 1024 byte frames (0x03) becuase it generates disturbance of ranging don't know why...]
+ writeRegister16(DW1000_TX_FCTRL, 1, 0x2800 | 0x0100 | 0x0080); // use 2048 symbols preable (0x2800), 16MHz pulse repetition frequency (0x0100), 110kbps bit rate (0x0080) see p.69 of DW1000 User Manual
irq.rise(this, &DW1000::ISR); // attach Interrupt handler to rising edge
}
@@ -80,19 +81,20 @@
}
void DW1000::sendFrame(uint8_t* message, uint16_t length) {
- if (length >= 1021) length = 1021; // check for maximim length a frame can have TODO: 127 Byte mode?
+ //if (length >= 1021) length = 1021; // check for maximim length a frame can have with 1024 Byte frames [not used, see constructor]
+ if (length >= 125) length = 125; // check for maximim length a frame can have with 127 Byte frames
writeRegister(DW1000_TX_BUFFER, 0, message, length); // fill buffer
#if 0 // switch draft for slower data rate and original working 6.8Mbps
uint8_t backup = readRegister8(DW1000_TX_FCTRL, 1); // put length of frame
length += 2; // including 2 CRC Bytes
//length = ((backup & 0xFC) << 8) | (length & 0x03FF);
- length = ((0xA0 & 0xFC) << 8) | (length & 0x03FF); // for slower data rate and therefore more range TODO: put in a modular configuration not a fixed value
+ length = ((0x80 & 0xFC) << 8) | (length & 0x03FF); // for slower data rate and therefore more range TODO: put in a modular configuration not a fixed value
writeRegister16(DW1000_TX_FCTRL, 0, length);
backup = readRegister8(DW1000_TX_FCTRL, 2); // change preamble length
uint8_t preamble_reg = (backup & 0xC0) | (0x29 & 0x3F); // for longer preamble to match slower data rate TODO: put in a modular configuration not a fixed value
- writeRegister8(DW1000_TX_FCTRL, 2, preamble_reg);
+ //writeRegister8(DW1000_TX_FCTRL, 2, preamble_reg);
#else
uint8_t backup = readRegister8(DW1000_TX_FCTRL, 1); // put length of frame
length += 2; // including 2 CRC Bytes
