Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Общетехнические вопросы

Общетехнические вопросы Общие вопросы аналоговой и цифровой электроники.

Ответ
 
Опции темы Опции просмотра
Старый 02.12.2007, 23:51   #1
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
Angry Проблема с DS1820. Чем лыжи мазать?

Всем привет.
Такая фигня. Уже несколько лет использую (в разных приложениях) термодатчики
DS18S20. Думал уже все про них знаю. Но вот уже три дня туплю, и лыжи не
едут. Поэтому помогите советом кто в теме.

В двух домашних устройствах стояли датчики DS18S20, подключение по паразитной
схеме. Но как то делал девайс клиенту, и чтоб не ходить в магазин, поставил
свои датчики в устройство клиента.
На следующий день пошел купил в магазине для себя несколько штук.
Купил DS18S20, (так мне их продали). На корпусе надпись DS1820.
________
| DALLAS |
| DS1820 |
| 0718C3 |
| +452AJ |
----------
| | |
| | |
| | |
| | |

На старых (насколько помню) была такая же надпись.
Принес домой, вешаю в сеть, они показывают температуру 85 градусов в комнате.
Думаю ни фига себе. Дома то 20 градусов. Короче выдают 85 градусов, и ваще
на температуру не реагируют. Все мастера (контроллеры сети на PIC).
85 градусов, это результат деления, а реально значит, первый байт, в котором
по сути и сиди температура, содержит 170 (AAh).
Стал исследовать эти DSки. Все работает, то есть мастер может читать (правильно)
серийник, фемили код, CRC, регистры верхней/нижней уставки.
То есть формат естесвенно в норме, мастер нормально общается с датчиком.
А вот измерение температуры, кажет только 85 градусов.
Правильное измерение температуры происходит только если подключать датчики
по схеме с внешним питанием. Но мне нужно с паразитным, у меня витая пара.
Все перепробовал, чать не первый день за мужем. И время преобразования увеличил
до 2 сек, и подачу высокого уровня на период преобразования подаю через
резистор 56 ом (датчик по паразитной схеме), то есть уж не знаю че.
Пробовал эти датчики подключать к компу, есть у меня адаптер на COM-порт.
Прога "iButtonViever" + адаптер на COM порт. Работает.
Причем работает при включении датчиков по паразитной схеме.
То есть датчики по сути полностью работоспособные, живые.
Проверял эпюры осцилом, все нормально. После выдачи в датчик кода [44h],
запуск преобразования, контроллер сразу переводит линию в высокий уровень,
активная подтяжка.
Естественно пробовал и время всех интервалов менять больше/меньше,
может думал у DSок внутренние клоки другие. Не помогает.


Привожу код центрального модуля, из которого ясен основной алгоритм.

;--- ЦЕНТРАЛЬНЫЙ МОДУЛЬ (программное ядро) ------

POEHALI:

CALL WIRE_INIT ; Выполнить сброс, инициализацию 1-Ware
CALL SKIP_ROM ; Пропуск чтения ПЗУ [CCh]
CALL CONVERT_START ; Запуск преобразования датчика [44h]
CALL WIRE_HIGH ; Подать питание на 1-Wire линию


CALL T_07sec ; ЖДЕМ 0,7 сек ПОКА ДАТЧИК ПРЕОБРАЗУЕТ

CALL WIRE_INIT ; Выполнить сброс, инициализацию 1-Ware
CALL SKIP_ROM ; Пропуск чтения ПЗУ [CCh]
CALL READ_PAD ; Запрос на чтение Блокнотной памяти [BEh]
CALL READ_t ; Читаем данные температуры из датчика

CALL INDIK_START ; Вывести результат наиндикатор

GOTO POEHALI ; И заново


Еще раз повторюсь, со старыми датчиками все работало без укоризненно!
Я уж не знаю что и делать/думать/делать.
Может есть другие DS-ки с какими нибудь хитрыми фичами?
Может это какие то особые DSки, и есть какие то команды про которые я не знаю.
Вроде все шитыдаты перерыл...
Кстати, прога "iButtonViever" определяет датчик как DS18S20, то есть вроде
правильно...
В СЕТИ ВИСИТ ДАТЧИК DS18B20, С НЕГО ТЕМПЕРАТУРА НОРМАЛЬНО ЧИТАЕТСЯ,
ЭТИМИ ЖЕ ПРОЦЕДУРАМИ!?
Подскажите куда смотреть, чем лыжи мазать?
Во ведь попал!
fol вне форума   Ответить с цитированием
Старый 03.12.2007, 03:50   #2
SSH
Banned
 
