![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Simple test program to get familiar with functionality of MBED RTOS on ST Nucleo-F411RE. Tasks for LED blinking, user button, temperature measurement with DS1620, temperature measurement with internal temperature sensor of ST32F411RE, ultrasonic distance measurement and displaying result on 16x2 TextLCD.
Dependencies: DS1620_improved TextLCD_improved mbed-rtos mbed
tsk_dist.cpp
- Committer:
- dzoni
- Date:
- 2015-12-18
- Revision:
- 17:94c385ff2641
- Parent:
- 15:a627638edd9c
- Child:
- 18:be0130c42925
File content as of revision 17:94c385ff2641:
#include "mbed.h" #include "rtos.h" #include "tsk_main.h" #include "tsk_dist.h" struct dist_data_struct dist_data; static DigitalOut trigDist(PB_9); static InterruptIn echoDist(PA_6); static Timer timer; uint32_t initDist(void const *args) { dist_data.distance = 0.0f; dist_data.timerTicks = 0; trigDist = 0; return 1; } static void rising(void) { timer.start(); } static void falling(void) { timer.stop(); echoDist.rise(0); echoDist.fall(0); // mutexDist.lock(); dist_data.timerTicks = timer.read_us(); // 340 ms-1 dist_data.distance = (timer.read()/2.0f - 0.0f)*340.0f*1000.0f; // mutexDist.unlock(); // Vynuluj timer timer.reset(); } void dist_thread(void const *args) { while (true) { // Dej puls na trig trigDist = 1; Thread::wait(1); trigDist = 0; if (echoDist != 0) { mutexDist.lock(); dist_data.timerTicks = 0; dist_data.distance = 0.0f; mutexDist.unlock(); } else { // Vynuluj timer timer.stop(); timer.reset(); // Cekej na hrany na Echo echoDist.rise(&rising); echoDist.fall(&falling); } Thread::wait(1000); } }