Суббота, 27.04.2024, 06:01
Микроконтроллерная техника AVR
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Микроконтроллеры » Вопросы по МК » не работает ds18b20_temperature
не работает ds18b20_temperature
AlexPatoДата: Четверг, 23.12.2010, 16:13 | Сообщение # 1
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
Я новичок и возникла такая проблема. Пытаюсь считать с DS18B20 температуру и вывести ее на ЖКИ. Но после функции чтения температуры ничего не происходит. Скачал вашу прошивку - все нормально работает. Делал вот по этой статье: http://my-avr.at.ua/publ/1-1-0-10 Подскажите, пожалуйста, что не так, а то я уже дня три сижу, не могу понять.

Добавлено (23.12.2010, 16:13)
---------------------------------------------
PS Не работает в Proteus
PPS Извиняюсь, что не в том разделе создал тему.

 
HiSERДата: Четверг, 23.12.2010, 18:19 | Сообщение # 2
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
А как можно сказать что ты делаешь не так, если ты не предоставил свой код?
 
AlexPatoДата: Четверг, 23.12.2010, 20:06 | Сообщение # 3
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
Да он, собственно, такой же, как и в той статье
Code

#include <mega8.h>
#include <lcd.h>
#include <delay.h>
#include <stdio.h>        
#include <1wire.h>  
#include <ds18b20.h>     

#asm
.equ __w1_port=0x15  ;PORTC
.equ __w1_bit=3
#endasm
#asm
.equ __lcd_port=0x18   ;PORTB
#endasm                    
char lcd_buffer[33];  

void main(void)
{               
         unsigned char devices;
         int temp;
            
         PORTB=0x00;     //Порт В
         DDRB=0xFF;      //Все порты - на выход
          
         lcd_init(16);
         lcd_putsf("Start");
         delay_ms(500);
         devices=w1_init();      
         if(devices>0)
         {                  
                 lcd_clear();
                 lcd_putsf("DS17B20 detected");
         }
         while(devices>0)
         {
                   
                 temp=ds18b20_temperature(0);         
                 //Вот тут должен быть вывод температуры
                 //Я поставил проверку, зависает
                 //после этой функции
                 if(temp>0)
                 {
                         lcd_putsf("1");
                 }
                 else if(temp<0)
                 {
                         lcd_putsf("0");
                 }               
                /** if(temp>1000)
                 {
                         temp=4096-temp;
                         temp=-temp;
                 }    
                 sprintf(lcd_buffer,"T=%i.%u\xdfC",temp,temp%1);  
                 lcd_clear();
                 lcd_puts(lcd_buffer);     
                 delay_ms(500);**/
         }
          
}

Вот если закомментирован последний блок с выводом температуры - все хорошо, проверку проходит, вывод 1 при температуре больше нуля и 0 при T<0. Но если убрать комментарии из вывод теспературы на экран - все виснет на надписи "DS18B20 detected"

Добавлено (23.12.2010, 20:06)
---------------------------------------------
виснет после формирования строки для вывода на ЖКИ - sprintf sad

 
HiSERДата: Четверг, 23.12.2010, 21:09 | Сообщение # 4
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Взял твой код, раскомментировал строчку и все работает.
Скидывай полностью свой проект.
 
AlexPatoДата: Четверг, 23.12.2010, 23:05 | Сообщение # 5
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
Вот залил на хостинг: Доступно только для пользователей
 
HiSERДата: Пятница, 24.12.2010, 04:51 | Сообщение # 6
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
все работает:

Ты на железе проверял?

Прикрепления: 3626048.png (26.7 Kb)
 
AlexPatoДата: Пятница, 24.12.2010, 08:50 | Сообщение # 7
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
Вот же чудеса какие... wacko
нет, это мне задание в универе на курсовой дали, и на железе проверять не нужно, просто промоделировать.
HiSER, а какая у тебя версия Proteus'a? Может из-за этого.
 
HiSERДата: Пятница, 24.12.2010, 14:11 | Сообщение # 8
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
7.6 SP4
 
AlexPatoДата: Пятница, 24.12.2010, 15:55 | Сообщение # 9
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
у меня 7 SP2...а компилятор - Codevision AVR 1.25.8 Standard. Может все дело в нем?
 
HiSERДата: Пятница, 24.12.2010, 18:20 | Сообщение # 10
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Дело в протеус.
 
AlexPatoДата: Пятница, 24.12.2010, 18:31 | Сообщение # 11
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
но скачанная прошивка работает же, а она точно такая
 
HiSERДата: Пятница, 24.12.2010, 21:27 | Сообщение # 12
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
У меня и твоя прошивка работает.

Добавлено (24.12.2010, 21:27)
---------------------------------------------
Попробуй в CVAVR убрать галочку Enhanced Core Instructions, бывает из-за этого еще.

 
AlexPatoДата: Пятница, 24.12.2010, 22:27 | Сообщение # 13
Рядовой
Группа: Пользователи
Сообщений: 7
Репутация: 0
Статус: Offline
скачал Proteus SP4, все хорошо работает, спасибо, HiSER, большое за помощь smile
 
sashkaДата: Среда, 27.04.2011, 13:34 | Сообщение # 14
Рядовой
Группа: Пользователи
Сообщений: 4
Репутация: 0
Статус: Offline
Здравствуйте)) У меня очень волнующий вопрос...работаю с ds18b20, если его сильно прижать , его работа изменится под воздействием прижатия? если да, то как? Какое должно быть усилие? за ранее спасибо.
 
HiSERДата: Среда, 27.04.2011, 19:37 | Сообщение # 15
Продвинутый автор!
Группа: Проверенные
Сообщений: 254
Репутация: 11
Статус: Offline
Quote (sashka)
Здравствуйте)) У меня очень волнующий вопрос...работаю с ds18b20, если его сильно прижать , его работа изменится под воздействием прижатия? если да, то как? Какое должно быть усилие? за ранее спасибо.

Что?
 
Форум » Микроконтроллеры » Вопросы по МК » не работает ds18b20_temperature
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Хостинг от uCoz