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

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

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

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

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

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

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

 
Опции темы

Что делаю не так с DS12B20

Непрочитано 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.RUN
 
Регистрация: 05.04.2009
Сообщений: 973
Сказал спасибо: 35
Сказали Спасибо 154 раз(а) в 133 сообщении(ях)
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.RUN
 
Аватар для picavr
 
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,815
Сказал спасибо: 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, время: 18:27.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.