Свежие обсуждения
Микроконтроллеры

Помогите с S18b20 разобраться

1 2

Всё разобрался, сам болбес...
В пункте 3 нужно дать команду измерения и выждать паузу, а делее обязательно (чего я неделал) повторить всё заново. То есть подать команду 55h, далее 64-бита, а потом уже считывать (BEh) температуру. А я хотел сразу считать
Вобщем луюи читайте внимательней доку прежде чем писать

Проект за мной, поправлю выложу...

 

Вот...
Протеус 6.9 (в 7.x возможен глюк с библиотекой DS18B20, просто удалите и добавте из новой библиотеке)
к сожелению ROM термодатчиков пока записаны в програмную память МК. Когда переделаю в EEPROM то можно будет в HEX файле менять тод датчики с другим ROM (разумеется исправляя при этом CRC)

164403.zip

 

и картинка...

 

DIKLER: А я хотел сразу считать
Если датчик один, то можно и сразу читать.
0xCC, 0x44, _пауза_, 0xCC, 0xBE

 

Даже если датчик один, то при чтении без паузы будет прочитано предыдущее значение в памяти (если оно там есть). На преобразование температуры в циферки датчик "просит" около 1 сек.

В бейсике (BASCOM AVR) будет так:
1wreset ' Reset в линию
1wwrite &HCCH ' Дать всем датчикам команду конвертировать температуру
1wwrite &H44H

Wait 1 ' Ждать около 1 сек (по даташиту), в это время МК может заняться чем-нибудь более полезным

1wreset
1wwrite &H55H ' Обращение к конкретному датчику
1wwrite Reg_no(1) , 8 ' отправить код первого датчика
1wwrite &HBEH ' команда на чтение памяти
T_byte(1) = 1wread() ' Read Temperature (два байта). В байтовые переменные T_byte(1) и T_byte(2)
T_byte(2) = 1wread()

Может кому пригодится... В начале тоже долго мучился с их активацией и чтением.

 
1 2