Регистрация: 27.02.2007
Адрес: Красноярск
Возраст: 47
Сообщений: 2,387
Вес репутации: 950/0
SSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to beholdSSH is a splendid one to behold
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

У DS18B20 по умолчанию включено 12-битное значение преобразования, у DS18S20 9-ти битное. Регистры температуры тоже по разному устроены, наверное нужно и обрабатывать их по-разному. Может в этом проблема.
SSH вне форума   Ответить с цитированием
Старый 03.12.2007, 10:23   #3
dj_kirgoff
Senior Member
 
Аватар для dj_kirgoff
 
Регистрация: 26.02.2007
Возраст: 37
Сообщений: 206
Вес репутации: 254/41
dj_kirgoff is a jewel in the roughdj_kirgoff is a jewel in the roughdj_kirgoff is a jewel in the rough
Отправить сообщение для dj_kirgoff с помощью ICQ
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Проблема именно в этом, сам недавно товарищу переделывал, прежний датчик гроза убила.
__________________
"Говорить не думая - все равно, что стрелять не целясь" Сервантес.
dj_kirgoff вне форума   Ответить с цитированием
Старый 03.12.2007, 11:24   #4
make
Member
 
Регистрация: 11.03.2007
Сообщений: 31
Вес репутации: 103/38
make will become famous soon enoughmake will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

проблема в питании, паразита недостаточно. Подать внешнее и проверить. Удачи
make вне форума   Ответить с цитированием
Старый 03.12.2007, 20:21   #5
Evgenii Ivanov
Junior Member
 
Регистрация: 08.11.2007
Адрес: Москва
Возраст: 34
Сообщений: 16
Вес репутации: 100/36
Evgenii Ivanov will become famous soon enoughEvgenii Ivanov will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Извините, что не совсем в тему..

fol, пожалуйста, можете скинуть полный исходный код на С работы с датчиком (пусть даже "не до конца рабочий"), а то та же фигня: Купил DS18S20. На корпусе надпись DS1820 (или может это на самом деле DS1820?). Процедуры, которые нарыл в др. местах не работают....
Включено по схеме с обычным питанием..
Evgenii Ivanov вне форума   Ответить с цитированием
Старый 03.12.2007, 22:45   #6
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Мужики, (и не только), всем спасибо большое за ответы. Но я наверно плохо изложил свою проблему. Хотя вроде и нет. Я сказал, что датчики работают с полном питанием на все 100%. То есть отвечают мастеру, предоставляют мастеру данные температуры и прочее. С паразитным питанием, датчики работают то же, за исключением измерения температуры. Это когда мастером сети является PIC контроллер.
Когда же мастером сети является компьютер (с необходимым аппаратно программным комплектом), то датчики так же работают на все 100%.
Я зря упомянул о DS18B20, только ввел в заблуждение. Я конечно знаю что у них большая разница в конфиге. Я просто хотел сказать что все датчики, работают прекрасно, в том числе и DS18B20.
Просто я в непонятках, однажды скурпулезно написанные мной модули работы с 1Wire сетью, НИКОГДА НЕ ПОДВОДИЛИ. Даже в заводских условиях все шло гладко. И вот купил другие датчики, и такой облом.
Я естественно вдоль и поперек знаю их устройство и способы обмена. Но просто такая непонятка, вот я и решил, что может какая другая фича зарыта, которой нет в справочниках.

Повторяю свой вопрос.
Помогите кто в теме.
Купленные датчики идеально работают при внешнем питании.
При паразитном питании работает все, кроме измерения температуры. При этом датчик дает мастеру температуру 170 градусов, то есть b'10101010' . Я по опыту знаю, что такое раньше было при недостаточном питании (во время преобразования датчику не хватает энергии) или когда датчик слишком торопят, маленькое время преобразования.
Естественно все это я устранил. Да и устранять нечего, во всех схемах у меня на время преобразования датчик запитывается через ключ, (активная подтяжка), да и время не менее секунды, за глаза более чем хватает.
Короче вот бьюсь и #бусь который день, и нифига.

