#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 (parent->GetModule(IO_DISPLAY_MAIN))->Print("pre 1", 4, 1); //Wait for response while(!(PINC & pin)){asm volatile("nop");} (parent->GetModule(IO_DISPLAY_MAIN))->Print("pre 2", 4, 1); //Calculate duration of response while(*hardwarePin & pin) { result++; asm volatile("nop"); } (parent->GetModule(IO_DISPLAY_MAIN))->Print("pre 3", 4, 1); return (float(result) * DISTANCE_PER_VALUE); }