From 4a2ba4b7105d168932163cbd07a062fdf2ba00e9 Mon Sep 17 00:00:00 2001 From: sicarius Date: Sat, 17 Feb 2007 00:35:01 +0000 Subject: +++ enhanced framework hardware interface --- source/Concept/Framework/distance_sensor.cpp | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) (limited to 'source/Concept/Framework/distance_sensor.cpp') 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); +} -- cgit v1.2.3