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

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

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

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

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

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

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

 
Опции темы
Непрочитано 21.02.2007, 21:22  
Vrungel
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vrungel на пути к лучшему
По умолчанию DS18B20

Здравствуйте.
Имею странную проблему:
Если при записи (чтении) байта в термодатчик между передачей отдельных бит проходит некоторое время(конкретно не замерял - в случае отвлечения процессора на обработку какого-либо прерывания), то DS-ка как будто забывает чего до этого происходило, и соответственно нормального обмена с ней не выходит. Если на время обмена запрещаю прерывания - всё ОК.
Компилятор CodeVision 1.25.3.
Насколько я понял из даташита интервалы между битами должны быть больше 1мкс и меньше бесконечности.
Чего я не так понял?
Реклама:
Vrungel вне форума  
Непрочитано 21.02.2007, 21:52  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

прерывания нужно запрещать.
Почитай статью http://www.3dnews.ru/cooling/thermometer_ds18s20/
Сам по ней учился.
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 22.02.2007, 01:55  
DimAlt
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 60
Сказал спасибо: 17
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
DimAlt на пути к лучшему
По умолчанию

Таких проблем не было, прерывания запрещал только в формировании задержек временых слотов. Время между битами разное было, но датчик ни когда амнизией не стродал. Возможно у Вас прерывания растягивают время временого слота.
DimAlt вне форума  
Непрочитано 22.02.2007, 08:06  
MiHoY
Частый гость
 
Регистрация: 21.02.2007
Сообщений: 42
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
MiHoY на пути к лучшему
По умолчанию

посмотри как я сделал в своём девайсе. конечно криво, но никуда не деться (если использовать динамическую индикацию)

Прикрепленный файл: 9848384.ZIP
MiHoY вне форума  
Непрочитано 22.02.2007, 09:04  
Vrungel
Частый гость
 
Регистрация: 22.11.2006
Сообщений: 19
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vrungel на пути к лучшему
По умолчанию

Сообщение от DimAlt
Таких проблем не было, прерывания запрещал только в формировании задержек временых слотов. Время между битами разное было, но датчик ни когда амнизией не стродал. Возможно у Вас прерывания растягивают время временого слота.
Сначала использовал встроенные библиотеки, в конце концов написал все функции сам. Прерывания запрещаются вначале передачи (приёма) бита, по окончании разрешаются вновь. Длительность интервалов верная (проверял осцилографом).
p.s. Ситуация налаживалась если прерывания запрещались на время передачи (приёма) байта.
Может быть компилятор чего-то не сохраняет перед обработкой прерывания
Vrungel вне форума  
Непрочитано 22.02.2007, 11:14  
masterpc
Временная регистрация
 
Регистрация: 11.01.2005
Сообщений: 81
Сказал спасибо: 0
Сказали Спасибо 1 раз в 1 сообщении
masterpc на пути к лучшему
По умолчанию

Вот как я делал, с проверкой crc:

/*************1-WIRE ******************/
/*SENSOR1*/
void reset_wire_s1(void)
{
TX_W11();
TX_W01();
PAUSE_US(600); //600us
_CLI();
TDN1();
PAUSE_US(100); //~100 us
if one_set1()
{
_SEI();
sense_error();
}
_SEI();
while wait1() {}

}

void wire_out_s1(byte chr)
{
byte i;
for(i=0;i‹8;i++)
{
_CLI();
TX_W01();
PAUSE_US(10);// ~10 us
if (chr&0x01) {
TX_W11();
}
else {
TX_W01();
}
PAUSE_US(100); // ~100 us
TX_W11();
PAUSE_US(5); // ~5us
_SEI();
chr=(chr››1);
}
}

