Да по моему не причём тут #asm ("sei"); я вместо while(devices>0) поставил просто while(1) в результате на lcd появилось -9999.65527, куда теперь копать?
Заголовок сообщения: Re: проблема с программой термометра.
Добавлено: Вс фев 20, 2011 19:00:07
Сверлит текстолит когтями
Карма: 13
Рейтинг сообщений: 41
Зарегистрирован: Пн окт 13, 2008 11:45:54 Сообщений: 1287 Откуда: РФ, Крым, г.Бахчисарай
Рейтинг сообщения:0
Код:
w1_init();
// Determine the number of DS1820 devices // connected to the 1 Wire bus ds1820_devices=w1_search(0xf0,ds1820_rom_codes);
// LCD module initialization lcd_init(16);
while(ds1820_devices>0) //бесконечный цикл, если датчик подключон { temp=ds18b20_temperature(0); //читаем температуру if (temp>1000){ //если датчик выдаёт больше 1000 temp=4096-temp; //отнимаем от данных 4096 temp=-temp; //и ставим знак "минус" } sprintf(lcd_buf,"t=%i.%u\xdfC",temp,temp%10); //записуемв масив для экрана температуру и всё такое lcd_clear(); //чистим дисплей перед выводом lcd_puts(lcd_buf); //выводим масив на LCD delay_ms(500); //ждём 500мс }; }
Все работает. Врет правда как сивый мерен.
Да еще у Вас в Протеусе фузы на какую частоту выставлены?
P.S. Вопрос: почему мне жутко не нравится эта строка? temp=ds18b20_temperature(0); //читаем температуру
_________________ Первое, что привлекает в программировании, объяснить просто: ты говоришь компьютеру что то сделать, и он это делает. Безошибочно. Всегда. Без возражений. ---------- Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Да не обидится на меня топик стартер, за то, что задам вопрос здесь. За основу проекта взял проект Danko "Термометр меньше не бывает". Бывает, на Tiny24 и 2ух разрядном семисегментнике Собрал прошивку, но где-то косяк с индикацией - температуры от -19 до -12 не корректно отображаются - исчезает сегмент g во втором разряде Подскажите куда копать, пожалуйста.
Забыл написать... На железе пока не порверял - только в Протеусе - учусь еще программы пересобирать/писать/редактировать
Нашел косяк! Не учел, что в данном МК PORTB.3 - это альтернативная функция RESET'a, активируемая программированием фьюза RSTDISBL. Правда, это делает невозможным дальнейшее программирование МК через простейший прогамматор на LPT-порт
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения