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 35:95d838d33bf5, committed 2015-02-17
- Comitter:
- manumaet
- Date:
- Tue Feb 17 10:58:58 2015 +0000
- Parent:
- 34:f56962030c5c
- Child:
- 36:883de6f9a73b
- Commit message:
- working console bar with two nodes after cleanup
Changed in this revision
--- a/MMRanging/MMRanging.cpp Sat Dec 27 14:37:12 2014 +0000
+++ b/MMRanging/MMRanging.cpp Tue Feb 17 10:58:58 2015 +0000
@@ -1,15 +1,8 @@
#include "MMRanging.h"
MMRanging::MMRanging(DW1000& DW) : dw(DW) {
- MMRanging::dw = dw;
-
- ranging_i = 0;
-
- message[0] = '\0';
- messageRX[0] = '\0';
event_i = 0;
counter = 0;
-
dw.setCallbacks(this, &MMRanging::callbackRX, &MMRanging::callbackTX);
dw.startRX();
}
@@ -24,23 +17,16 @@
switch (RX.type) {
case 1:
rangingtimingsReceiver[Index][0] = dw.getRXTimestamp();
- TX.type = 2;
- TX.sequence_number = RX.sequence_number;
- TX.time_difference_receiver = 0;
- dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+ sendRangingframe(2, RX.sequence_number, 0);
break;
case 2:
rangingtimingsSender[Index][1] = dw.getRXTimestamp();
break;
case 3:
- TX.type = 4;
- TX.time_difference_receiver = rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0];
- dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+ sendRangingframe(4, TX.sequence_number, rangingtimingsReceiver[Index][1] - rangingtimingsReceiver[Index][0]); // TODO: sequence number???
break;
case 4:
- //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;
+ tofs = (rangingtimingsSender[Index][1] - rangingtimingsSender[Index][0] - RX.time_difference_receiver);// - 65536;
break;
default : break;
}
@@ -83,21 +69,15 @@
}
void MMRanging::requestRanging() {
- TX.type = 1;
- TX.sequence_number = counter;
- TX.time_difference_receiver = 0;
- dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+ sendRangingframe(1, counter, 0);
}
void MMRanging::requestTime() {
- TX.type = 3;
- TX.sequence_number = counter;
- TX.time_difference_receiver = 0;
- dw.sendFrame((uint8_t*)&TX, sizeof(TX));
+ sendRangingframe(3, counter, 0);
counter++;
}
-void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy) {
+void MMRanging::sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver) {
TX.type = type;
TX.sequence_number = sequence_number;
TX.time_difference_receiver = time_difference_receiver;
--- a/MMRanging/MMRanging.h Sat Dec 27 14:37:12 2014 +0000
+++ b/MMRanging/MMRanging.h Tue Feb 17 10:58:58 2015 +0000
@@ -6,7 +6,8 @@
#include "mbed.h"
#include "DW1000.h"
-#define MMRANGING_TIMEUNIT 1/(128*499.2) // conversion between LSB of TX and RX timestamps and microseconds
+#define MMRANGING_TIMEUNIT_US 1/(128*499.2) // conversion between LSB of TX and RX timestamps and microseconds
+#define MMRANGING_TIMEUNIT_NS 1000/(128*499.2) // conversion between LSB of TX and RX timestamps and nanoseconds
class MMRanging {
public:
@@ -18,7 +19,7 @@
void callbackRX();
void callbackTX();
- void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver, uint16_t dummy);
+ void sendRangingframe(uint8_t type, uint8_t sequence_number, uint64_t time_difference_receiver);
struct rangingframe {
uint32_t type;
@@ -27,15 +28,12 @@
} ;
uint64_t rangingtimingsSender[10][2];
uint64_t rangingtimingsReceiver[10][2];
- uint8_t ranging_i;
- uint64_t tofs[10];
+ uint64_t tofs;
rangingframe TX;
// draft for first test
bool receiver;
- char message[1021];
- char messageRX[1021];
uint64_t TX_timestamp;
uint64_t RX_timestamp;
int event_i;
--- a/main.cpp Sat Dec 27 14:37:12 2014 +0000
+++ b/main.cpp Tue Feb 17 10:58:58 2015 +0000
@@ -18,30 +18,32 @@
pc.printf("Voltage: %f\r\n", dw.getVoltage());
pc.printf("Size of Frame: %d\r\n", sizeof(r.TX));
- uint16_t setdelay = 65500;
+ uint16_t setdelay = 32768;
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;
+ //r.receiver = true;
- bool senderstart = true;
while(1) {
- for(int j = 0; j < 10; j++)
- pc.printf("%d ", (unsigned int)r.tofs[j]);
- pc.printf("\r\n");
- for(int j = 0; j < 10; j++)
+ for(int j = 0; j < 1; j++)
+ //pc.printf("%f ", r.tofs[j]*MMRANGING_TIMEUNIT_NS);
+ pc.printf("%lld [", r.tofs);
+ int dots = r.tofs*70/1400;
+ if (abs(dots) < 100000)
+ for(int j = 0; j < dots; j++)
+ pc.printf("=");
+ pc.printf("]\r\n");
+ /*for(int j = 0; j < 10; j++)
if(r.event[j][0] == '!') {
pc.printf("%s Time: %lldus\r\n", r.event[j], r.eventtimes[j]);
r.event[j][0] = 'X';
- }
+ } */
if (!r.receiver) {
- if(senderstart)
- r.requestRanging();
- else
- r.requestTime();
- senderstart = !senderstart;
+ r.requestRanging();
+ wait(0.05);
+ r.requestTime();
}
- pc.printf("Status: %llX\r\n", dw.getStatus());
- wait(2);
+ //pc.printf("Status: %llX\r\n", dw.getStatus());
+ wait(0.01);
}
}
\ No newline at end of file