Датчик температуры (ds18b20) в Atmega32

Обсуждаем контроллеры компании Atmel.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Сб апр 17, 2021 03:49:16

Сообщение vladozoff »

Доброго времени суток! Подключаю к портуB микроконтроллера Atmega32(16Мгц) датчик температуры, написал код, чтобы в зависимости от температуры на сервомоторы подавались 1 или 0 , но всегда на сервомоторы подаются единицы при любой температуре.Что я делаю ни так ?
Вложения
Снимок.PNG
Изображение схемы
(14.72 КБ) 130 скачиваний
42.c
Код микроконтроллера
(6.13 КБ) 114 скачиваний
Реклама
Друг Кота
Аватара пользователя
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

Сообщение Ivanoff-iv »

1) справа на контакты энкопривода подано питание... это для чего?

Добавлено after 6 minutes 8 seconds:
2) не стоит инициировать 1вире ДО настройки внутренней периферии, в частности портов... (состояние регистров может затереться)

Добавлено after 2 minutes 18 seconds:
поставь проект на паузу и глянь, что у тебя в переменной темпер...
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3059
Зарегистрирован: Пн май 11, 2009 14:15:00
Откуда: СПб

Сообщение *Trigger* »

Библиотека 1-Wire в CVAVR работает некорректно, если разрешены прерывания (т.к. задержки там отсчитываются по числу тактов МК, как в delay_us() и delay_ms()). На время работы с 1-Wire прерывания нужно запрещать.

Проще всего написать #asm("cli") и #asm("sei") перед и после измерения температуры. Более правильно будет модифицировать библиотеку для работы с DS18B20, запрещая прерывания только тогда, когда вызываются функции из 1wire.h.

Также, хоть это и не относится к проблеме с измерением температуры, нужно позаботиться об атомарном доступе к двухбайтовой переменной с результатом измерения АЦП.
Этот пост оказался полезен? Не поленись, нажми Изображение слева!
:) :)) :)))
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Ответить

Вернуться в «AVR»