DP

Dependencies:   FastAnalogIn mbed-rtos mbed

Fork of dipl_prace_v10 by Roman Krejci

Committer:
romankrej
Date:
Tue Apr 28 18:48:50 2015 +0000
Revision:
1:28d74f044818
Parent:
0:f3b355df6f26
DP

Who changed what in which revision?

UserRevisionLine numberNew contents of line
romankrej 0:f3b355df6f26 1 #include "ultrasonic.h"
romankrej 0:f3b355df6f26 2 #include "threads.h"
romankrej 0:f3b355df6f26 3
romankrej 0:f3b355df6f26 4
romankrej 0:f3b355df6f26 5 /*
romankrej 0:f3b355df6f26 6 * Constructor
romankrej 0:f3b355df6f26 7 */
romankrej 0:f3b355df6f26 8 cUltrasonic::cUltrasonic(PinName pinEcho, PinName pinTrig) : echo(pinEcho), trig(pinTrig) {
romankrej 0:f3b355df6f26 9 echo.rise(this,&cUltrasonic::riseEdge);
romankrej 0:f3b355df6f26 10 echo.fall(this,&cUltrasonic::fallEdge);
romankrej 0:f3b355df6f26 11 }
romankrej 0:f3b355df6f26 12
romankrej 0:f3b355df6f26 13
romankrej 0:f3b355df6f26 14 /*
romankrej 0:f3b355df6f26 15 * This method set trigger
romankrej 0:f3b355df6f26 16 */
romankrej 0:f3b355df6f26 17 void cUltrasonic::setTrig(void) {
romankrej 0:f3b355df6f26 18 trig.write(0);
romankrej 0:f3b355df6f26 19 wait_us(5);
romankrej 0:f3b355df6f26 20 trig.write(1);
romankrej 0:f3b355df6f26 21 wait_us(10);
romankrej 0:f3b355df6f26 22 trig.write(0);
romankrej 0:f3b355df6f26 23 }
romankrej 0:f3b355df6f26 24
romankrej 0:f3b355df6f26 25 /*
romankrej 0:f3b355df6f26 26 * ISR of rising edge of received pulse
romankrej 0:f3b355df6f26 27 * in this thread the timer starts
romankrej 0:f3b355df6f26 28 */
romankrej 0:f3b355df6f26 29 void cUltrasonic::riseEdge(void) {
romankrej 0:f3b355df6f26 30 timer.start();
romankrej 0:f3b355df6f26 31 }
romankrej 0:f3b355df6f26 32
romankrej 0:f3b355df6f26 33 /*
romankrej 0:f3b355df6f26 34 * ISR of falling edge of received pulse
romankrej 0:f3b355df6f26 35 * in this thread is saved width of pulse and signal set to collect thread
romankrej 0:f3b355df6f26 36 */
romankrej 0:f3b355df6f26 37 void cUltrasonic::fallEdge(void) {
romankrej 0:f3b355df6f26 38 timer.stop();
romankrej 0:f3b355df6f26 39 pulseWidth = timer.read_us();
romankrej 0:f3b355df6f26 40 timer.reset();
romankrej 0:f3b355df6f26 41 thread->signal_set(0x01);
romankrej 0:f3b355df6f26 42 }
romankrej 0:f3b355df6f26 43
romankrej 0:f3b355df6f26 44 /*
romankrej 0:f3b355df6f26 45 * This method returns width of pulse
romankrej 0:f3b355df6f26 46 */
romankrej 0:f3b355df6f26 47 int cUltrasonic::getPulseWidth(void) {
romankrej 0:f3b355df6f26 48 return pulseWidth;
romankrej 0:f3b355df6f26 49 }