DP
Dependencies: FastAnalogIn mbed-rtos mbed
Fork of dipl_prace_v10 by
ultrasonic.cpp@1:28d74f044818, 2015-04-28 (annotated)
- Committer:
- romankrej
- Date:
- Tue Apr 28 18:48:50 2015 +0000
- Revision:
- 1:28d74f044818
- Parent:
- 0:f3b355df6f26
DP
Who changed what in which revision?
User | Revision | Line number | New 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 | } |