| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
Термодатчик LM75AD + ATmega16
23.11.2010, 00:32
|
|
|
Прохожий
Регистрация: 16.05.2010
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Термодатчик LM75AD + ATmega16
Доброго времени всем. Помогите пожалуйста решить проблему. Вобщем так:
void Term(void){
temp= lm75_temperature_10(0);
{sign='+';
temp=-temp;
};
sprintf(lcd_buffer,''%c%i.%u\xe9C'', sign,temp/10, temp%10);
}
писал в CVAVR через стандартную библиотеку. Но беда в том, что вместо 23 градусов показывает 3. Получается что по какой то причине температура отстает на 20 градусов. Это глюк датчика,
или связано с частотой на которой работает микроконтролер (8МГц)?
|
|
|
|
23.11.2010, 07:11
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
|
Re: Термодатчик LM75AD + ATmega16
При других температурах как?
Прибавьте 20 и все...
|
|
|
|
23.11.2010, 09:06
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Термодатчик LM75AD + ATmega16
|
Цитата:
|
|
Прибавьте 20 и все...
|
Это не поможет, так как программа не выводит десятки, а ошибка связана с неправильным форматированием вывода.
вот, примерно так:
sprintf(lcd_buffer,''%-i.%-u%сC'',temp/10, abs(temp%10), 0xe9);
и знак выделять специально не надо, тем более что он у Вас непонятно как выделяется.
Последний раз редактировалось nonamedov; 24.11.2010 в 06:53.
|
|
|
|
29.11.2010, 14:25
|
|
|
Прохожий
Регистрация: 16.05.2010
Сообщений: 2
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Термодатчик LM75AD + ATmega16
Сообщение от nonamedov
|
Это не поможет, так как программа не выводит десятки, а ошибка связана с неправильным форматированием вывода.
вот, примерно так:
sprintf(lcd_buffer,''%-i.%-u%сC'',temp/10, abs(temp%10), 0xe9);
и знак выделять специально не надо, тем более что он у Вас непонятно как выделяется.
|
Да нет, вывод десятков все правильно. А причину решил по другому. К ногам питания припаял кондер на 100мкФ. Наверное микроконтролер создает дополнительные пульсации, так как на плате по питанию стоит кондер на 47мкФ, а в блоке питания 2200мкФ.
|
|
|
|
01.12.2010, 03:56
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 06.06.2008
Сообщений: 1,519
Сказал спасибо: 76
Сказали Спасибо 427 раз(а) в 365 сообщении(ях)
|
Re: Термодатчик LM75AD + ATmega16
|
Цитата:
|
{sign='+';
temp=-temp;
};
|
А как тут собственно выделяется знак??? И каким образом в этом случае temp получается существенно положительным?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 04:14.
|
|