проблема с программой термометра.

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
stenkodv
Открыл глаза
Сообщения: 41
Зарегистрирован: Сб фев 13, 2010 10:31:39

проблема с программой термометра.

Сообщение stenkodv »

В архиве модель в протеусе и проект cvavr не могу разобраться в чём проблема, не выводится температура на дисплей.
Вложения
tt.rar
(103.39 КБ) 124 скачивания
Реклама
Аватара пользователя
zhu4er
Вымогатель припоя
Сообщения: 544
Зарегистрирован: Пт июн 04, 2010 17:40:13
Откуда: Непокорный город-герой Севастополь

Re: проблема с программой термометра.

Сообщение zhu4er »

У тебя нету вот этой строчки:
#asm ("sei");
которая должна стоять после вот этого:
SFIOR=0x00;

Потом попробуй выводить посимвольно на дисплей с помощью вот этой процедуры:
lcd_putchar();

Надеюсь у тебя есть книга "Code Vision AVR пособие для начинающих" Лебедев М.Б. Если нет, то возми тут или тут
Даже у стен есть уши...
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: проблема с программой термометра.

Сообщение Аlex »

У тебя нету вот этой строчки:
#asm ("sei");
Интересно, а зачем она нужна, можете растолковать ?
DARKMAVR
Встал на лапы
Сообщения: 81
Зарегистрирован: Пт июл 09, 2010 17:44:34
Откуда: Татарстан, г. Казань

Re: проблема с программой термометра.

Сообщение DARKMAVR »

#asm("sei") // Разрешить ГЛОБАЛЬНО все прерывания
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: проблема с программой термометра.

Сообщение ChipKiller »

#asm("sei") // Разрешить ГЛОБАЛЬНО все прерывания
stenkodv писал(а):В архиве модель в протеусе и проект cvavr не могу разобраться в чём проблема, не выводится температура на дисплей.
.. самое "забавное" то, что стандартная библиотека cvavr работает с DS18b20 именно при выключенных #asm("cli") прерываниях :)))
Реклама
stenkodv
Открыл глаза
Сообщения: 41
Зарегистрирован: Сб фев 13, 2010 10:31:39

Re: проблема с программой термометра.

Сообщение stenkodv »

Да по моему не причём тут #asm ("sei"); я вместо while(devices>0) поставил просто while(1) в результате на lcd появилось -9999.65527, куда теперь копать?
Реклама
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

Re: проблема с программой термометра.

Сообщение ChipKiller »

в результате на lcd появилось -9999.65527, куда теперь копать?
... перевести это -9999.65527 в температуру :)
Аватара пользователя
Danko
Сверлит текстолит когтями
Сообщения: 1287
Зарегистрирован: Пн окт 13, 2008 11:45:54
Откуда: РФ, Крым, г.Бахчисарай
Контактная информация:

Re: проблема с программой термометра.

Сообщение Danko »

Код: Выделить всё

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. Рассказ нечаянного революционера"
stenkodv
Открыл глаза
Сообщения: 41
Зарегистрирован: Сб фев 13, 2010 10:31:39

Re: проблема с программой термометра.

Сообщение stenkodv »

Danko писал(а): Да еще у Вас в Протеусе фузы на какую частоту выставлены?
Спасибо, если честно я не думал что в протеусе это важно. раньше ни когда не ставил и всё работало.
vetalbox
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Чт фев 03, 2011 16:13:09

Re: проблема с программой термометра.

Сообщение vetalbox »

Да не обидится на меня топик стартер, за то, что задам вопрос здесь.
За основу проекта взял проект Danko "Термометр меньше не бывает". Бывает, на Tiny24 и 2ух разрядном семисегментнике :))
Собрал прошивку, но где-то косяк с индикацией - температуры от -19 до -12 не корректно отображаются - исчезает сегмент g во втором разряде :(
Подскажите куда копать, пожалуйста.

Забыл написать... На железе пока не порверял :oops: - только в Протеусе - учусь еще программы пересобирать/писать/редактировать :oops:
Вложения
19.png
(143.59 КБ) 367 скачиваний
-14.png
(142.61 КБ) 372 скачивания
Attiny24 Therm.rar
(96.42 КБ) 139 скачиваний
vetalbox
Первый раз сказал Мяу!
Сообщения: 34
Зарегистрирован: Чт фев 03, 2011 16:13:09

Re: проблема с программой термометра.

Сообщение vetalbox »

Нашел косяк! :))
Не учел, что в данном МК PORTB.3 - это альтернативная функция RESET'a, активируемая программированием фьюза RSTDISBL. Правда, это делает невозможным дальнейшее программирование МК через простейший прогамматор на LPT-порт :(
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»