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

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

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

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

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

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

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

 
Опции темы
Непрочитано 22.02.2010, 06:00  
svv11
Временная регистрация
 
Регистрация: 20.11.2005
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
svv11 на пути к лучшему
По умолчанию Что делаю не так с DS12B20

Датчик температуры после сброса выставляет импульс присутствия, и больше ничего не хочет делать. Вот кусок кода:
Код:
#define TD_0 output_low(PIN_B4)     //
#define TD_1 output_high(PIN_B4)    //
#define TD_IN output_float(pin_B4)	// делает пин входом

void DS(char word)
 {   
   char i;
   for(i=0; i ‹ 8; i++)
   {
    TD_0;
    delay_us( 15 );
    if (word & 1) TD_IN;
    delay_us( 55 );
    TD_IN;
    delay_us( 15 );
    word = word ›› 1;
   }
 }

void main(void)
 { 
   InitReg(); 

    // Обмен с термодатчиком
    TD_0;
    delay_us( 490 ); //импульс RESET
    TD_IN;
    delay_us( 490 ); //для импульса PRESENCE
    DS(0xCC); //Команда Пропуск ROM
  //delay_us( 200 );
    DS(0xBE); //Команда Чтение памяти 
    TD_IN;
    delay_ms( 900 );
  }
Подскажите что делаю не так? На осциллографе смотрел: команды CC и BE формируется вроде как надо.
Реклама:
svv11 вне форума  
Непрочитано 22.02.2010, 10:18  
oleg110592
Гражданин KAZUS.RU
 
Регистрация: 05.04.2009
Сообщений: 976
Сказал спасибо: 35
Сказали Спасибо 155 раз(а) в 134 сообщении(ях)
oleg110592 на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20

а где команда начала измерения температуры - типа DS(0x44)?

#define SKIP_ROM 0xCC //Пропустить процедуру сравнив. сер. номера. //;
#define CONVERT_TEMP 0x44 //Команда к началу измерения температуры.
#define WRITE_SCRATCHPAD 0x4E //Записать пользовательские данные в регистры TEMP_TL, TEMP_TH и находящиеся в ПЗУ.
#define READ_SCRATCHPAD 0xBE //Прочесть содержимое ОЗУ (9 байт).
#define COPY_SCRATCHPAD 0x48 //Сохранение текущих значений регистров TEMP_TL\TH в ПЗУ.

OneWire_Init();
OneWire_WriteByte(SKIP_ROM);
OneWire_WriteByte(CONVERT_TEMP);
тут delay или лучше по таймеру
OneWire_WriteByte(SKIP_ROM);
OneWire_WriteByte(READ_SCRATCHPAD);
ds18b20[0]=OneWire_ReadByte();
ds18b20[1]=OneWire_ReadByte();
oleg110592 вне форума  
Непрочитано 23.02.2010, 11:51  
picavr
Почётный гражданин KAZUS.RU
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
picavr на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20

Сообщение от svv11 Посмотреть сообщение
На осциллографе смотрел: команды CC и BE формируется вроде как надо.
И не отвечает на 0xBE?
picavr вне форума  
Непрочитано 25.02.2010, 13:38  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20

Используй готовую библиотеку в CodeVision. Там есть все функции для работы с датчиком.
__________________
www.samodelkin.kiev.ua - для тех, кто хочет научиться!
alex28411 вне форума  
Непрочитано 25.02.2010, 13:42  
alex28411
Прописка
 
Аватар для alex28411
 
Регистрация: 14.01.2008
Сообщений: 121
Сказал спасибо: 1
Сказали Спасибо 19 раз(а) в 18 сообщении(ях)
alex28411 на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20

Или я делал так:
#include "Mega16.h"
#asm
.equ __w1_port=0x15 ; PORTC
.equ __w1_bit=0
#endasm
#include "1Wire.h"
#define ConvertT 0x44
#define ReadScratchpad 0xBE
#define WriteScratchpad 0x4E
#define SkipROM 0xCC

//Инициализация термометра

void init_term()
{
w1_init();
w1_write(SkipROM);
w1_write(WriteScratchpad);
w1_write(0x00);
w1_write(0x00);
w1_write(0b01111111);
w1_init();
}

//Чтение температуры

unsigned int read_temp()
{
unsigned char temp[2];
unsigned char n;
unsigned int result;

result = 0;

w1_init();
w1_write(SkipROM);
w1_write(ReadScratchpad);
for (n=0; n‹2; n++)
{
temp[n] = w1_read();
}
w1_init();
w1_write(SkipROM);
w1_write(ConvertT);
w1_init();

result = temp[1] * 256 + temp[0];
return result;

}
__________________
www.samodelkin.kiev.ua - для тех, кто хочет научиться!
alex28411 вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Все что нужно для начала работы с микроконтроллерами incm Микроконтроллеры, АЦП, память и т.д 157 31.10.2011 20:12
усовершенствование усилителя ВЭФ-101-стерео phil31 Аудиотехника 38 12.01.2010 04:28
[Решено] Третье Послание Человечеству lelkanet Отвлекитесь, эмбеддеры! 201 06.01.2010 00:33
Помогите с ЦАП AD7708/AD7718 или их аналогами ST_Senya Микроконтроллеры, АЦП, память и т.д 9 30.11.2009 19:03


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


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