Так чем лыжи мазать.

P.S.
Да, кому надо как нить скину программные модули. Они на на АСМЕ.
До сего времени искренне считал их лучшими, так как они легко врезаются в любую другую прогу. (сам себя не похвалиш, то кто еще это сделает) Но только когда решу эту корягу. Тут дело чести.
fol вне форума   Ответить с цитированием
Старый 04.12.2007, 04:43   #7
CrazySoft
Junior Member
 
Регистрация: 26.03.2007
Возраст: 54
Сообщений: 17
Вес репутации: 100/38
CrazySoft will become famous soon enoughCrazySoft will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Так чем дело то закончилось?
Подозреваю, нужно было потолще витую пару
CrazySoft вне форума   Ответить с цитированием
Старый 04.12.2007, 04:49   #8
CrazySoft
Junior Member
 
Регистрация: 26.03.2007
Возраст: 54
Сообщений: 17
Вес репутации: 100/38
CrazySoft will become famous soon enoughCrazySoft will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

А можно попробывать еще и электролит подключить к питанию DS1820 и накапливать на нем от шины через диод
CrazySoft вне форума   Ответить с цитированием
Старый 04.12.2007, 18:20   #9
Синклер
Senior Member
 
Регистрация: 06.03.2007
Адрес: Череповец
Возраст: 47
Сообщений: 472
Вес репутации: 124/42
Синклер will become famous soon enoughСинклер will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Случайно эту темку тут увидел, не сочтите за ... но может кто-нить поделится или даст ссылки на готовые ПП или программы, работы с этим датчиком, тот который без Б (желательно на ASM) для PIC.

Валяется у меня он уж ...лет, всё руки не доходят запустить эту игрушку, чисто для дома для семьи
Синклер вне форума   Ответить с цитированием
Старый 05.12.2007, 01:32   #10
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
По умолчанию Re:

Проблема и кончилась и нет.
Кончилась потому что не поленился поехал в другой магазин, купил там датчик, вроде такой же. ОН ЗАРАБОТАЛ БЕЗ КАКИХ ЛИБО КАПРИЗОВ. ПРОСТО ВЕШАЮ ЕГО В СЕТЬ И ОН КАК ПОЛОЖЕНО НАЧИНАЕТ ОБЩАТСЯ С МАСТЕРОМ, И ВЫПОЛНЯЕТ ВСЕ КОМАНДЫ МАСТЕРА.

Тем не менее задача не решена. Видимо я чего то не знаю, и есть какая то фича или особые датчики.
Ведь фокус в том что компьютер с адаптером, являясь мастером сети, читает на все 100 оба датчика, и "плохой" и хороший. И обоих заставляет мерять температуру по паразитному питанию.
А когда мастером сети PIC контроллер, то оба датчика так же нормально работают, то есть обмениваются инфой с мастером, но запускается на измерение температуры и правильно ее измеряет только "хороший" датчик.
Такая фигня. Всю голову поломал. Чего не знаю я, и что знает прога iButtonViever, которая рулит компьютером когда он мастер сети. Хотя повторяю, прога iButtonViever оба датчика определяет одинаковыми, как DS18S20, и естественно (скорее всего) работает с ними по одному протоколу.
Бред. Туплю который день, и башня уже далеко.
Повторяю, все перепробовал.

На всякий случай, может кому пригодится, прилагаю аттачную картинку, что знали в лицо плохих и хороших.
Если кто разберется, плиз, чиркните мне, а то я спать не буду.
Миниатюры
Глюк.jpg  
fol вне форума   Ответить с цитированием
Старый 05.12.2007, 09:31   #11
Evgenii Ivanov
Junior Member
 
Регистрация: 08.11.2007
Адрес: Москва
Возраст: 34
Сообщений: 16
Вес репутации: 100/36
Evgenii Ivanov will become famous soon enoughEvgenii Ivanov will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Наверняка не буду первым в следующей мысли, но все-таки предложу:
есть ли возможность повесить некий сниффер на шину и отловить сигналы, выдаваемые iButtonViever? (лог. анализатор, например или какую-нить программу, работающую с ком-портом?)

