Dht22 и atmega328p

Тема в разделе "Arduino & Shields", создана пользователем drleonid, 25 окт 2020.

  1. drleonid

    drleonid Нуб

    Всем доброго дня!
    Не могу решить возникшую проблему с опросом DHT22 микроконтроллером aTMEGA328P.
    Краткое описание: имеется самодельная плата с МК ATMEGA328P PU, необходимой обвязкой, внешним кварцем 16мГц, несколькими выводами, к одному из которых (нога №15, pin D9) подключен DHT22 с подтягивающим резистором 10kOm между плюсом и "сигналом". Также подключен NEXTION-дисплей
    Прошиваю схему через "Arduino as ISP", сначала залив загрузчик, затем - скетч. Все работает идеально.
    Выключаю питание платы, жду 5 сек., включаю - работает все, кроме DHT22 (показания датчика не обновляются).
    Делаю RESET кнопкой - DHT22 вновь просыпается и работает нормально. Отключаю питание - включаю питание - DHT опять висит. Reset кнопкой - DHT опять работает.
    Заливаю этот скетч в фабричную ардуину - все работает бес сбоев.

    Буду безмерно благодарен всем, кто поможет решить проблему.
    Заранее спасибо!!!
     
  2. parovoZZ

    parovoZZ Гуру

    Зачем так делать? Бинарник либо содержит загрузчик, либо нет. Если загрузчика в бинарнике нет, то после заливки через ISP загрузчик сотрется. Если МК программируется через ISP, к чему тогда заливать загрузчик?
     
  3. Airbus

    Airbus Радиохулиган Модератор

    На Reset подтяжка ввиде резистора есть? Монтаж самопальной Ардуины правильный?
     
  4. parovoZZ

    parovoZZ Гуру

    Она внутри есть. Включена всегда, пока пин RESET является таковым.
     
  5. drleonid

    drleonid Нуб

    на RESET подтяжка есть, 10kOm; монтаж правильный, сверял неоднократно. Да и другие датчики на этой плате работают нормально, пробовал с разными скетчами.
     
  6. drleonid

    drleonid Нуб

    обязательно приму к сведению и учту в последующих комментариях
     
  7. drleonid

    drleonid Нуб

    Пробовал заливать без загрузчика. Проблема не решилась.
     
  8. parovoZZ

    parovoZZ Гуру

    Когда происходит такая шляпа, я в самом начале программы все интерфейсные пины перевожу на выход. Они прижимаются к земле, тем самым исключается какая-либо возможность наводки на эти линии.
    Совсем недавно воевал с SI4060 - с подключённым ЛА обмен идёт как надо, отключаю ЛА - трансивер чудит и никак не хочет работать.
     
  9. drleonid

    drleonid Нуб

    Интересная идея! Попробую обязательно. Сейчас погуглю, как это правильно сделать...
     
  10. a1000

    a1000 Гик

    С помощью pinMode()
     
  11. drleonid

    drleonid Нуб

    Попробовал. Проблему не решает...
     
  12. Airbus

    Airbus Радиохулиган Модератор

    Могу предположить только неправильную разводку платы.В соседней теме обсуждали уже.Выставили во фьюзах СКРОТ и заработало. У вас какие фьюзы стоят?Фото платы есть?Лодыря как грузили?Такое авно и на навесном монтаже работает не то что на макетке.Что то Вы темните.
     
  13. parovoZZ

    parovoZZ Гуру

    а как пробовал?
    Вешай на пин ресета конденсатор, чтобы дольше ресет держал. Внешний 10к резистор убери, чтобы емкость у конденсатора не задирать.
     
  14. drleonid

    drleonid Нуб

    Звучит как план ) Подскажешь, какой ёмкости кондер брать?
     
  15. drleonid

    drleonid Нуб

    Фото платы прикладываю. Лодыря гружу через "Arduino as ISP" в IDE. По фьюзам ничего сказать не могу, так глубоко я в тему пока что не влезал. Темнить не намеревался, мне бы проблему решить...
     

    Вложения:

    • IMG_4848.jpg
      IMG_4848.jpg
      Размер файла:
      994,7 КБ
      Просмотров:
      21
  16. Airbus

    Airbus Радиохулиган Модератор

    Вот первое что бросилось а глаза—зачем туда Кварц вынесли? Получился контур с немалой индуктивностью. Неужели нельзя его было прям у ног засандалить? Там и gnd рядом есть шоб кондеры 22 пик повесить?Не ну я просто всегда сам так делаю. Уже думал что это «Отче наш» для всех и каждого. Вообще накосячить с разводкой плат под ардуиноподобные устройства сложно— но можно! Несколько человек в.т.ч и я делаем такие устройства. Так там правило N1 миимально короткие проводники от и до кварца. И вообще минимально короткие проводники. Ну и внешний резет тоже закон!
     
    Daniil и parovoZZ нравится это.
  17. drleonid

    drleonid Нуб

    Я, конечно, попробую переделать плату с учетом рекомендаций по длине дорожек, но не уверен, что моя проблема кроется именно в этом. На этой плате я пробовал множество разных скетчей и тестировал работу разных датчиков. Все работает прекрасно, кроме DHT22.
    Но, безусловно, соглашусь, что правила соблюдать нужно.
     
  18. parovoZZ

    parovoZZ Гуру

    читай даташит на предмет того, при каком напряжении на ресете МК будет находиться в режиме ресета. Затем по стандартной формуле расчета постоянной времени RC цепочки рассчитываешь значение конденсатора. Внутренний резистор ресета есть в даташите. На память он 30-50 кОм.

    я так подозреваю, что при подаче питания он очень долго раскачивается. А при ресете осциллятор не останавливается. Тут или фьюзами выставлять время на раскачку осциллятора, либо пересаживаться на внутренний RC генератор. Ну или полностью переделывать плату.

    А я-то думал, что у меня кварц далеко сидит (30 МГц!)
    IMG_0812.JPG

    А тут он вообще за буйки заброшен))