Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Category:

DHT22/DHT11 на STM32F103

Добил шайтана!
Сначала ожидал, что нужно будет полноценным захватом ШИМ пользоваться, но т.к. в протоколе неинформативная часть имеет постоянную длину импульса, а информативная меняется, достаточно захватывать только полную длину импульса, чтобы определить, единица это или нуль.
Используется таймер TIM1, CC1 настроен на восходящий импульс, CC2 — на нисходящий (но можно CC2 вообще удалить, он здесь роли не играет). Соответственно, таймер в режиме захвата ШИМ и сбрасывает счетчик по событию CC1. По этому же событию DMA передает содержимое счетчика CC1 в очередную ячейку массива данных. Таймер настроен на частоту 1МГц, т.е. 1 тик соответствует 1мкс. Размер массива — 45 байт (чтобы наверняка), хотя, понятное дело, нужно только 42 (короткий начальный импульс, далее 160мкс готовность и 40 бит данных). В ARR записал 200 — чтобы через 201мкс после захвата переднего фронта выключить все, если данных нет.
С инициализацией измерения не парился: завел конечный автомат, который в течение ~20мс выдает низкий уровень сигнала, а потом запускает цикл измерения.
Единственное, что не понял — так это почему каждый раз после включения железяки первое измерение заканчивается неудачей. В режиме тестирования, когда я вместо DMA использовал прерывания по UEV для заполнения массива, такого не было.
Tags: stm32, железяки
Subscribe

  • Хеши строковых команд для МК

    Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами…

  • OBS studio

    В общем, надоумили меня попробовать трансляцию в youtube. Напрямую скринкасты он писать не умеет, но может забирать поток с промежуточного…

  • M$ teams…

    Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК,…

promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 1 comment