Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 07.06.2007, 02:45  
butman
Частый гость
 
Регистрация: 08.07.2006
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
butman на пути к лучшему
По умолчанию ATmega8 и DS18B20, не определяется датчик

День Добрый!
Написал прогу для вывода температуры на lcd.
Мега работает на 1мгц.
Пишу в CV_AVR.
Датчик подрублен к PC5 с подтяжкой на 4.7к, внутренняя подтяжка в меге выключена.

Вот код:
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.25.2 Beta1 Standard
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project :
Version :
Date : 06.06.2007
Author : Pavel
Company : Home
Comments:


Chip type : ATmega8
Program type : Application
Clock frequency : 1,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/

#include ‹mega8.h›
#include ‹delay.h›
// 1 Wire Bus functions
#asm
.equ __w1_port=0x15 ;PORTC
.equ __w1_bit=5
#endasm
#include ‹1wire.h›

// DS1820 Temperature Sensor functions
#include ‹ds18b20.h›
/* include the printf function prototype */

#include ‹stdio.h›
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include ‹lcd.h›
/* maximum number of DS18B20 connected to the bus */

#define MAX_DEVICES 8

/* DS18B20 devices ROM code storage area,

9 bytes are used for each device

(see the w1_search function description),

but only the first 8 bytes contain the ROM code

and CRC */

unsigned char rom_codes[MAX_DEVICES][9];
char lcd_buffer[33];
/* allocate space for ROM codes of the devices

which generate an alarm */

unsigned char alarm_rom_codes[MAX_DEVICES][9];

