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_temp.cpp
- Committer:
- Jan Tetour
- Date:
- 2015-12-18
- Revision:
- 18:be0130c42925
- Parent:
- 17:94c385ff2641
File content as of revision 18:be0130c42925:
/*
* TSK_TEMP.CPP
*/
#include "mbed.h"
#include "rtos.h"
#include "DS1620.h"
#include "tsk_main.h"
#include "tsk_temp.h"
struct temp_data_struct temp_data;
static DS1620 ds1620Sensor(PB_4, PB_10, PB_3);
uint32_t initDS1620Temp(void const *args) {
temp_data.temperature = 10.0f;
temp_data.temp_raw = 10;
ds1620Sensor.setSerialClockFrequency(freq250k);
if ((ds1620Sensor.readConfig() & 0x03) != 0x03) {
ds1620Sensor.writeConfig(0x03);
}
if ((ds1620Sensor.readConfig() & 0x03) != 0x03) {
return 0;
}
return 1;
}
void temp_thread(void const *args) {
float temp;
uint32_t temp_raw;
while (true) {
ds1620Sensor.startConversion();
// Wait for conversion completion (Tconv = 750 ms typ)
Thread::wait(750);
while (!(ds1620Sensor.readConfig() & 0x80))
Thread::wait(10);
temp = ds1620Sensor.getHighResolutionTemperature();
temp_raw = ds1620Sensor.readTemperatureRaw();
mutexTemp.lock();
temp_data.temperature = temp;
temp_data.temp_raw = temp_raw;
mutexTemp.unlock();
Thread::wait(1250);
}
}