summaryrefslogtreecommitdiffstats
path: root/source/Concept/Framework/distance_sensor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Concept/Framework/distance_sensor.cpp')
-rw-r--r--source/Concept/Framework/distance_sensor.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/source/Concept/Framework/distance_sensor.cpp b/source/Concept/Framework/distance_sensor.cpp
index a11460c..c6c0582 100644
--- a/source/Concept/Framework/distance_sensor.cpp
+++ b/source/Concept/Framework/distance_sensor.cpp
@@ -1 +1,26 @@
-#include "distance_sensor.h" \ No newline at end of file
+#include "distance_sensor.h"
+
+//-----------------------------------------------------------------------------
+float Distance_Sensor::GetDistance()
+{
+ uint32 result = 0;
+
+ //Generate pulse
+ *hardwareDDR |= pin;//Set pin output
+ *hardwarePort |= pin;//Activate port
+ usleep(10);//Wait for 10µs
+ *hardwarePort &= ~pin;//Deactivate port
+ *hardwareDDR &= ~pin;//Set pin input
+
+ //Wait for response
+ while(!(*hardwarePin & pin));
+
+ //Calculate duration of response
+ while(*hardwarePin & pin)
+ {
+ result++;
+ asm volatile("nop");
+ }
+
+ return (float(result) * DISTANCE_PER_VALUE);
+}