, т. к. разделена на составляющие: конвертирование, а затем считывание температуры, что и хотел автор темы. Раскомментируйте и используйте в целом, если нужно.Amstron писал(а):На самом деле, в файле ds18b20_.lib нет функции ds18b20_temperature! Она закоментированна...
помогите переделать, библиотеку ds18b20 под мои требования.
Re: помогите переделать, библиотеку ds18b20 под мои требован
- Реклама
Re: помогите переделать, библиотеку ds18b20 под мои требован
Убрал я коментарии - появилась такая ошибка : L172: undefained symbol "ds18b20_temperature" . Вместо L184 стало L172....
Вот кусок программы определения температыры:
void Termometr(void)
{
float temp;
temp = ds18b20_temperature(0)*10;//команда для получения значения температуры
indication_IND=temp;
}
В самом начале программы у меня вот это написанно:
#include<mega8.h>
#asm
.equ __w1_port=0x18
.equ __w1_bit=0
#endasm
#include <ds18b20_.h>
#include <delay.h>
Помогите разобраться!
Вот кусок программы определения температыры:
void Termometr(void)
{
float temp;
temp = ds18b20_temperature(0)*10;//команда для получения значения температуры
indication_IND=temp;
}
В самом начале программы у меня вот это написанно:
#include<mega8.h>
#asm
.equ __w1_port=0x18
.equ __w1_bit=0
#endasm
#include <ds18b20_.h>
#include <delay.h>
Помогите разобраться!
Re: помогите переделать, библиотеку ds18b20 под мои требован
Нашол я почему у меня функцию не видел! Надо было еще раскоментировать функцию в файле ds18b20_.h
Касяк остался! Если сделать чтобы программа уходила в прерывание при каждом переполнении 0 таймера (256), то ошибка постоянно висит. Если поставить пределитель на 8 , то ошибка выскакивает 50/50.
Если поставить 64 - пределитель, то всеравно иногда проскакивает, как и раньше!!!
Жду помощи....
Касяк остался! Если сделать чтобы программа уходила в прерывание при каждом переполнении 0 таймера (256), то ошибка постоянно висит. Если поставить пределитель на 8 , то ошибка выскакивает 50/50.
Если поставить 64 - пределитель, то всеравно иногда проскакивает, как и раньше!!!
Жду помощи....
Re: помогите переделать, библиотеку ds18b20 под мои требован
Приложите код.Amstron писал(а):Жду помощи....
Re: помогите переделать, библиотеку ds18b20 под мои требован
Я использую один датчик. Выше я уже выкладывал код.ValBag писал(а):Приложите код.Amstron писал(а):Жду помощи....
- Реклама
Re: помогите переделать, библиотеку ds18b20 под мои требован
Так ошибка та-же? undefained symbol "ds18b20_temperature"?Amstron писал(а):Я использую один датчик. Выше я уже выкладывал код.
Re: помогите переделать, библиотеку ds18b20 под мои требован
Эта ошибка выскакивала при закоментированной строчке этой функции.ValBag писал(а):Так ошибка та-же? undefained symbol "ds18b20_temperature"?Amstron писал(а):Я использую один датчик. Выше я уже выкладывал код.
Сейчас в устройстве иногда выскакивет левое число... В этом то и ошибка....
Re: помогите переделать, библиотеку ds18b20 под мои требован
Ошибки в чтении, похоже. Используете паразитное питание или по трехпроводной линии? Попробуйте вот эту библиотеку (ниже). Результат выдается в intAmstron писал(а):Сейчас в устройстве иногда выскакивет левое число... В этом то и ошибка....
- Вложения
-
- ds18x20_v2.rar
- (1.47 КБ) 254 скачивания
Re: помогите переделать, библиотеку ds18b20 под мои требован
Использую трехпроводную линию. Сейчас попробую...ValBag писал(а):Ошибки в чтении, похоже. Используете паразитное питание или по трехпроводной линии? Попробуйте вот эту библиотеку (ниже). Результат выдается в intAmstron писал(а):Сейчас в устройстве иногда выскакивет левое число... В этом то и ошибка....
Re: помогите переделать, библиотеку ds18b20 под мои требован
Вылазиет ошибка в этих строчках. Ни не могу понять...Amstron писал(а): Использую трехпроводную линию. Сейчас попробую...
if( ds18b20_init( 0, 30, 60, DS18B20_11BIT_RES ) ) //инициализация датчика. Анализ присутствия датчика
{
indication_IND=555; //delay_ms( 1000 );
}
else { indication_IND=222;
};
undefained symbol 'ds18b20_init'
no matching if
Re: помогите переделать, библиотеку ds18b20 под мои требован
Amstron
Вы раскоментировали калибровку? Тогда, вместо DS18B20_11BIT_RES, нужно в вызове поставить нужный параметр разрешающей способности.
Вобще-то в define это есть.
Вы раскоментировали калибровку? Тогда, вместо DS18B20_11BIT_RES, нужно в вызове поставить нужный параметр разрешающей способности.
Вобще-то в define это есть.
Re: помогите переделать, библиотеку ds18b20 под мои требован
Поставил.ValBag писал(а):Amstron
Вы раскоментировали калибровку? Тогда, вместо DS18B20_11BIT_RES, нужно в вызове поставить нужный параметр разрешающей способности.
Вобще-то в define это есть.
if( ds18b20_init(0, 30, 60, 2 ) ) //инициализация датчика. Анализ присутствия датчика
Всеравно видит ошибку... что нет функции ds18b20_init
Re: помогите переделать, библиотеку ds18b20 под мои требован
Если по библиотеке, которую приложил, то уберите в обеих файлах знаки комментариев в этой функции.Amstron писал(а):Все равно видит ошибку... что нет функции ds18b20_init
Re: помогите переделать, библиотеку ds18b20 под мои требован
Убрал. Заработало. Но ошибку всеравно выдает! Правда на выходе другая температура вместо 30 выдает 50 градусов. А вот если вытащить датчик то выдает ошибку. Точно такуюже ошибку выдает если прерывание поставить чаще!!!ValBag писал(а):Если по библиотеке, которую приложил, то уберите в обеих файлах знаки комментариев в этой функции.Amstron писал(а):Все равно видит ошибку... что нет функции ds18b20_init
Жду помощи(((
Re: помогите переделать, библиотеку ds18b20 под мои требован
Есть еще один момент.Amstron писал(а):Убрал. Заработало. Но ошибку всеравно выдает! Правда на выходе другая температура вместо 30 выдает 50 градусов. А вот если вытащить датчик то выдает ошибку. Точно такуюже ошибку выдает если прерывание поставить чаще!!!
Т. к. результат приведен к int, то младшие 4 разряда, отображающие дробную часть, вам надо обрабатывать отдельно.
В остальном, у вас какие-то неувязки с прерыванием. Вы же весь код не хотите привести.
Re: помогите переделать, библиотеку ds18b20 под мои требован
O-LED писал(а):Значит по порядку.
Пишу в CVAVR. Использую термометр DS18B20. библиотеку работы с ней беру стандартную из CVAVR. Алгоритм работы у неё, как вы наверное знаете, следующий -
команда на измерение температуры - пауза(длительность зависит от точности измерения, до 750мкс) - чтение температуры.
Так вот, если просто делать какой термометр, то такой алгоритм вполне подходит. а вот если делать устройство посложней, которое постоянно чтото обрабатывает, и должно откликаться в режиме реального времени, то в момент паузы мы получаем "затык" в работе длинной 750мкс. Это очень сильно портит впечатление от работы устройства.
Что хотелось бы.
Хотелось бы иметь такую библиотеку, чтоб я сам мог дать команду на измерение, например ds18b20_convert(), потом сам, любым удобным мне способом, отсчитал нужную паузу(а в это время моя программа крутится в обычном режиме, без всяких "туплений"), а потом прочитал уже готовый результат например ds18b20_readTemp()
Полазив по инету, подходящей мне библиотеки не нашел. кругом примеры и обучалки на базе встроенной в CVAVR библиотеки.
Помогите найти, или изменить имеющуюся под мои требования. желательно чтоб она поддерживала несколько датчиков, (хотя это наверное не трудно добавить).
Спасибо.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18648
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: помогите переделать, библиотеку ds18b20 под мои требован
очень хреново ищите, ибо на этом самом форуме не один раз были и ссылки. и исходники, и объяснения, как все это сделать. в конце концов можете скачать с моего сайта проект термостата и оттуда извлечь требуемое.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: помогите переделать, библиотеку ds18b20 под мои требован
Если Вы хотя бы немного почитали о работе датчика, а не тыкали всё подряд в свою прогу, то поняли что прерывания просто напросто "портят" временные интерывалы в тайм-слотах. Нужно запрещать прерывание на время тайм-слота (точнее на основную его часть) и обязательно повторный опрос при "корявом" CRC. Об этом не раз уже на форуме говорилось. Библиотека 1-wire пишется очень просто, ничего там сверхестественного нет. Надо просто почитать немного литературу и понять как это всё работает.Точно такуюже ошибку выдает если прерывание поставить чаще!!!