Можете каким-то образом скинуть Ваши процедуры работы с датчиком?
Evgenii Ivanov вне форума   Ответить с цитированием
Старый 05.12.2007, 12:55   #12
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/88
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Так я так и не понял. Вы доку то читали или нет ? (+)

А именно вот это место:

In parasite power mode, the 1-wire bus and C
PP can provide sufficient current to the DS18S20 for most
operations as long as the specified timing and voltage requirements are met (refer to the DC
ELECTRICAL CHARACTERISTICS and the AC ELECTRICAL CHARACTERISTICS sections of this
data sheet). However, when the DS18S20 is performing temperature conversions or copying data from
the scratchpad memory to EEPROM, the operating current can be as high as 1.5 mA. This current can
cause an unacceptable voltage drop across the weak 1-wire pullup resistor and is more current than can be
supplied by C
PP. To assure that the DS18S20 has sufficient supply current, it is necessary to provide a
strong pullup on the 1-wire bus whenever temperature conversions are taking place or data is being
copied from the scratchpad to EEPROM. This can be accomplished by using a MOSFET to pull the bus
directly to the rail as shown in Figure 4. The 1-wire bus must be switched to the strong pullup within 10
s (max) after a Convert T [44h] or Copy Scratchpad [48h] command is issued, and the bus must be held
high by the pullup for the duration of the conversion (t
conv) or data transfer (twr = 10 ms). No other
activity can take place on the 1-wire bus while the pullup is enabled.

Это я к тому, что адаптер делает этот самый стронг пулап
а Ваш контроллер нет (похоже на то)

Petr вне форума   Ответить с цитированием
Старый 06.12.2007, 02:59   #13
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

RE: Так я так и не понял. Вы доку то читали или нет ? (+)

Во блин меня зло разбирает.!!!!!!!!!! (+) (+) (+) (+) (+) (+)
Вы читаете топик сначала или нет????!!!!!

Я ж сказал что на время преобразования питание идет через ключ, то есть транзисторик такой. Это чтоб вы знали и есть активная (ну очень активная) подтяжка. Это ни когда рожу натякивают, а наоборот.

А вы мне доку, да еще англицкую.
Да, вылизал всю ее. Да и не в этом суть. Если у вас есть предложения то скажите прямо.
Естественно все делаю по правилам.
А потом стал делать в нарушении правил, а затем нарушил и их.

По русски это так:
Отправляю датчику команду:
"ПРИКАЗЫВАЮ ВЫПОЛНИТЬ ПРЕОБРАЗОВАНИЕ".
После этого подаю напругу, то есть питание, обычно через ключевой транзистор, это и есть активная подтяжка. ЭТО СЕЙЧАС ВРОДЕ САМЫЙ ПОСЛЕДНИЙ ЮЗЕР ЗНАЕТ. Так что на все сто пудов датчику хватает чего пожрать. БЛИН, Я ЖЕ ЭТО УЖЕ ГОВОРИЛ НЕ РАЗ В ВЕРХНИХ ПОСТАХ.
После этого датчик там внутри себе считает и все такое.
По истечении некоторго времени, вуаля, можно забирать данные из первого регистра блокнотной памяти. Ну а кому надо пусть читает и второй, и третий...
Так вот, я так и делаю. К ВАШЕМУ СВЕДЕНИЮ.
ННо сумасшедший датчик может чего и меряет, но в регистр чтоль забывает класть иль че еще?

лАДНО. Извиняйте. Это я утомился.
Да, а по поводу записи на какую нибудь приблуду или на сам комп протокола обмена, который формирует прога iButton Viever, я думал об этом. Я так часто делаю. Срисуешь чей нить код, и ломаеш его и голову.
Обычно использую прогу VaveLab, для звуковухи, у нее хорошее разрешение.

Просто уже устал.
И все равно блин из головы не выходит...

Во фигня.
Я волком бы выгрыз бюрократизм...


