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
src/sensor.cpp@6:c24057b64a66, 2014-07-30 (annotated)
- Committer:
- alpov
- Date:
- Wed Jul 30 19:03:20 2014 +0000
- Revision:
- 6:c24057b64a66
- Parent:
- 5:5c8e97742751
library updates
Who changed what in which revision?
User | Revision | Line number | New 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 | 5:5c8e97742751 | 5 | #include "sd.h" |
alpov | 3:ede67e9b60eb | 6 | |
alpov | 4:9065e9ccb078 | 7 | uint8_t sensor_roms[MAX_SENSORS][8]; |
alpov | 4:9065e9ccb078 | 8 | int16_t sensor_temps[MAX_SENSORS]; |
alpov | 3:ede67e9b60eb | 9 | int sensor_count; |
alpov | 3:ede67e9b60eb | 10 | |
alpov | 3:ede67e9b60eb | 11 | Mutex sensor_mutex; |
alpov | 3:ede67e9b60eb | 12 | |
alpov | 3:ede67e9b60eb | 13 | void sensor_thread(void const *args) |
alpov | 3:ede67e9b60eb | 14 | { |
alpov | 3:ede67e9b60eb | 15 | OneWire ow(A4, A2, A3); |
alpov | 3:ede67e9b60eb | 16 | int result, temp; |
alpov | 3:ede67e9b60eb | 17 | uint8_t rom[8]; |
alpov | 3:ede67e9b60eb | 18 | |
alpov | 3:ede67e9b60eb | 19 | while (1) { |
alpov | 3:ede67e9b60eb | 20 | ow.ConvertAll(false); |
alpov | 3:ede67e9b60eb | 21 | Thread::wait(CONVERT_T_DELAY); |
alpov | 3:ede67e9b60eb | 22 | |
alpov | 3:ede67e9b60eb | 23 | sensor_mutex.lock(); |
alpov | 3:ede67e9b60eb | 24 | sensor_count = 0; |
alpov | 3:ede67e9b60eb | 25 | memset(rom, 0, sizeof(rom)); |
alpov | 3:ede67e9b60eb | 26 | result = ow.First(rom); |
alpov | 4:9065e9ccb078 | 27 | while (result == OW_FOUND && sensor_count < MAX_SENSORS) { |
alpov | 3:ede67e9b60eb | 28 | if (ow.ReadTemperature(rom, &temp) == 0) { |
alpov | 3:ede67e9b60eb | 29 | memcpy(sensor_roms[sensor_count], rom, sizeof(rom)); |
alpov | 3:ede67e9b60eb | 30 | sensor_temps[sensor_count] = temp; |
alpov | 3:ede67e9b60eb | 31 | sensor_count++; |
alpov | 5:5c8e97742751 | 32 | |
alpov | 5:5c8e97742751 | 33 | int id = get_sensor_cfg(rom, NULL); |
alpov | 5:5c8e97742751 | 34 | log_temperature(id, temp); |
alpov | 3:ede67e9b60eb | 35 | } |
alpov | 3:ede67e9b60eb | 36 | result = ow.Next(rom); |
alpov | 3:ede67e9b60eb | 37 | } |
alpov | 3:ede67e9b60eb | 38 | sensor_mutex.unlock(); |
alpov | 3:ede67e9b60eb | 39 | } |
alpov | 3:ede67e9b60eb | 40 | } |
alpov | 3:ede67e9b60eb | 41 |