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.
Revision 34:f56962030c5c, committed 2014-12-27
- Comitter:
- manumaet
- Date:
- Sat Dec 27 14:37:12 2014 +0000
- Parent:
- 33:6ea4c3dd504d
- Child:
- 35:95d838d33bf5
- Commit message:
- when merging to eclipse & svn
Changed in this revision
--- a/MMRanging/MMRanging.cpp Tue Dec 02 13:55:01 2014 +0000
+++ b/MMRanging/MMRanging.cpp Sat Dec 27 14:37:12 2014 +0000
@@ -1,6 +1,6 @@
#include "MMRanging.h"
-MMRanging::MMRanging(DW1000& DW) : dw(DW){
+MMRanging::MMRanging(DW1000& DW) : dw(DW) {
MMRanging::dw = dw;
ranging_i = 0;
@@ -19,27 +19,27 @@
rangingframe RX;
dw.readRegister(DW1000_RX_BUFFER, 0, (uint8_t*)&RX, dw.getFramelength()); // get data from buffer
-
+ uint8_t Index = RX.sequence_number % 10;
+
switch (RX.type) {
case 1:
- rangingtimingsReceiver[RX.sequence_number][0] = dw.getRXTimestamp();
+ rangingtimingsReceiver[Index][0] = dw.getRXTimestamp();
TX.type = 2;
TX.sequence_number = RX.sequence_number;
TX.time_difference_receiver = 0;
- TX.dummy = 1;
- dw.sendFrame((uint8_t*)&TX, 12);
+ dw.sendFrame((uint8_t*)&TX, sizeof(TX));
break;
case 2:
- rangingtimingsSender[RX.sequence_number][1] = dw.getRXTimestamp();
+ rangingtimingsSender[Index][1] = dw.getRXTimestamp();
break;
case 3:
TX.type = 4;
- TX.time_difference_receiver = rangingtimingsReceiver[TX.sequence_number][1] - rangingtimingsReceiver[TX.sequence_number][0];
- TX.dummy = 1;
- dw.sendFrame((uint8_t*)&TX, 12);
+ TX.time_difference_receiver = rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0];
+ dw.sendFrame((uint8_t*)&TX, sizeof(TX));
break;
case 4:
- tofs[RX.sequence_number % 10] = rangingtimingsSender[RX.sequence_number][1] - rangingtimingsSender[RX.sequence_number][0] - (uint32_t)RX.time_difference_receiver;
+ //tofs[Index] = RX.time_difference_receiver;
+ tofs[Index] = (rangingtimingsSender[Index][1] - rangingtimingsSender[Index][0] - RX.time_difference_receiver);// - 65536;
//tofs[RX->sequence_number] = (rangingtimingsSender[RX->sequence_number][1] - rangingtimingsSender[RX->sequence_number][0] - RX->time_difference_receiver) >> 1;
break;
default : break;
@@ -60,13 +60,13 @@
void MMRanging::callbackTX() {
TX_timestamp = dw.getTXTimestamp();
-
+ uint8_t Index = TX.sequence_number % 10;
switch (TX.type) {
case 1:
- rangingtimingsSender[TX.sequence_number][0] = dw.getTXTimestamp();
+ rangingtimingsSender[Index][0] = dw.getTXTimestamp();
break;
case 2:
- rangingtimingsReceiver[TX.sequence_number][1] = dw.getTXTimestamp();
+ rangingtimingsReceiver[Index][1] = dw.getTXTimestamp();
break;
default: break;
}
@@ -86,15 +86,20 @@
TX.type = 1;
TX.sequence_number = counter;
TX.time_difference_receiver = 0;
- TX.dummy = 1;
- dw.sendFrame((uint8_t*)&TX, 12);
+ dw.sendFrame((uint8_t*)&TX, sizeof(TX));
}
void MMRanging::requestTime() {
TX.type = 3;
TX.sequence_number = counter;
TX.time_difference_receiver = 0;
- TX.dummy = 1;
- dw.sendFrame((uint8_t*)&TX, 12);
+ dw.sendFrame((uint8_t*)&TX, sizeof(TX));
counter++;
+}
+
+void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy) {
+ TX.type = type;
+ TX.sequence_number = sequence_number;
+ TX.time_difference_receiver = time_difference_receiver;
+ dw.sendFrame((uint8_t*)&TX, sizeof(TX));
}
\ No newline at end of file
--- a/MMRanging/MMRanging.h Tue Dec 02 13:55:01 2014 +0000
+++ b/MMRanging/MMRanging.h Sat Dec 27 14:37:12 2014 +0000
@@ -18,12 +18,12 @@
void callbackRX();
void callbackTX();
+ void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy);
- struct rangingframe { // has a length of 10 bytes
- uint8_t type;
- uint8_t sequence_number;
+ struct rangingframe {
+ uint32_t type;
+ uint32_t sequence_number;
uint64_t time_difference_receiver;
- uint16_t dummy;
} ;
uint64_t rangingtimingsSender[10][2];
uint64_t rangingtimingsReceiver[10][2];
--- a/main.cpp Tue Dec 02 13:55:01 2014 +0000
+++ b/main.cpp Sat Dec 27 14:37:12 2014 +0000
@@ -16,17 +16,22 @@
pc.printf("DEVICE_ID register: 0x%X\r\n", dw.getDeviceID());
pc.printf("EUI register: %016llX\r\n", dw.getEUI());
pc.printf("Voltage: %f\r\n", dw.getVoltage());
-
- //r.receiver = true;
+ pc.printf("Size of Frame: %d\r\n", sizeof(r.TX));
+
+ uint16_t setdelay = 65500;
+ dw.writeRegister16(DW1000_TX_ANTD, 0, setdelay);
+ pc.printf("Antenna Delay TX: %d\r\n", dw.readRegister16(DW1000_TX_ANTD, 0));
+ pc.printf("Antenna Delay RX: %d\r\n", dw.readRegister16(DW1000_LDE_CTRL, 0x1804));
+ r.receiver = true;
bool senderstart = true;
while(1) {
for(int j = 0; j < 10; j++)
- pc.printf("%f ", r.tofs[j]*MMRANGING_TIMEUNIT);
+ pc.printf("%d ", (unsigned int)r.tofs[j]);
pc.printf("\r\n");
for(int j = 0; j < 10; j++)
if(r.event[j][0] == '!') {
- pc.printf("%s Time: %fus\r\n", r.event[j], r.eventtimes[j]*MMRANGING_TIMEUNIT);
+ pc.printf("%s Time: %lldus\r\n", r.event[j], r.eventtimes[j]);
r.event[j][0] = 'X';
}
if (!r.receiver) {