P.S.
Как уже ранее говорил, пробовал так же варьировать время, паузу после подачи команды преобразования и включением подтяжки. Да и по моему уже все времена пробовал менять.
Пробовал даже вместо кварца ставить внешний генератор и плавно менять опорную частоту, тем самым пртокол плавненько плавал.
А ДАТЧИКУ НАСРАТЬ И НАКАКАТЬ.
РАЗОБЬЮ МОЛОТКОМ СОБАКУ.

Последний раз редактировалось fol; 06.12.2007 в 03:05.
fol вне форума   Ответить с цитированием
Старый 06.12.2007, 11:56   #14
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/88
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Не расстраивайтесь Вы так (+)

Если есть подтяжка питания - значит
врямянки протокола на грани.
Ибо, если в норме и то и другое - многие тыщи
(сам проверял) датчиков работают стабильно.
Могу прислать свой код для обмена с датчиком.
Petr вне форума   Ответить с цитированием
Старый 06.12.2007, 13:34   #15
WARLOCK
Member
 
Аватар для WARLOCK
 
Регистрация: 09.03.2007
Возраст: 46
Сообщений: 87
Вес репутации: 102/38
WARLOCK will become famous soon enoughWARLOCK will become famous soon enough
По умолчанию Re: Не расстраивайтесь Вы так (+)

Вообсче то подавать подтяжку надо до подачи приказа НАЧАТЬ ПРЕОБРАЗОВАНИЕ .
WARLOCK вне форума   Ответить с цитированием
Старый 06.12.2007, 14:00   #16
LeoN
Senior Member
 
Аватар для LeoN
 
Регистрация: 12.03.2007
Адрес: Оренбургская обл.
Сообщений: 162
Вес репутации: 116/39
LeoN will become famous soon enoughLeoN will become famous soon enough
По умолчанию Re: Не расстраивайтесь Вы так (+)

Цитата:
Сообщение от WARLOCK Посмотреть сообщение
Вообсче то подавать подтяжку надо до подачи приказа НАЧАТЬ ПРЕОБРАЗОВАНИЕ .
Где это ты такое вычитал?...
LeoN вне форума   Ответить с цитированием
Старый 06.12.2007, 14:08   #17
WARLOCK
Member
 
Аватар для WARLOCK
 
Регистрация: 09.03.2007
Возраст: 46
Сообщений: 87
Вес репутации: 102/38
WARLOCK will become famous soon enoughWARLOCK will become famous soon enough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Цитата:
Сообщение от fol Посмотреть сообщение
RE: Так я так и не понял. Вы доку то читали или нет ? (+)

Я ж сказал что на время преобразования питание идет через ключ, то есть транзисторик такой. Это чтоб вы знали и есть активная (ну очень активная) подтяжка. Это ни когда рожу натякивают, а наоборот.


По русски это так:
Отправляю датчику команду:
"ПРИКАЗЫВАЮ ВЫПОЛНИТЬ ПРЕОБРАЗОВАНИЕ".
После этого подаю напругу, то есть питание, обычно через ключевой транзистор, это и есть активная подтяжка. ЭТО СЕЙЧАС ВРОДЕ САМЫЙ ПОСЛЕДНИЙ ЮЗЕР ЗНАЕТ. Так что на все сто пудов датчику хватает чего пожрать. БЛИН, Я ЖЕ ЭТО УЖЕ ГОВОРИЛ НЕ РАЗ В ВЕРХНИХ ПОСТАХ.
После этого датчик там внутри себе считает и все такое.
Вот тут ...... вначале команда, потом подается питание датчика . Может падение на ключе большое? Или что с фронтами не то? И, кстате, не мешало бы проверить конфиг для датчика, может глаз замылился и пропустил что то? Тем более если разные датчики B и S.
WARLOCK вне форума   Ответить с цитированием
Старый 06.12.2007, 18:36   #18
Evgenii Ivanov
Junior Member
 
Регистрация: 08.11.2007
Адрес: Москва
Возраст: 34
Сообщений: 16
Вес репутации: 100/36
Evgenii Ivanov will become famous soon enoughEvgenii Ivanov will become famous soon enough
По умолчанию Re: Не расстраивайтесь Вы так (+)

