Не могу прочитать температуру ds18b20
Не могу прочитать температуру ds18b20
При чтении температуры с датчика ds18b20 отображаемая температура 0 градусов. При этом по всей видимости неправильно считывает ROM (FFFFFFFFFFFF).
Пользую библиотеку и генератор кода AXLIB. Ребята помогите пожалуйста разобраться. https://yadi.sk/d/ELDUjp1PaBl8Rg
Пользую библиотеку и генератор кода AXLIB. Ребята помогите пожалуйста разобраться. https://yadi.sk/d/ELDUjp1PaBl8Rg
Re: Не могу прочитать температуру ds18b20
Код для файла main.c. Добавил вывод ROM кода на первой строке, а вывод температуры на второй.
Далее скачай архив прикрепленный к этому посту. В нем лежат два файла 1w.h и ds1820.h. Закинь их в папку axlib в своем проекте. Если используешь axlib генератор, то закинь эти же файлы в папку по адресу C:\Program Files (x86)\Axlib Генератор\axlib. Это нужно чтоб при генерации нового проекта с датчиком, генератор подтягивал уже обновленные файлы.
Будут вопросы, пиши.
Код: Выделить всё
#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);
}
}
Будут вопросы, пиши.
- Вложения
-
- axlib.rar
- (2.32 КБ) 339 скачиваний
Если долго мучиться, может быть получится.
Re: Не могу прочитать температуру ds18b20
Большое спасибо. Все заработало и в протеус и на реальном датчике. Правда с реальным датчиком не сразу. Фьюзы не правильно выставил. помог осциллограф. Еще такой резонный вопрос, как подключить два и более датчика (как последовательно считывать ROM с каждого датчика?)
Re: Не могу прочитать температуру ds18b20
Такую функцию я еще не писал, но в обновленной библиотеке обязательно будет.как последовательно считывать ROM с каждого датчика?
Если долго мучиться, может быть получится.
Re: Не могу прочитать температуру ds18b20
Пожалуйста гляньте для этого проекта функцию resolution. Не меняется дискретность вывода температуры, все время 0.5 градуса
Re: Не могу прочитать температуру ds18b20
Есть такая беда. Чуть позже исправлю.
Если долго мучиться, может быть получится.
Re: Не могу прочитать температуру ds18b20
Будет ли в ближайшее время выпуск новых библиотек и дополнение существующих, написание дополнительных функций в генератор ?
Re: Не могу прочитать температуру ds18b20
Пока не знаю, так как очень мало свободного времени.
Если долго мучиться, может быть получится.