проблема с программой термометра.
проблема с программой термометра.
В архиве модель в протеусе и проект cvavr не могу разобраться в чём проблема, не выводится температура на дисплей.
- Вложения
-
- tt.rar
- (103.39 КБ) 124 скачивания
- Реклама
- zhu4er
- Вымогатель припоя
- Сообщения: 544
- Зарегистрирован: Пт июн 04, 2010 17:40:13
- Откуда: Непокорный город-герой Севастополь
Re: проблема с программой термометра.
У тебя нету вот этой строчки:
#asm ("sei");
которая должна стоять после вот этого:
SFIOR=0x00;
Потом попробуй выводить посимвольно на дисплей с помощью вот этой процедуры:
lcd_putchar();
Надеюсь у тебя есть книга "Code Vision AVR пособие для начинающих" Лебедев М.Б. Если нет, то возми тут или тут
#asm ("sei");
которая должна стоять после вот этого:
SFIOR=0x00;
Потом попробуй выводить посимвольно на дисплей с помощью вот этой процедуры:
lcd_putchar();
Надеюсь у тебя есть книга "Code Vision AVR пособие для начинающих" Лебедев М.Б. Если нет, то возми тут или тут
Даже у стен есть уши...
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: проблема с программой термометра.
Интересно, а зачем она нужна, можете растолковать ?У тебя нету вот этой строчки:
#asm ("sei");
-
DARKMAVR
- Встал на лапы
- Сообщения: 81
- Зарегистрирован: Пт июл 09, 2010 17:44:34
- Откуда: Татарстан, г. Казань
Re: проблема с программой термометра.
#asm("sei") // Разрешить ГЛОБАЛЬНО все прерывания
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: проблема с программой термометра.
#asm("sei") // Разрешить ГЛОБАЛЬНО все прерывания

.. самое "забавное" то, что стандартная библиотека cvavr работает с DS18b20 именно при выключенных #asm("cli") прерыванияхstenkodv писал(а):В архиве модель в протеусе и проект cvavr не могу разобраться в чём проблема, не выводится температура на дисплей.
- Реклама
Re: проблема с программой термометра.
Да по моему не причём тут #asm ("sei"); я вместо while(devices>0) поставил просто while(1) в результате на lcd появилось -9999.65527, куда теперь копать?
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: проблема с программой термометра.
... перевести это -9999.65527 в температурув результате на lcd появилось -9999.65527, куда теперь копать?
- Danko
- Сверлит текстолит когтями
- Сообщения: 1287
- Зарегистрирован: Пн окт 13, 2008 11:45:54
- Откуда: РФ, Крым, г.Бахчисарай
- Контактная информация:
Re: проблема с программой термометра.
Код: Выделить всё
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. Рассказ нечаянного революционера"
---------------------
Линус Торвальдс. "Just for fun. Рассказ нечаянного революционера"
Re: проблема с программой термометра.
Спасибо, если честно я не думал что в протеусе это важно. раньше ни когда не ставил и всё работало.Danko писал(а): Да еще у Вас в Протеусе фузы на какую частоту выставлены?
Re: проблема с программой термометра.
Да не обидится на меня топик стартер, за то, что задам вопрос здесь.
За основу проекта взял проект Danko "Термометр меньше не бывает". Бывает, на Tiny24 и 2ух разрядном семисегментнике
Собрал прошивку, но где-то косяк с индикацией - температуры от -19 до -12 не корректно отображаются - исчезает сегмент g во втором разряде
Подскажите куда копать, пожалуйста.
Забыл написать... На железе пока не порверял
- только в Протеусе - учусь еще программы пересобирать/писать/редактировать 
За основу проекта взял проект Danko "Термометр меньше не бывает". Бывает, на Tiny24 и 2ух разрядном семисегментнике
Собрал прошивку, но где-то косяк с индикацией - температуры от -19 до -12 не корректно отображаются - исчезает сегмент g во втором разряде
Подскажите куда копать, пожалуйста.
Забыл написать... На железе пока не порверял
- Вложения
-
- 19.png
- (143.59 КБ) 367 скачиваний
-
- -14.png
- (142.61 КБ) 372 скачивания
-
- Attiny24 Therm.rar
- (96.42 КБ) 139 скачиваний
Re: проблема с программой термометра.
Нашел косяк!
Не учел, что в данном МК PORTB.3 - это альтернативная функция RESET'a, активируемая программированием фьюза RSTDISBL. Правда, это делает невозможным дальнейшее программирование МК через простейший прогамматор на LPT-порт
Не учел, что в данном МК PORTB.3 - это альтернативная функция RESET'a, активируемая программированием фьюза RSTDISBL. Правда, это делает невозможным дальнейшее программирование МК через простейший прогамматор на LPT-порт