Цитата:
Сообщение от Petr Посмотреть сообщение
....
Могу прислать свой код для обмена с датчиком.
Пришлите пожалуйста
Evgenii Ivanov вне форума   Ответить с цитированием
Старый 06.12.2007, 22:22   #19
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/88
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Вот (+)

Это для dsPIC30**** но это без разницы.
Нужно только DelayMkS подрихтовать.
Ну и запрет прерываний изменить под актуальный проц.
Код:
 
//-----------------------------------------------------------------------------------------------------------------------
void DelayMkS(unsigned short VelZad)                                                                           //задержка
{
  #define        maxDelayMkS    3250                            //максимальное значение для DelayMkS();
  PR1=VelZad*20;                                                //1 мкс - 20 команд
  TMR1=0;                                                       //сброс таймера
  IFS0bits.T1IF=0;                                              //сброс флага таймера
  while(! IFS0bits.T1IF);                                       //заданное время
}
//-----------------------------------------------------------------------------------------------------------------------
void Termo_In(void)                                                                                        //режим чтения
{
  TERMO_TRIS=1;                                                 //порт на вход
}
//-----------------------------------------------------------------------------------------------------------------------
void Termo_Pull(void)                                                                                    //активный режим
{
  TERMO_LAT=0;                                                  //ноль в защелку
  TERMO_TRIS=0;                                                 //порт на выход
}
//-----------------------------------------------------------------------------------------------------------------------
void Reset_DS1820(void)                                                                                    //сброс DS1820
{
  Termo_Pull();                                                 //активный режим
  DelayMkS(250);                                                //время сброса
  DelayMkS(250);                                                //время сброса
  Termo_In();                                                   //режим чтения
  DelayMkS(250);                                                //время presence pulse
  DelayMkS(250);                                                //время presence pulse
}
//-----------------------------------------------------------------------------------------------------------------------
void Write_DS(unsigned char Dan)                                                                        //запись в DS1820
{
  unsigned char i,Paket;                                        //просто переменная
  unsigned char IPL;                                            //уровень прерываний
  Paket=Dan;                                                    //данные в буфер
  for(i=1;i<=8;i++)                                             //байт
  {
    IPL=SRbits.IPL;                                             //уровень прерываний
    SRbits.IPL=0b111;                                           //уровень прерываний 7
    if(!(Paket & 0b00000001))                                   //проверка бита
    {
      Termo_Pull(); DelayMkS(70); Termo_In();                   //передача 0
    }
    else                                                        //передача 1
    {
      Termo_Pull(); DelayMkS(2); Termo_In(); DelayMkS(68);      //передача 1
    }
    DelayMkS(1);                                                //recovery time
    SRbits.IPL=IPL;                                             //восстановим уровень прерываний
    Paket>>=1;                                                  //сдвиг буфера передачи
  } 
}
//-----------------------------------------------------------------------------------------------------------------------
unsigned char Read_DS(void)                                                                            //чтение из DS1820
{
  unsigned char Rez;                                            //результат
  unsigned char i;                                              //просто переменная
  unsigned char IPL;                                            //уровень прерываний
  Rez=0;                                                        //нет пока ничего
  for(i=1;i<=8;i++)                                             //байт
  {
    Rez>>=1;                                                    //сдвиг
    IPL=SRbits.IPL;                                             //уровень прерываний
    SRbits.IPL=0b111;                                           //уровень прерываний 7
    Termo_Pull();                                               //начало запроса бита
    DelayMkS(2);                                                //более 1ms
    Termo_In();                                                 //отпустили линию
    DelayMkS(11);                                               //время до момента sample
    if(TERMO_PORT) Rez|=0b10000000;                             //прием 1-цы
    SRbits.IPL=IPL;                                             //восстановим уровень прерываний
    DelayMkS(50);                                               //время до конца slot+recovery time
  }
  return Rez;                                                   //результат
}
//-----------------------------------------------------------------------------------------------------------------------
unsigned char Temp_DS1820(void)                                                            //читает тампературу из DS1820
{
  unsigned char MSB,LSB;                                        //данные из DS1820
  Reset_DS1820();                                               //сброс DS1820
  Write_DS(0xCC);                                               //Master issues Skip ROM command
  Write_DS(0xBE);                                               //Master issues Read Scratchpad command
  LSB=Read_DS();                                                //чтение только 2 байт
  MSB=Read_DS();
  Reset_DS1820();                                               //сброс DS1820
  Write_DS(0xCC);                                               //Master issues Skip ROM command
  Write_DS(0x44);                                               //Master issues Convert T command
  if(MSB)                                                       //это будет отрицательная температура
  {
    LSB^=0xFF;                                                  //инверсия
    LSB++;                                                      //корекция на 1-цу
    return LSB/2+100;                                           //шаги по 1 градусу
  }
  else return LSB/2;                                            //положительная
}
Petr вне форума   Ответить с цитированием
Старый 06.12.2007, 22:44   #20
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Эх ребята.
На самом деле.
Ну ведь я уже писал и времена все пробовал менять, и осцилом смотрел, то есть все эпюры прямоугольненькие. Ну чать не совсем идиот.
Ну не едут лыжи!!!
Я даже в окно иногда высовываюсь посмотреть, может НЛО завис над домом. Тогда бы все объяснялось.
Но я обязательно добью его гада.
И кто то там еще сказал что подтяжка подается до подачи команды на преобразование, вот этому человеку и отправьте англицкий шит-дат, хай почитает.
К сожалению Сишным примером воспользоваться не могу, заклятый АСМовец. Да и прога тестовая которую сейчас юзаю (специально тестовую накатал, чтоб типа минималка была) очень простая. Самая главное выяснить где зарыта собака и чем все таки мазать лыжи кода не едут. Може спиртягой? каквариант.
Короче как побежу, так сообщу всем.
А кому не лень, и не жалко 70 целковых сходите в ЧипДип, может вам продатут такой же экземпляр, вот тогда и поговорим. Я свой (плохой, смотреть аттачную картинку) именно в ЧипДип купил.
Да, и извиняйте кого задел. Это как обычно, волков боятся щепки летят.
Привет.
fol вне форума   Ответить с цитированием
Старый 06.12.2007, 22:56   #21
Serg_D
Junior Member
 
