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

Categories:

1-wire на STM8

(написал бы вчера, но почти двое суток интернета не было в поселке)

Потихоньку мои сниппеты для STM8 разрастаются. Чтобы переделать "вольтметр" в термометр на 1-wire (кстати, можно и простое термореле сделать на трехсимвольном "вольтметре" — у него свободных ног достаточно),понадобилась поддержка 1-wire. Все, что в интернете находил, было реализовано совершенно некрасиво: ногодрыгом с жуткими задержками (по сути, операция опроса термодатчика везде делалась блокирующей, что не очень хорошо для таких вещей, как динамическая индикация, опрос клавиатуры и т.п.).
Я сделал на таймере: у трехсимвольного "вольтметра" как раз второй канал compare/capture таймера TIM2 используется как аналоговый вход для измеряемого напряжения, т.е. модифицировать будет проще всего. И Вот, что получилось. Пока что код непричесанный, содержит много отладочной информации + не до конца допиленный.

Что уже реализовано:
  • опрос одного-единственного датчика с командой Skip ROM,

  • вывод температуры в тысячных долях °C,

  • сохранение ROM-кода подключенного датчика в EEPROM (т.к. я рассчитывал на STM8S003, то, несмотря на то, что у 105-го, на котором я тренируюсь, 1кБ EEPROM, датчиков максимум 14, т.к. у 003-го всего лишь 128Б),

  • поочередный опрос всех датчиков с сохраненным ROM и выдача температуры.

Что еще нужно реализовать (UPD 08.04):
  • убрать тысячные (т.к. точность DS18 ниже плинтуса, там даже округление до целых градусов — многовато, по-хорошему, надо в сторону ближайшей тройки, а то и четверки округлять), (сделано), теперь по крайней мере не так в глаза бросается; вот, например, для "устаканившихся" трех B20 и одного (четвертого) S20: 23.6, 23.5, 23.4, 23.5. А то и вообще: 23.6, 23.6, 23.4, 24.0...

  • добавить возможность удаления ROM несуществующих датчиков, (сделано)

  • перенести весь код на "вольтметр".


Потом еще хочу с DHT11/DHT22 научиться работать. Но у них совсем все уныло, т.к. только 1 датчик на линию можно вешать. Да и точность там ну совсем жуткая, даже DS18 фору даст!

А еще надо бы закончить с реализацией аппаратного 1-wire (через таймер с DMA) на STM32.
Tags: stm8, железяки
Subscribe

  • Выделение 4-связных компонент на изображении

    Я уже давным-давно писал об этом алгоритме, но когда понадобилось его однозначно и надежно применить, оказалось, что на некоторых тестовых…

  • А что, в С так нельзя?

    Пытаюсь передать в функцию цвет как массив. Функция такая: void Pattern_draw3(Img3 *img, Pattern *p, int xul, int yul, uint8_t colr[3]); И…

  • Ардуиноподход

    Вот как ни гляну, большинство народу для считывания данных калибровки в BMP/BME280 использует типичный ардуиноподход, как, например, здесь: зачем-то…

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

    Anonymous comments are disabled in this journal

    default userpic
  • 9 comments