Привет) Можете, пожалуйста, посмотреть посмотреть на код для роботы плати f3 и датчика температуры/влажности, по чему-то постоянно ноль читает, пытался читать даташин, но он какой-то не понятный. Заранее спасибо)
Спойлер
dth22 это DHT22?
Похоже опять проблемы с регистром MODER
MODER:
00 - по умолчанию вход
01 (GPIO_MODER_MODER10_0) - выход
10 (GPIO_MODER_MODER10_1) - альтернативная функция
11 (GPIO_MODER_MODER10) - аналоговый режим
oleg110592 писал(а):dth22 это DHT22?
Похоже опять проблемы с регистром MODER
MODER:
00 - по умолчанию вход
01 (GPIO_MODER_MODER10_0) - выход
10 (GPIO_MODER_MODER10_1) - альтернативная функция
11 (GPIO_MODER_MODER10) - аналоговый режим
Да, извините за ошибку - это DHT22, я просто пробовал делать кнопку не через прерывание, а через считывание состояние через цикл, так с 01 - оно работало, можете, пожалуйста, объяснить как написать в коде 00.
для DHT22 нужна внешняя подтяжка - резистор 10K, внутренней мало. Вывод порта лучше настроить как Output open-drain. Диаграммы работы датчика можно посмотреть в документации или, например, здесь: http://www.kondratev-v.ru/spravochnik/d ... th-22.html
Если я правильно понял то: МК настроен на запись -> Делаем ноль -> Пауза 20мс -> Делаем высокий ур. -> Пауза 80мс -> Переключаем на чтение -> Читаем биты данных (температура и влажность + проверка), правильно я понял?
Еще вопрос, а как делается по "best practice" пауза (мне кажется точно не через цикл)?
DHT_0; //шину в 0
delay_ms(18);
DHT_1; //отпускаем шину, только подтяжка 10К
delay_us(50); // ждем ответа о присутствии
if(DHTIN){} //датчик не ответил или его нет - выходим из подпрограммы опроса датчика
//продолжаем
while(DHTIN == 0); //тут можно зависнуть
while(DHTIN); //тут можно зависнуть
//читаем данные
...
для DHT22 нужна внешняя подтяжка - резистор 10K, внутренней мало. Вывод порта лучше настроить как Output open-drain. Диаграммы работы датчика можно посмотреть в документации или, например, здесь: http://www.kondratev-v.ru/spravochnik/d ... th-22.html
Тут спорный вопрос относительно подтяжки, я читал несколько вариантов даташитов (так и не понял какой из них правильный в этом отношении), в одних пишут что нужна обязательно подтяжка и кондер на питание, в других вариантах, что и то и другое желательно только на длинных линиях. У меня работает без подтяжки, правда линия короткая 20 см и не на голом контроллере, а на отладочной плате.