Регистрация: 06.12.2007
Сообщений: 3
Вес репутации: 100/0
Serg_D will become famous soon enoughSerg_D will become famous soon enough
По умолчанию Re: Вот (+)

Привет.
Ребята может я не в тему. Но проблемма такая, собрал я тут на днях http://cxem.net/mc/mc26.php включил датчик по двух проводной схеме и он у меня показывает только 40 градусов и на температуру не влияет. А при трех проводной схеме индикатор с ума сходит и в конце выдает надпись End и все только перепрошивка помагает.
Из вашего поста думаю что у меня датчик кривой привожу что написанно на датчике.
---------
| DALLAS|
| 18B20 |
|0728C3 |
| +325AJ|
----------
| | |
| | |
В программировании я не шарю, и это моя первая конструкция на МК.
Чем можете помочь?
Зарание всем спасибо.
Serg_D вне форума   Ответить с цитированием
Старый 06.12.2007, 22:59   #22
Serg_D
Junior Member
 
Регистрация: 06.12.2007
Сообщений: 3
Вес репутации: 100/0
Serg_D will become famous soon enoughSerg_D will become famous soon enough
По умолчанию Re: Вот (+)

Я тоже к стати в Чип-Дипе купил. А я его еще через интернет магазин выписал так как у нас таких нет. Вот блин жо....
Serg_D вне форума   Ответить с цитированием
Старый 06.12.2007, 23:53   #23
Petr
Senior Member
 
Аватар для Petr
 
Регистрация: 25.02.2007
Возраст: 46
Сообщений: 1,734
Вес репутации: 3438/88
Petr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond reputePetr has a reputation beyond repute
По умолчанию Гы. Так сразу с этого нужно было начинать (+)

Предупреждаю сразу - можете обидеться, но...
1) Доки бывают только английские (на самом деле
еще бывают китайские, и у микрочипа и у других производителей).
Русских док не бывает. А то, что как бы есть - это мусор,
не стоящий даже вывода на экран, не то что прочтения.
2) Воинствующий ASM-мовец в принципе не может решить проблему.
Не потому, что ASM-мовец. А потому ASM-мовец, что
неспособен освоить несколько абстрактных понятий,
необходимых для перехода на С (да без разницы на что).
И это же самое свойство души препятствует решению
много чего другого.

