Страница 1 из 1

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

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

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

Добавлено: 19 янв 2019, 17:12
gurvinok
Код для файла 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. Это нужно чтоб при генерации нового проекта с датчиком, генератор подтягивал уже обновленные файлы.
Будут вопросы, пиши.

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

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

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

Добавлено: 21 янв 2019, 22:21
gurvinok
как последовательно считывать ROM с каждого датчика?
Такую функцию я еще не писал, но в обновленной библиотеке обязательно будет.

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

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

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

Добавлено: 21 фев 2019, 22:48
gurvinok
Есть такая беда. Чуть позже исправлю.

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

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

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

Добавлено: 28 фев 2019, 22:03
gurvinok
Пока не знаю, так как очень мало свободного времени.