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@3:ede67e9b60eb, 2014-05-06 (annotated)
- Committer:
- alpov
- Date:
- Tue May 06 19:21:27 2014 +0000
- Revision:
- 3:ede67e9b60eb
- Child:
- 4:9065e9ccb078
working with RTOS, changed USBDevice library to lite version without malloc()
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 | 3:ede67e9b60eb | 5 | |
alpov | 3:ede67e9b60eb | 6 | uint8_t sensor_roms[8][16]; |
alpov | 3:ede67e9b60eb | 7 | int16_t sensor_temps[16]; |
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 | 3:ede67e9b60eb | 26 | while (result == OW_FOUND) { |
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 |