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

 
 
> 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
Ответов
Stiner
сообщение Nov 26 2014, 10:35
Сообщение #2


Участник
*

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



Я находил сотни реализаций для Arduino, но у меня не arduino и код в codevisionavr. В связи с этим и есть проблемы. Я реализовал как смог, но не получается по этому и прошу помоши.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 26 2014, 10:41
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Stiner @ Nov 26 2014, 14:35) *
... но у меня не arduino и код в codevisionavr. В связи с этим и есть проблемы. Я реализовал как смог, но не получается по этому и прошу помоши.

Повторю два надоедливых совета:
1. Подтяните линию данных датчика к его линии питания (резистором на 4.7КОм).
2. Откройте даташит на датчик (выше я дал на него ссылку), изучите его и напишите свою реализацию. Там работы на день, от силы. Вы на общение на форуме гораздо больше времени потратите ...
Go to the top of the page
 
+Quote Post
Stiner
сообщение Nov 26 2014, 19:44
Сообщение #4


Участник
*

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



Цитата(kovigor @ Nov 26 2014, 14:41) *
Повторю два надоедливых совета:
1. Подтяните линию данных датчика к его линии питания (резистором на 4.7КОм).
2. Откройте даташит на датчик (выше я дал на него ссылку), изучите его и напишите свою реализацию. Там работы на день, от силы. Вы на общение на форуме гораздо больше времени потратите ...

1. Подтянул, просто в схеме не отразил
2. Я написал своюй реализацию, но датчик так и молчит, не отзываясь на запрос передачи...
CODE
int data[5], counter = 0, sum = 0, i = 0;
int D_1=123, D_2=456;
void DHT_Read_Data(){
// Очистить массив контролльных сумм
data[0] = data[1] = data[2] = data[3] = data[4] = 0;
DDRD.7 = 0; // делаем вывод мк выходом
// Подготока шины для передачи
PORTD.7 = 1;
delay_ms(250);
// Инициализаруем передачу
PORTD.7 = 0; // прижимаем к земле не менее чем на 18 мс
delay_ms(25);
PORTD.7 = 1; // поднимаем и ждём реакции датчика
delay_ms(40);

DDRD.7 = 1; // делаем выход мк входом
delay_ms(60);
// начинаем саму передачу
if (PIND.7 ==1) { // если на выходе всё так же 1, значит датчик не ответил и мы выодим из процедуры
return;
}
// если всё ок, идём дальше и ждём пока датчик не подымет до 1 и не начнет передачу

while( PIND.7 == 1)
{
delay_ms(30); // ждём появления нуля на шине первый раз
while (counter <= 40) // принимаем 40 бит данных
{
while( PIND.7 == 0)
{
// запускаем по битовый приём
if( PIND.7 == 1)
{
data[i] <<= 0;
}
delay_ms(40); // если 1 держится более 28 мкс, то передаётся 1
if (PIND.7 == 1)
{
data[i] <<= 1;
}
}

// подсчёт значения для числа CRC
if (counter < 8)
i = 0;
else
if (counter <16)
i = 1;
else
if (counter < 24)
i = 2;
else
if (counter < 32)
i = 3;
else
i = 4;
counter++; // увеличиваем счётчик на один
delay_ms(30); // ждём появления нуля на шине
}
}
// проверяем всё
sum = data[0] + data[1] + data[2] + data[3];
if( sum != data[4]){
data[0] = 999;
}
D_1 = data[0];
D_2 = data[2];
}


Сообщение отредактировал IgorKossak - Nov 26 2014, 20:06
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 26 2014, 20:02
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Stiner @ Nov 26 2014, 22:44) *
1. Подтянул, просто в схеме не отразил
2. Я написал своюй реализацию, но датчик так и молчит, не отзываясь на запрос передачи...

У вас МК от чего тактируется ? Вы уверены, что не от внутренней RC - цепочки, а от кварца ? Я - нет. Fuse - биты запрограммированы, как надо, или оставлены по умолчанию ?
Просто этот протокол весьма чувствителен к длительностям полей и битовых интервалов. А если у вас частота в N раз ниже требуемой (и ожидаемой вами), то и результат, который вы привели, вполне закономерен ...
Go to the top of the page
 
+Quote Post
Stiner
сообщение Nov 27 2014, 06:38
Сообщение #6


Участник
*

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



Цитата(kovigor @ Nov 27 2014, 00:02) *
У вас МК от чего тактируется ? Вы уверены, что не от внутренней RC - цепочки, а от кварца ? Я - нет. Fuse - биты запрограммированы, как надо, или оставлены по умолчанию ?
Просто этот протокол весьма чувствителен к длительностям полей и битовых интервалов. А если у вас частота в N раз ниже требуемой (и ожидаемой вами), то и результат, который вы привели, вполне закономерен ...

Fuse -биты я не трогал т.к. код написал для протеуса и там не знаю как их зашить. Я поставил на самом мк только частоту 8 мгц и работу от внешнего источника —
Прикрепленное изображение


Сообщение отредактировал Stiner - Nov 27 2014, 07:26
Go to the top of the page
 
+Quote Post
kovigor
сообщение Nov 27 2014, 09:37
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Stiner @ Nov 27 2014, 10:38) *
Fuse -биты я не трогал т.к. код написал для протеуса и там не знаю как их зашить. Я поставил на самом мк только частоту 8 мгц

А на самом деле, там в 8 раз меньшая частота:

Цитата
The device is shipped with CKSEL = ”0001” and SUT = ”10”. The default clock source
setting is therefore the 1 MHz Internal RC Oscillator with longest startup time. This
default setting ensures that all users can make their desired clock source setting using
an In-System or Parallel Programmer.

Поэтому у вас ничего и не работает.
Протеус - как бы это помягче сказать .... уберите подальше. Читайте даташит, разбирайтесь с Fuse - битами и устанавливайте их (программатором, конечно же), как вам нужно. Например, я PonyProg'ом пользуюсь. Многим больше нравится AvReal. Но это не столь важно. До тех пор, пока вы в этом не разберетесь, ничего у вас как положено не заработает ...
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
- - Dust112   Вод код позаимствованный именно из библиотеки для ...   Nov 26 2014, 02:09
|- - 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 - 12:31
Рейтинг@Mail.ru


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