Honza T. / Mbed 2 deprecated EXAMPLE_Nucleo_mbed_RTOS_test_code

Dependencies:   DS1620_improved TextLCD_improved mbed-rtos mbed

Committer:
dzoni
Date:
Sun Dec 13 06:25:45 2015 +0000
Revision:
5:ff77acf7d21d
Parent:
2:c190b9b39089
Child:
6:d1435e38c1b4
Initial commit.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dzoni 0:75ede6a15252 1 #include "mbed.h"
dzoni 5:ff77acf7d21d 2 #include "rtos.h"
dzoni 0:75ede6a15252 3 #include "DS1620.h"
dzoni 0:75ede6a15252 4 #include "TextLCD.h"
dzoni 0:75ede6a15252 5
dzoni 5:ff77acf7d21d 6 TextLCD lcd(PA_8, PA_7, PA_9, PA_1, PB_5, PA_10, TextLCD::LCD16x2);
dzoni 5:ff77acf7d21d 7
dzoni 5:ff77acf7d21d 8 DS1620 ds1620Sensor(PB_4, PB_10, PB_3);
dzoni 0:75ede6a15252 9
dzoni 5:ff77acf7d21d 10 static float temperature = 0.0f;
dzoni 5:ff77acf7d21d 11 static uint32_t temp_raw = 0;
dzoni 5:ff77acf7d21d 12 static uint32_t uiCnt=0;
dzoni 5:ff77acf7d21d 13 static DigitalOut myled(LED1);
dzoni 0:75ede6a15252 14
dzoni 5:ff77acf7d21d 15 static void initDS1620Temp() {
dzoni 0:75ede6a15252 16 ds1620Sensor.setSerialClockFrequency(freq500k);
dzoni 0:75ede6a15252 17 if ((ds1620Sensor.readConfig() & 0x03) != 0x03) {
dzoni 0:75ede6a15252 18 ds1620Sensor.writeConfig(0x03);
dzoni 0:75ede6a15252 19 }
dzoni 5:ff77acf7d21d 20 }
dzoni 0:75ede6a15252 21
dzoni 5:ff77acf7d21d 22 void temp_thread(void const *args) {
dzoni 5:ff77acf7d21d 23 while (1) {
dzoni 0:75ede6a15252 24 myled = myled ^ 1;
dzoni 5:ff77acf7d21d 25 ds1620Sensor.startConversion();
dzoni 0:75ede6a15252 26
dzoni 0:75ede6a15252 27 // Wait for conversion completion (Tconv = 750 ms typ)
dzoni 5:ff77acf7d21d 28 Thread::wait(750);
dzoni 0:75ede6a15252 29 while (!(ds1620Sensor.readConfig() & 0x80))
dzoni 5:ff77acf7d21d 30 Thread::wait(10);
dzoni 5:ff77acf7d21d 31
dzoni 0:75ede6a15252 32 temperature = ds1620Sensor.getHighResolutionTemperature();
dzoni 5:ff77acf7d21d 33 temp_raw = ds1620Sensor.readTemperatureRaw();
dzoni 5:ff77acf7d21d 34 }
dzoni 5:ff77acf7d21d 35 }
dzoni 5:ff77acf7d21d 36
dzoni 5:ff77acf7d21d 37 void disp_thread(void const *args) {
dzoni 5:ff77acf7d21d 38 while (1) {
dzoni 0:75ede6a15252 39 lcd.cls();
dzoni 5:ff77acf7d21d 40 lcd.printf("Raw: %u", temp_raw);
dzoni 5:ff77acf7d21d 41 uiCnt += 2;
dzoni 0:75ede6a15252 42 lcd.locate(0, 1);
dzoni 0:75ede6a15252 43 lcd.printf("Float: %3.2f%cC", temperature, 0xdf);
dzoni 0:75ede6a15252 44
dzoni 5:ff77acf7d21d 45 Thread::wait(1900);
dzoni 0:75ede6a15252 46 }
dzoni 0:75ede6a15252 47 }
dzoni 5:ff77acf7d21d 48
dzoni 5:ff77acf7d21d 49 int main() {
dzoni 5:ff77acf7d21d 50
dzoni 5:ff77acf7d21d 51 Thread::wait(1000);
dzoni 5:ff77acf7d21d 52
dzoni 5:ff77acf7d21d 53 initDS1620Temp();
dzoni 5:ff77acf7d21d 54
dzoni 5:ff77acf7d21d 55 Thread dispThread(disp_thread, NULL, osPriorityNormal);
dzoni 5:ff77acf7d21d 56 Thread tempThread(temp_thread, NULL, osPriorityNormal);
dzoni 5:ff77acf7d21d 57
dzoni 5:ff77acf7d21d 58 Thread::wait(osWaitForever);
dzoni 5:ff77acf7d21d 59 }
dzoni 0:75ede6a15252 60