Не могу прочитать температуру ds18b20

Здесь рассматриваются вопросы относящиеся к работе библиотеки AXLIB
Ответить
saniok22
Сообщения: 4
Зарегистрирован: 15 янв 2019, 19:06

Не могу прочитать температуру ds18b20

Сообщение saniok22 » 18 янв 2019, 12:05

При чтении температуры с датчика ds18b20 отображаемая температура 0 градусов. При этом по всей видимости неправильно считывает ROM (FFFFFFFFFFFF).
Пользую библиотеку и генератор кода AXLIB. Ребята помогите пожалуйста разобраться. https://yadi.sk/d/ELDUjp1PaBl8Rg

Аватара пользователя
gurvinok
Сообщения: 1527
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Не могу прочитать температуру ds18b20

Сообщение gurvinok » 19 янв 2019, 17:12

Код для файла main.c. Добавил вывод ROM кода на первой строке, а вывод температуры на второй.

Код: Выделить всё

#include <avr/io.h>
#include <stdio.h>

#include "main_init.h"
#include "axlib/1w.h"
#include "axlib/ds1820.h"
#include "axlib/lcd.h"

// Здесь должны находиться ваши подключаемые файлы


// Здесь должны находиться ваши глобальные переменные


int main(void)
{
// Здесь должны находиться ваши локальные переменные
BYTE str[20] = {0};
BYTE rom[8] = {0};
WORD temperatura = 0;
// Инициализация 1wire
owire_init();

// Инициализация дисплея
lcd_init(0);

ds1820_rom_code(rom);

sprintf(str, "%02X%02X%02X%02X%02X%02X%02X%02X", rom[0],rom[1],rom[2],rom[3],rom[4],rom[5],rom[6],rom[7]);
lcd_gotoxy(0,0);
lcd_str_out(str);

	while(1)
	{
		// Здесь должен находиться ваш код
		
		temperatura = ds1820_read_t(rom);

		sprintf(str, "t=  %u        ", (temperatura/10));
		
		if(ZNAK == MINUS)
		{
			str[3] = '-';
		}
		else
		{
			str[3] = '+';
		}

		lcd_gotoxy(0,1);
		lcd_str_out(str);
		
	}
}
Далее скачай архив прикрепленный к этому посту. В нем лежат два файла 1w.h и ds1820.h. Закинь их в папку axlib в своем проекте. Если используешь axlib генератор, то закинь эти же файлы в папку по адресу C:\Program Files (x86)\Axlib Генератор\axlib. Это нужно чтоб при генерации нового проекта с датчиком, генератор подтягивал уже обновленные файлы.
Будут вопросы, пиши.
Вложения
axlib.rar
(2.32 КБ) 28 скачиваний
Если долго мучиться, может быть получится.

saniok22
Сообщения: 4
Зарегистрирован: 15 янв 2019, 19:06

Re: Не могу прочитать температуру ds18b20

Сообщение saniok22 » 21 янв 2019, 18:22

Большое спасибо. Все заработало и в протеус и на реальном датчике. Правда с реальным датчиком не сразу. Фьюзы не правильно выставил. помог осциллограф. Еще такой резонный вопрос, как подключить два и более датчика (как последовательно считывать ROM с каждого датчика?)

Аватара пользователя
gurvinok
Сообщения: 1527
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Не могу прочитать температуру ds18b20

Сообщение gurvinok » 21 янв 2019, 22:21

как последовательно считывать ROM с каждого датчика?
Такую функцию я еще не писал, но в обновленной библиотеке обязательно будет.
Если долго мучиться, может быть получится.

saniok22
Сообщения: 4
Зарегистрирован: 15 янв 2019, 19:06

Re: Не могу прочитать температуру ds18b20

Сообщение saniok22 » 20 фев 2019, 20:27

Пожалуйста гляньте для этого проекта функцию resolution. Не меняется дискретность вывода температуры, все время 0.5 градуса

Аватара пользователя
gurvinok
Сообщения: 1527
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Не могу прочитать температуру ds18b20

Сообщение gurvinok » 21 фев 2019, 22:48

Есть такая беда. Чуть позже исправлю.
Если долго мучиться, может быть получится.

saniok22
Сообщения: 4
Зарегистрирован: 15 янв 2019, 19:06

Re: Не могу прочитать температуру ds18b20

Сообщение saniok22 » 28 фев 2019, 19:58

Будет ли в ближайшее время выпуск новых библиотек и дополнение существующих, написание дополнительных функций в генератор ?

Аватара пользователя
gurvinok
Сообщения: 1527
Зарегистрирован: 02 мар 2013, 09:18
Откуда: Москва

Re: Не могу прочитать температуру ds18b20

Сообщение gurvinok » 28 фев 2019, 22:03

Пока не знаю, так как очень мало свободного времени.
Если долго мучиться, может быть получится.

Ответить