Atmega1284p и датчик ds18b20 нет показаний температуры
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Atmega1284p и датчик ds18b20 нет показаний температуры
Доброго времени суток!
Бьюсь над проблемой уже 3-й день.
CVAVR.
Не работает датчик как надо. Что есть он, что нет его результат тот же.
Библиотеки подключены.
Очень прошу помочь. Кончились варианты.
Заранее спасибо!
Бьюсь над проблемой уже 3-й день.
CVAVR.
Не работает датчик как надо. Что есть он, что нет его результат тот же.
Библиотеки подключены.
Очень прошу помочь. Кончились варианты.
Заранее спасибо!
- Вложения
-
- new term.rar
- (617.4 КБ) 139 скачиваний
- Реклама
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Почему не используете стандартные либы кодвижна для датчиков?
А так - проверяйте инициализации, чтобы все временные промежутки выдерживались как надо.
А так - проверяйте инициализации, чтобы все временные промежутки выдерживались как надо.
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Этот проект сделан на основе другого. Потому и библиотеки не родные.
Библиотеки заменены, функции переписаны, датчик так и не работает.
Что посоветуете?
Библиотеки заменены, функции переписаны, датчик так и не работает.
Что посоветуете?
- Вложения
-
- EventSystemCV-term.rar
- (514.82 КБ) 130 скачиваний
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Посоветую отлаживать - проверьте вообще вызывается ли инициализация, проходит ли оно ее...
Да и еще - ножка данных датчика подтянута 4.7к к "+" питания?
Да и еще - ножка данных датчика подтянута 4.7к к "+" питания?
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Я так понимаю, функция инициализации из библиотки ds18b20 - ds18b20_init.
Так вот, эта функция должна выдавать 1 в случае присутствия датчика.
Если всё верно, то датчик не видится. Инициализация не проходит.
Вот часть кода:
естественно в начале:
Где ошибка?
Датчик впрочем подключен верно. Подтяжка в 4,7 кОм на месте.
Так вот, эта функция должна выдавать 1 в случае присутствия датчика.
Если всё верно, то датчик не видится. Инициализация не проходит.
Вот часть кода:
Код: Выделить всё
#asm("cli");
if( ds18b20_init( 0, 10, 29, DS18B20_12BIT_RES ) )
{delay_ms( 500 );
temperature=ds18b20_temperature( 0 ); //Чтение температуры, адрес нуль
// delay_ms( 30 );
//Анализ на отрицательную температуру
LCD_Goto(7,0); tp=temperature;
if ( tp<1000 ){
LCD_WriteData('+');
}
else{
LCD_WriteData('-');
tp = 4096-tp;
}
}
else {temperature=0;}
//считываем результат
LCD_Goto(8,0);
BCD_3Lcd(temperature);
#asm("sei");естественно в начале:
Код: Выделить всё
#include <ds18b20.h>
// 1 Wire Bus functions
#asm
.equ __w1_port=0x0B ;PORTD
.equ __w1_bit=7
#endasmДатчик впрочем подключен верно. Подтяжка в 4,7 кОм на месте.
- Реклама
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
w1_init() делаете перед этим всем?
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Однократно или при каждом преобразовании?
После того, как вначале процедуры была добавлена w1_init датчик по крайней мере стал опрашиваться (визуально в протеусе), но результат так и не отображается.
Может слишком часто происходит прерывание (250 мс) по которому происходит преобразование?
Вот код:
После того, как вначале процедуры была добавлена w1_init датчик по крайней мере стал опрашиваться (визуально в протеусе), но результат так и не отображается.
Может слишком часто происходит прерывание (250 мс) по которому происходит преобразование?
Вот код:
Код: Выделить всё
void TIM_Init(void)
{
TIMSK0 = (1<<OCIE0A); //разрешаем прерывание таймера т0 при событии совпадение
TCCR0A = (1<<WGM01)|(0<<WGM00);
TCCR0B = (1<<CS02)|(0<<CS01)|(1<<CS00); //режим СТС, прескалер - 1024
TCNT0 = 0; //обнуляем счетный регистр
OCR0A = 0x4D; //прерывания каждые ~ 10 мс
TIMSK1 |= (1<<OCIE1A); //разрешаем прерывание таймера т1 при событии совпадение
TCCR1A = (0<<WGM11)|(0<<WGM10);
TCCR1B = (0<<WGM13)|(1<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10); //режим работы СТС, прескалер - 1024
TCNT1H = 0; TCNT1L = 0;
OCR1AH = 0x07;
OCR1AL = 0xA0;
#asm("sei"); //250 мс
}
interrupt [TIM1_COMPA] void Timer1_compa(void)
{
ES_PlaceEvent(EVENT_TIMER);
TCNT1H = 0; TCNT1L = 0;}- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Однократно.
Конечно часто, преобразование длится примерно 750 мс!
Конечно часто, преобразование длится примерно 750 мс!
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Однократно в начале main так и было в начале.
Теперь прерывание раз в 1 минуту.
Результат тот же. Программа не инициализирует датчик. Показывает 0.
Что делать?
Теперь прерывание раз в 1 минуту.
Результат тот же. Программа не инициализирует датчик. Показывает 0.
Что делать?
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Дайте проект в протеусе тогда уж, посмотрим вечером.
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Возможно я слишком бегло просмотрел код, но... когда вы работаете с термодатчиком то после некоторых действий вы выводите на дисплей, далее снова работаете с термодатчиком. Дисплей требует довольно приличных времён для вывода информации в результате чего программа работы с термодатчиком ждёт дисплей. Попробуйте читать в буфер, а выводить уже по готовности всех обращений к термодатчику.
Боишся - не делай. Делаешь - не бойся.
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
john_rise - попробую переделать.
Проект прилагаю.
Проект прилагаю.
- Вложения
-
- new term.rar
- (114.58 КБ) 144 скачивания
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Датчик просто не определяется. Не проходит инициализацию. Думаю дело здесь не в дисплее.
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
А проблема оказалась в совершенно тупом фузе 
CKDIV8 надо установить в "1" (незапрограммирован)
Ибо сейчас он работает на 1 мгц, соответственно все временные задержки отрабатыватся неправильно, потому и не видит датчик, ибо проект собран под 8 мгц!
CKDIV8 надо установить в "1" (незапрограммирован)
Ибо сейчас он работает на 1 мгц, соответственно все временные задержки отрабатыватся неправильно, потому и не видит датчик, ибо проект собран под 8 мгц!
-
KamomeDono
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Вс май 29, 2011 09:52:59
- Откуда: Ангарск
- Контактная информация:
Re: Atmega1284p и датчик ds18b20 нет показаний температуры
Вот блин... Видать потому, что я не в теме.
Огромное спасибо! Не подскажите ещё как его запрограммировать?
Огромное спасибо! Не подскажите ещё как его запрограммировать?


