реклама на сайте
подробности

 
 
> Atmega16 +dht11
Stiner
сообщение Nov 24 2014, 17:15
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 12-04-14
Пользователь №: 81 348



Всем привет!
Я только начинаю свой путь. Пишу в Codevisionavr 3.12. В сети кое как нашёл пример по работе с dht11, но он на прерываниях. Вся система из-за этого висит т.к. постоянно генерирует прерывание датчик. Прошу тыкнуть меня что мне нужно исправить.
Большое спасибо

Сообщение отредактировал Stiner - Nov 24 2014, 17:18
Эскизы прикрепленных изображений
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  modul.txt ( 9.36 килобайт ) Кол-во скачиваний: 120
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Dust112
сообщение Nov 26 2014, 02:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-06
Пользователь №: 15 890



Вод код позаимствованный именно из библиотеки для Arduino. Великолепно работающий в моем проекте.
CODE
unsigned char DHT_Read(int *temperature, int *humidity, uint8_t *sign)
{
int temp;
uint8_t data[5] = {0};

if (SENSOR_is_low)
{
// bus not free
return 1;
}

SENSOR_sda_out;
SENSOR_sda_low; // MCU start signal
_delay_ms(20); // start signal (pull sda down for min 0.8ms and maximum 20ms)
SENSOR_sda_in;

// Bus master has released time min: 20us, typ: 30us, max: 200us
uint8_t timeout = 200;
while(SENSOR_is_hi) {_delay_us(1); if (!timeout--) {return 1;}}

// AM2302 response signal min: 75us typ:80us max:85us
timeout = 85;
while(SENSOR_is_low) {_delay_us(1); if (!timeout--) {return 1;}} // response to low time
timeout = 85;
while(SENSOR_is_hi) {_delay_us(1); if (!timeout--) {return 1;}} // response to high time


/*
* time in us: min typ max
* signal 0 high time: 22 26 30 (bit=0)
* signal 1 high time: 68 70 75 (bit=1)
* signal 0,1 down time: 48 50 55
*/

// uint8_t data[5]={0};

for(uint8_t i = 0; i < 5; i++)
{
uint8_t sensor_byte = 0;
for(uint8_t j = 1; j <= 8; j++) // get 8 bits from sensor
{
timeout = 55;
while(SENSOR_is_low) {_delay_us(1); if (!timeout--) {return 1;}} // signal "0", "1" low time
_delay_us(30);
sensor_byte <<= 1; // add new lower byte
if (SENSOR_is_hi) // if sda high after 30us => bit=1 else bit=0
{
sensor_byte |= 1;
timeout = 45; // 30us - 75us = 45us
while(SENSOR_is_hi) {_delay_us(1); if (!timeout--) {return 1;}}
}
}
data[i] = sensor_byte;
}

uint8_t sum = data[0] + data[1] + data[2] + data[3];
if(data[4] != sum) return DHT_ERROR;

temp = data[2] & 0x7F;
temp = (temp << 8)+data[3];

if (data[2] & 0x80)
{
// temp *= -1;
*sign = 0;
} else {
*sign = 1;
}
*temperature = temp;

temp = (data[0] << 8)+data[1];
*humidity = temp;

return DHT_SUCCESS;
}


Сообщение отредактировал Dust112 - Nov 26 2014, 02:11
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Stiner   Atmega16 +dht11   Nov 24 2014, 17:15
- - kovigor   Цитата(Stiner @ Nov 24 2014, 21:15) Прошу...   Nov 25 2014, 00:09
|- - Xenia   Цитата(kovigor @ Nov 25 2014, 03:09) Если...   Nov 25 2014, 00:54
|- - kovigor   Цитата(Xenia @ Nov 25 2014, 03:54) Наскол...   Nov 25 2014, 09:30
- - Stiner   Там даже не 1-wire,а какой-то свой протокол в кото...   Nov 25 2014, 15:31
|- - kovigor   Цитата(Stiner @ Nov 25 2014, 19:31) Там д...   Nov 25 2014, 16:07
- - Dust112   Stiner, поищите в инете библиотеки для Arduino по ...   Nov 25 2014, 18:30
|- - Xenia   Цитата(Dust112 @ Nov 25 2014, 21:30) Stin...   Nov 25 2014, 19:46
|- - kovigor   Цитата(Xenia @ Nov 25 2014, 23:46) Но что...   Nov 25 2014, 20:16
|- - Xenia   Цитата(kovigor @ Nov 25 2014, 23:16) И уч...   Nov 25 2014, 20:38
|- - kovigor   Цитата(Xenia @ Nov 26 2014, 00:38) Конечн...   Nov 25 2014, 23:38
- - Stiner   Я находил сотни реализаций для Arduino, но у меня ...   Nov 26 2014, 10:35
|- - kovigor   Цитата(Stiner @ Nov 26 2014, 14:35) ... н...   Nov 26 2014, 10:41
|- - Stiner   Цитата(kovigor @ Nov 26 2014, 14:41) Повт...   Nov 26 2014, 19:44
|- - kovigor   Цитата(Stiner @ Nov 26 2014, 22:44) 1. По...   Nov 26 2014, 20:02
||- - Stiner   Цитата(kovigor @ Nov 27 2014, 00:02) У ва...   Nov 27 2014, 06:38
||- - kovigor   Цитата(Stiner @ Nov 27 2014, 10:38) Fuse ...   Nov 27 2014, 09:37
|- - Timmy   Цитата(Stiner @ Nov 26 2014, 22:44) 1. По...   Nov 27 2014, 10:08
- - Stiner   Исправил везде мс и мкс. Сейчас датчик стал отзыва...   Nov 27 2014, 17:07
|- - kovigor   Цитата(Stiner @ Nov 27 2014, 20:07) Сейча...   Nov 27 2014, 18:35
|- - Stiner   Цитата(kovigor @ Nov 27 2014, 22:35) Стар...   Nov 28 2014, 08:09
|- - kovigor   Цитата(Stiner @ Nov 28 2014, 12:09) нет, ...   Nov 28 2014, 08:52
- - Stiner   На реальном железе теже проблемы, осцилографа нет.   Dec 3 2014, 17:11
|- - kovigor   Цитата(Stiner @ Dec 3 2014, 21:11) На реа...   Dec 3 2014, 20:07
- - ffs2001   Вот же готовая библиотека на нормальном Си. Там ST...   Dec 3 2014, 19:57


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 21:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01383 секунд с 7
ELECTRONIX ©2004-2016