EMIR - Ekvitermní mikroprocesorová regulace https://code.google.com/p/emir/ https://code.google.com/p/emir/wiki/DesignV3

Dependencies:   ConfigFile DS1307 OneWire SDFileSystem USBDeviceLite mbed-rtos mbed

Committer:
alpov
Date:
Wed May 07 07:03:18 2014 +0000
Revision:
4:9065e9ccb078
Parent:
3:ede67e9b60eb
Child:
5:5c8e97742751
fixed sensor table

Who changed what in which revision?

UserRevisionLine numberNew contents of line
alpov 3:ede67e9b60eb 1 #include "mbed.h"
alpov 3:ede67e9b60eb 2 #include "rtos.h"
alpov 3:ede67e9b60eb 3 #include "1wire.h"
alpov 3:ede67e9b60eb 4 #include "sensor.h"
alpov 3:ede67e9b60eb 5
alpov 4:9065e9ccb078 6 uint8_t sensor_roms[MAX_SENSORS][8];
alpov 4:9065e9ccb078 7 int16_t sensor_temps[MAX_SENSORS];
alpov 3:ede67e9b60eb 8 int sensor_count;
alpov 3:ede67e9b60eb 9
alpov 3:ede67e9b60eb 10 Mutex sensor_mutex;
alpov 3:ede67e9b60eb 11
alpov 3:ede67e9b60eb 12 void sensor_thread(void const *args)
alpov 3:ede67e9b60eb 13 {
alpov 3:ede67e9b60eb 14 OneWire ow(A4, A2, A3);
alpov 3:ede67e9b60eb 15 int result, temp;
alpov 3:ede67e9b60eb 16 uint8_t rom[8];
alpov 3:ede67e9b60eb 17
alpov 3:ede67e9b60eb 18 while (1) {
alpov 3:ede67e9b60eb 19 ow.ConvertAll(false);
alpov 3:ede67e9b60eb 20 Thread::wait(CONVERT_T_DELAY);
alpov 3:ede67e9b60eb 21
alpov 3:ede67e9b60eb 22 sensor_mutex.lock();
alpov 3:ede67e9b60eb 23 sensor_count = 0;
alpov 3:ede67e9b60eb 24 memset(rom, 0, sizeof(rom));
alpov 3:ede67e9b60eb 25 result = ow.First(rom);
alpov 4:9065e9ccb078 26 while (result == OW_FOUND && sensor_count < MAX_SENSORS) {
alpov 3:ede67e9b60eb 27 if (ow.ReadTemperature(rom, &temp) == 0) {
alpov 3:ede67e9b60eb 28 memcpy(sensor_roms[sensor_count], rom, sizeof(rom));
alpov 3:ede67e9b60eb 29 sensor_temps[sensor_count] = temp;
alpov 3:ede67e9b60eb 30 sensor_count++;
alpov 3:ede67e9b60eb 31 }
alpov 3:ede67e9b60eb 32 result = ow.Next(rom);
alpov 3:ede67e9b60eb 33 }
alpov 3:ede67e9b60eb 34 sensor_mutex.unlock();
alpov 3:ede67e9b60eb 35 }
alpov 3:ede67e9b60eb 36 }
alpov 3:ede67e9b60eb 37