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

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

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

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

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

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

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

 
Опции темы

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

Непрочитано 22.02.2010, 06:02  
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; // если младший бит 1 то сделать входом
    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 формируется вроде как надо. Питание однопроводное, ноги GND и Vdd соединены.
Реклама:

Последний раз редактировалось svv11; 22.02.2010 в 06:25.
svv11 вне форума  
Непрочитано 22.02.2010, 07:23  
kison
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.12.2004
Сообщений: 3,168
Сказал спасибо: 11
Сказали Спасибо 691 раз(а) в 503 сообщении(ях)
kison на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20 ?

Сообщение от svv11 Посмотреть сообщение
и больше ничего не хочет делать.
С чего Вы это решили? В Вашем исходнике датчику передается всего две команды, причем после второй - Чтение памяти - никакого чтения не производится. Т.е. связь односторонняя. Команды на преобразование температуры тоже нет. Но и без нее с датчика должно считаться +85С. Но Вы же не читаете!
И еще совет - переходите на паразитное питание только после того, как все будет работать как часы с обычным включением.
Также неплохо исключить выход из main - в микроконтроллерах выходить как бы некуда.
kison вне форума  
Сказали "Спасибо" kison
svv11 (05.03.2010)
Непрочитано 22.02.2010, 09:50  
DK
Почётный гражданин KAZUS.RUN
 
Аватар для DK
 
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,480
Сказал спасибо: 734
Сказали Спасибо 1,899 раз(а) в 777 сообщении(ях)
DK на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20 ?

Цитата:
TD_0;
delay_us( 490 ); //импульс RESET
TD_IN;
delay_us( 490 ); //для импульса PRESENCE
DS(0xCC); //Команда Пропуск ROM
DS(0xBE); //Команда Чтение памяти
TD_IN;
TD_0;
delay_us( 490 ); //импульс RESET
TD_IN;
delay_us( 490 ); //для импульса PRESENCE
DS(0xCC); //Команда Пропуск ROM
DS(0x44); //Команда запуск преобразования

delay_ms( 900 );
ну вот как-то так. Будет выдавать температуру со второго цикла.
Я как-то раз багу у себя словил - в какойто момент МК успевал уйти в прерывание в момент записи или чтения. А в результате - бред. Так что тоже не мешает проверить.

Есть дока на русском на этот термометр.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.

Последний раз редактировалось DK; 22.02.2010 в 09:54.
DK вне форума  
Сказали "Спасибо" DK
svv11 (05.03.2010)
Непрочитано 05.03.2010, 06:20  
svv11
Временная регистрация
 
Регистрация: 20.11.2005
Сообщений: 52
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
svv11 на пути к лучшему
По умолчанию Re: Что делаю не так с DS12B20 ?

Спасибо, всё пошло, просто по ночам надо спать, тогда и голова будет работать.
svv11 вне форума  
 
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Что делаю не так с DS12B20 svv11 Микроконтроллеры, АЦП, память и т.д 4 25.02.2010 13:42
усовершенствование усилителя ВЭФ-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, время: 05:44.


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