// Declare your global variables here
char buffer2[15];
void main(void)
{
// Declare your local variables here
unsigned char i,j,devices;
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
lcd_init(16);
#asm("cli");
w1_init();
// 1 Wire Bus initialization
/*if (w1_init() == 0)
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("1-Wire devices not found");
//printf("1-Wire devices not found
");
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("1-Wire devices found");
}*/
#asm("sei");
// LCD module initialization

//lcd_gotoxy(0,0);
// lcd_putsf("test1");
//delay_ms(1000);

/* detect how many DS18B20 devices

are connected to the bus and

store their ROM codes in the rom_codes array */

#asm("cli");
devices=w1_search(0xf0,rom_codes);
#asm("sei");
lcd_clear();
sprintf(lcd_buffer,"%u DS18B20
Device detected",devices);
lcd_puts(lcd_buffer);
delay_ms(2000);
if (devices)
{
for (i=0;i‹devices;i++)
{
sprintf(lcd_buffer,"Device #%u ROM
Code is:",i+1);
lcd_clear();
lcd_puts(lcd_buffer);
delay_ms(2000);
lcd_clear();
for (j=0;j‹8;j++)
{
sprintf(lcd_buffer,"%02X ",rom_codes[i][j]);
lcd_puts(lcd_buffer);
if (j==3) lcd_gotoxy(0,1);
};
delay_ms(5000);
};
}
else
while (1); /* stop here if no devices were found */
/*delay_ms(2000);
if(devices==1)
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("d18b20");
}
else
{ lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("no_way");
}
*/
/* set the temperature alarms & temperature

measurement resolutions for all the devices

temp_low=25°C temp_high=35°C resolution 12bits */

/*for (i=0;i‹devices;i++)

{
sprintf(buffer2,"ID #%-u" ,i+1);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buffer2);
delay_ms(3000);
// printf("INITIALIZING DEVICE #%-u ",i+1);

if (ds18b20_init(&rom_codes[i][0],25,35,DS18B20_12BIT_RES))
{
lcd_clear();
lcd_gotoxy(0,0);
putsf("OK");delay_ms(3000);
}
else
{
lcd_clear();
lcd_gotoxy(0,0);
putsf("ERROR");delay_ms(3000);
}

}; */


while (1)
{

};
}

Датчик не видно..(((
Реклама:
butman вне форума  
Непрочитано 07.06.2007, 08:55  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Выложи проект в протеусе и кодевижине, так трудно что то сказать...
dimonbest вне форума  
Непрочитано 07.06.2007, 09:55  
sliam
Частый гость
 
Регистрация: 26.03.2007
Сообщений: 28
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
sliam на пути к лучшему
По умолчанию Re: ATmega8 и DS18B20, не определяется датчик

Сообщение от butman
День Добрый!
Написал прогу для вывода температуры на lcd.
Мега работает на 1мгц.
Пишу в CV_AVR.
Датчик подрублен к PC5 с подтяжкой на 4.7к, внутренняя подтяжка в меге выключена.



Датчик не видно..(((
Твой код рабочий, хотя несколько отличется от моего.
Вставил его в свой проект в Протеусе (перекинул датчик температуры, он у меня на другом порту висит), все работает, датчик виден.
sliam вне форума  
Непрочитано 07.06.2007, 10:53  
butman
Частый гость
 
Регистрация: 08.07.2006
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
butman на пути к лучшему
По умолчанию

и у меня в протеусе пашет.
может частоты 1 мгц не хватает?
butman вне форума  
Непрочитано 07.06.2007, 11:00  
urry
Почётный гражданин KAZUS.RU
 
Аватар для urry
 
Регистрация: 06.02.2007
Сообщений: 1,340
Сказал спасибо: 3
Сказали Спасибо 106 раз(а) в 66 сообщении(ях)
urry на пути к лучшему
По умолчанию

при инициализации смотри импульс резет пульсе от МК к градуснику (по даташиту), затем через какое-то время (опять посылаю в даташит, сам не вспомню)идет с мк на градусник строб, который расширяется градусником - называется презент пульсе. Видимо, его программа не видит и считает, что ответа нет. Зацикли это стробирование и посмотри осциллографом - если отключить градусник и картинка не поменяется - значит не ответа.
Раз в протеусе работает, скорее всего, проблема в частоте МК - неправильная пауза между резетпульсе и презентпульсе или что-то такое.
urry вне форума  
Непрочитано 07.06.2007, 15:26  
mikeras
Частый гость
 
Регистрация: 12.12.2005
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
mikeras на пути к лучшему
По умолчанию

Попробуй увелить временные задержки в функциях работы с DS18B20. Мне помогло. Правда, пришлось писать их самому ( в основном из-за delay() ).

Проще скопировать ds18b20.h в папку проекта, отредактировать его.

Только замени
#include ‹ds18b20.h›
на
#include "ds18b20.h›
mikeras вне форума  
Непрочитано 07.06.2007, 16:24  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

#include "ds18b20.h"
CERGEI1982 вне форума  
Непрочитано 08.06.2007, 08:39  
mikeras
Частый гость
 
Регистрация: 12.12.2005
Сообщений: 13
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
mikeras на пути к лучшему
По умолчанию

Согласен
#include "ds18b20.h"

Извиняюсь, рука дрогнула
mikeras вне форума  
Непрочитано 08.06.2007, 19:58  
butman
Частый гость
 
Регистрация: 08.07.2006
Сообщений: 17
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
butman на пути к лучшему
По умолчанию

купил мегу48. частоту выставил на 8МГц от внутреннего генератора.
Исходник по ссылке:
http://ungood.narod.ru/files/lcd_48.c
МК всё равно не видит датчик.....
butman вне форума  
Непрочитано 08.06.2007, 20:16  
renatavr
Временная регистрация
 
Регистрация: 12.10.2006
Сообщений: 53
Сказал спасибо: 1
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
renatavr на пути к лучшему
По умолчанию

Поставь 4Мгц.
Всё пойдёт.
__________________
Б.га нет, есть только двоичный код.
renatavr вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DS18B20 Vrungel Микроконтроллеры, АЦП, память и т.д 77 30.06.2011 09:52
Термометр на ds18b20 Peshevbis Микроконтроллеры, АЦП, память и т.д 83 31.12.2010 20:22
ATmega8 + DS18B20: включаешь - не работает ilyasivkov Микроконтроллеры, АЦП, память и т.д 11 05.06.2009 12:27
Датчик DS18B20 спонтанно греется, глюк или брак? lukrom Автоматика и аппаратура связи 2 23.03.2008 16:58
о датчиках ds18b20 Peshevbis Микроконтроллеры, АЦП, память и т.д 3 17.10.2006 17:17


Часовой пояс GMT +4, время: 03:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot