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

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

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

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

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

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

Измерительное оборудование Осциллографы, мультиметры, анализаторы и другая измерительная техника необходимая каждому разработчику.

 
Опции темы
Непрочитано 21.10.2011, 18:39  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Маркировка датчика температуры DS1820

На днях приобрёл датчик с обозначением DS1820, и купил с дуру 2 шт
подключил к рабочей схеме, с возможностью переключать на S и на В.
И в результате эти датчики показывают такую ерунду, при 20гр показывает -33гр. Бился с ними да так и не определил алгоритм вычисления температуры. Может кто знает.
Реклама:
AGAT0365 вне форума  
Непрочитано 22.10.2011, 00:03  
leoniv
Временная регистрация
 
Регистрация: 15.05.2010
Сообщений: 58
Сказал спасибо: 0
Сказали Спасибо 33 раз(а) в 16 сообщении(ях)
leoniv на пути к лучшему
По умолчанию Re: Маркировка датчика температуры DS1820

Что тут спорить? На корпусе DS1820 и DS18S20 пишут просто "DS1820", но упервых корпус высокий PR35, а у других - обычный TO-92. Для DS18B20 на корпусе таки ипишут.

Что касается запрета прерываний при работе с шиной 1-Wire, то он нужен, но только на короткое время:

Код:
//--------------------- Генерация импульса сброса: ---------------------------

bool TReset(void)
{
  char si;
  Port_OWP1_0;                 //OWP ‹- 0
  Delay_us(500);               //delay 500 uS
  si = __save_interrupt();
  __disable_interrupt();       //запрещение прерываний
  Port_OWP1_Z;                 //OWP ‹- 1
  Delay_us(14);                //delay 14 uS
  if(Pin_OWP1)                 //если OWP = 0, то ошибка
  {
    Delay_us(52);              //delay 52 uS
    if(!Pin_OWP1)              //если OWP = 1, то ошибка
    {
      __restore_interrupt(si); //восстанавление прерываний
      Delay_us(250);           //delay 250 uS
      if(Pin_OWP1)             //если OWP = 0, то ошибка
      {
        return(1);             //если ошибок нет, термометр присутствует
      }
    }
  }
  __restore_interrupt(si);     //восстанавление прерываний в случае ошибки
  return(0);
}

//-------------- Запись/чтение байта по однопроводной шине: ------------------

char TByte(char dat)
{
  char res;
  for(char i = 0; i ‹ 8; i++)
  {
    res = res ›› 1;
    if(TBit(dat & 1)) res |= 0x80;
     else res &= ~0x80;
    dat = dat ›› 1;
  }
  return(res);
}

//--------------- Запись/чтение бита по однопроводной шине: ------------------

bool TBit(bool b)
{
  char si;
  si = __save_interrupt();
  __disable_interrupt();       //запрещение прерываний
  Port_OWP1_0;                 //OWP ‹- 0
  Delay_us(2);                 //delay 2 uS
  if(b) Port_OWP1_Z;           //bit = 1, OWP ‹- 1
  Delay_us(13);                //delay 13 uS
  bool owp = Pin_OWP1;         //чтение порта
  Delay_us(45);                //delay 45 uS
  Port_OWP1_Z;                 //OWP ‹- 1
  __restore_interrupt(si);     //восстанавление прерываний
  Delay_us(2);                 //delay 2 uS
  return(owp);
}
leoniv вне форума  
Непрочитано 22.10.2011, 18:22  
alvadep
Почётный гражданин KAZUS.RU
 
Регистрация: 05.05.2011
Адрес: Харьков
Сообщений: 5,049
Сказал спасибо: 592
Сказали Спасибо 3,968 раз(а) в 1,826 сообщении(ях)
alvadep на пути к лучшему
По умолчанию Re: Маркировка датчика температуры DS1820

Сообщение от shalan Посмотреть сообщение
Чтобы считывать температуру не запрещая прерывания пришлось поднять частоту кварца с 4-х до 8-ми Мгц
А что мешает опрашивать датчик по тем прерываниям, которые Вы не хотите запрещать. Ведь и для часов и для тахометра прерывания будут не супер частые и в промежутке между прерываниями можно вполне передать/принять что-нибудь (один или несколько слотов). Частота следования слотов у DS в сторону уменьшения не регламентируется.
alvadep вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Использование DS1820 ArtUrl1986 Микроконтроллеры, АЦП, память и т.д 16 19.04.2009 22:06
Чувствительный элемент датчика температуры LG Ni 1000 stml Автоматика и аппаратура связи 0 14.01.2008 00:04
Программирование DS1820 ypbnaz Микроконтроллеры, АЦП, память и т.д 0 01.02.2007 18:57
DS1820 Taras_33 Микроконтроллеры, АЦП, память и т.д 0 20.02.2006 23:02


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


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