А ASM, кстати полезная штука. Весьма нужен местами.
Но !!! Только местами, коих мало. И этот датчик - не то место.
Petr вне форума   Ответить с цитированием
Старый 07.12.2007, 03:03   #24
fol
Senior Member
 
Аватар для fol
 
Регистрация: 04.05.2007
Возраст: 41
Сообщений: 267
Вес репутации: 264/41
fol is a jewel in the roughfol is a jewel in the roughfol is a jewel in the rough
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Ну вот блин, понеслось.
Только собрася передохнуть, глянул, опять топик подняли.
Че не ймется.

----------------------------------
Petr: А ASM, кстати полезная штука. Весьма нужен местами.
Но !!! Только местами, коих мало. И этот датчик - не то место.
----------------------------------

Не надо разводить религиозные войны!!!

----------------------------------
Petr: А потому ASM-мовец, что
неспособен освоить несколько абстрактных понятий,
необходимых для перехода на С (да без разницы на что).
И это же самое свойство души препятствует решению
много чего другого.
----------------------------------

Сам то понял что сказал?!

Какая разница какой язык, тем более в данном конкретном случае.
Нужно выяснить в чем проблема, а выяснение происходит не при помощи языка программирования, а при помощи головы и вспомогательных инструментов, к которым относится блок питания, осцил, чашка чая, и естественно языковые приблуды.
Но в любом случае, проблема решится только дотошным, скурпулезным исследованием. Да что я вам объясняю. Сами все знаете, как порой какая нибудь мелочь отнимает дни и недели жизни.
Да и мне в общем начхать на этот кривой датчик. Купил другой, и работает все. Но я же все равно не успокоюсь и добью его.
А вы язык, даташиты мол бывают такие и такие...
Вместо вариантов демогогию разведут...
А о душе...
Да другая это тема.
Все привет, законнектимся.


P.S.
Для "Serg_D":
Глянул девайс по твоей ссылке.
Конечно может быть и датчик кривой, но мало вероятно, признаки не те.

И ВООБЩЕ НЕ НАДО ПАНИКИ, никто еще не сказал что указанный мной тип датчика КРИВОЙ! Ведь по трех проводной схеме (с внешним питанием) он прекрасно работает.

Попробуй уменьшит до 4-5 килоом резюк который подтягивает (идет на +Uпит) 3 ногу контроллера. Что то он великоват. Обычно для пассивной подтяжки используют номинал от 3 до 5 кил.

Если у тебя не работает и по трех проводной схеме, успокойся (или наоборот мыль веревку), значит косяк в схеме или проге.
Тебе самому вряд ли разобраться, к тому же там нет исходника, а ломать голову над HEX файлом, годы уйдут. Мой совет. В течении нескольких месяцев научишся писать не сложные програмки под PIC, и напишеш свою под имеющуюся схему. Кстати проверь скурпулезно схему и режимы какие сможеш. А данную схему кстати уже сейчас можеш переводить в ранг тренажера (макета) и начинать писать под нее простенькие тренировочные проги.
Удачи.

Последний раз редактировалось fol; 07.12.2007 в 03:28.
fol вне форума   Ответить с цитированием
Старый 07.12.2007, 04:31   #25
Picvan
Senior Member
 
Регистрация: 21.03.2007
Сообщений: 320
Вес репутации: 186/41
Picvan has a spectacular aura aboutPicvan has a spectacular aura about
По умолчанию Re: Проблема с DS1820. Чем лыжи мазать?

Вот здесь тоже шло обсуждение: http://electronix.ru/forum/index.php...9&#entry276179
Сам столкнулся с тем, что одна партия DS1820 прекрасно работала по паразитному питанию. Купили другую и пришлось срочно вводить ключ подачи
питания на время преобразования с резистором в 20 Ом.
Picvan вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто подскажет в чем проблема с импульсниками? OLAND Источники питания и силовая электроника 5 27.02.2007 13:52


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


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