//чтение байта 1-wire
void rd_mem_s1(void)
{
byte i, j,chr;
byte bufsens[9];
reset_wire_s1();
wire_out_s1(0xCC);
wire_out_s1(0xBE);

for(i=0; i‹9; i++)
{
chr=0x00;
for (j=0; j‹8; j++)
{ chr=(chr››1);
_CLI();
TX_W01();
PAUSE_US(4); // ~4 us
TDN1();
PAUSE_US(9); // ~9 us
if one_set1() {
chr|=0x80;
}
_SEI();
PAUSE_US(120); // ~120us
}

bufsens[i]=chr;


}
if((CalcCrcT(bufsens,9)==0))
{
sens1[0]=bufsens[0];
sens1[1]=bufsens[1];
sens1[2]=bufsens[2];
sens1[3]=bufsens[3];
sens1[4]=bufsens[4];
sens1[5]=bufsens[5];
sens1[6]=bufsens[6];
sens1[7]=bufsens[7];
sens1[8]=bufsens[8];
}

}

void conv_tmp_s1(void) // запуск цикла изм.
{
reset_wire_s1();
wire_out_s1(0xCC);
wire_out_s1(0x44);
}

Как видиш, прерывания как раз и запрещаються на время передачи/приема байта, плюс еще когда ждем отклика на ресет, чтобы его не провтыкать.
__________________
Музыка и звук - не одно и тоже...
masterpc вне форума  
Непрочитано 23.02.2007, 02:07  
DimAlt
Временная регистрация
 
Регистрация: 11.06.2006
Сообщений: 60
Сказал спасибо: 17
Сказали Спасибо 6 раз(а) в 4 сообщении(ях)
DimAlt на пути к лучшему
По умолчанию

Не должно быть таких проблем. Для динамической индикации я разделял по командам, и посылал их только после вывода цифр. В этой программе
http://startcd.narod.ru/clock/clock.html
и в этой тоже
http://startcd.narod.ru/termods/termods.html
DimAlt вне форума  
Непрочитано 01.12.2007, 06:00  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Решил сделать термометр на этом датчике.Сначало отладить решил в Протеусе.Но не могу записать в DS18B20,кажись все нормально.
Сначало сбрасиваю его,потом жду отзыва от него,потом начинаю передачу пропуском ROM команды,потом записать в память регистры Th,Tl и байта конфигурации,но при этом в окошке регистров датчика ничего не меняется.Может кто подскажет или поможет в чем ошибка.

-- Прилагается рисунок: --


Прикрепленный файл: 8559928.rar
CERGEI1982 вне форума  
Непрочитано 01.12.2007, 14:58  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию

Разобрался,оказывается нельзя подключать простой резистор в протеусе на провод,который подтягивает к плюсу,поставил PULLUP и все заработало,а бился целый день
CERGEI1982 вне форума  
Непрочитано 01.12.2007, 15:47  
sem_sam
Временная регистрация
 
Регистрация: 03.10.2006
Сообщений: 75
Сказал спасибо: 51
Сказали Спасибо 4 раз(а) в 2 сообщении(ях)
sem_sam на пути к лучшему
По умолчанию

Сообщение от CERGEI1982
Разобрался,оказывается нельзя подключать простой резистор в протеусе на провод,который подтягивает к плюсу,поставил PULLUP и все заработало,а бился целый день
Чет не работает
На индикаторе англицкая ь в первом от проца индикаторе. Второй пустой
Протеус ругался на землю и питание.
Сегменты А и В не активны
BEGAN INIT
MVI PORTA,B'11111111' ;
BSF SHIFT
MVI TRISA,0X01 ;НУЛЕВОЙ НА ВХОД
BCF SHIFT

MVI PORTB,B'11111110'
BSF SHIFT
MVI TRISB,0X00
BCF SHIFT
Чет я не знаю такой команды - MVI просветите плиз
sem_sam вне форума  
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Термометр на ds18b20 Peshevbis Микроконтроллеры, АЦП, память и т.д 83 31.12.2010 20:22
ds18b20 отключение от шины EKuzmich Микроконтроллеры, АЦП, память и т.д 24 29.08.2009 11:01
CD4051+DS18B20 gena1959 TTL и CMOS логика 5 03.09.2007 01:04
Модель DS18B20 Cap63 Микроконтроллеры, АЦП, память и т.д 3 22.01.2007 21:51
о датчиках ds18b20 Peshevbis Микроконтроллеры, АЦП, память и т.д 3 17.10.2006 17:17


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


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