Доброго времени суток Котам, Кошкам и Котятам
Пишу на Bascom как ни странно...
Нужен кусочек кода с применением команды 1wwrite &HEC. Никак немогу вразуметь где его вставить и как им пользоваться. Даташит не соотносится с Bascom, как только не пробовал. Может есть у кого наработки или предложения, весь googl перерыл, вплоть до китайских сайтов.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
чтобы воспользоваться командой ALARM SEARCH [ECh] - нужно сначала задать необходимый диапазон температур. Для этого:
1 делаем сброс
2 передаем команду пропуск ПЗУ - SKIP ROM [CCh]
3 передаем команду запись WRITE SCRATCHPAD [4Eh] и пишем 3 байта, где 1 байт -Верхняя граница температуры, 2-ой байт - нижняя граница и 3-ий байт - регистр конфигурации.
.... и только после этого в ALARM SEARCH [ECh] есть смысл
Magicanin писал(а):Даташит не соотносится с Bascom
Даташит не соотносится ни с каким языком и если выбрали Bascom - это Ваше лично дело, но внимательного чтения Datasheetа никто не отменял.
Программа моего устройства полностью готова (почти 700 строк)
Все задано и изменяемо.
Вот только не знаю как прочитать флаг с кажной DS'ки
Осталась только функия управления периферией
В даташите написано что эта функция аналогична поиску ROM и на этом все пояснения.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
... что бы получить нормальный ответ - нужно задать нормальный вопрос ( я же не экстрасенс ) . Как я понял на одной линии висит несколько DS18b20.
Magicanin писал(а):Вот только не знаю как прочитать флаг с кажной DS'ки
флаг устанавливается аппаратно, после подачи команды CONVERT T [44h]
Magicanin писал(а):В даташите написано что эта функция аналогична поиску ROM и на этом все пояснения.
...а больше наверное и не нужно Как DS18b20 может сообщить мастер-устройству на запрос ALARM SEARCH [ECh], что у него установлен бит тревоги? ... конечно только своим ROM-кодом (ведь если у нескольких датчиков установлен бит тревоги, то они ответят одновременно и на шине будет конфликт) именно поэтому функция аналогична поиску ROM
Может не экстрасенс но раз написано что "с каждой DS'ки" логично что она не одна.
Так же логично что она отвечает ROM'ом. Но поиск ROM'ов ведется командами 1wsearchfirst(), 1wsearchnext(). По другому не умеем.
Так же из даташита известно, флаг (0 or 1) устанавливается восьмым битом ригистров TH и TL.
В ответ на команду &hEC всегда 'FF'
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Насколько я понял Убийца Чипов не знаком с Bascom-AVR, а даташиты по ангельски мы и сами читать умеем.
Теория понятная, как в коде написать - вот в чем вопрос.
[size=85][color=#80BF00][b]Извращение это[/b][/color]: программатор - [color=#40BFBF]AVR910 by Prottoss[/color], прошивка - [color=#40BFBF]Doper[/color], драйвер - [color=#40BFBF]Osamu Tamura[/color], называется - [color=#FF0000]STK500[/color]![/size]
Моя проблема:
по команде searchrom F0 не отзываются Ds1820 сенсоры.
У меня на проводе 2 дачтика.
По сбросу они отзываются. При подаче команды searchrom F0, в ответ получаю: FF FF FF FF FF FF FF FE !!! Т.е. пакет, в котором все 1 за иссключением самого младшего бита - 0.
См. осцилограммы.
На команду readrom 33 датчики отзываются вместе и по отдельности каждый.
Что же не так?
Как много времени я убил... Уже думаю, что считаю ром каждого по отдельности и затем зашью в ПО, что не есть гуд. И тогда сразу буду к каждому обращаться, минуя их поиск.
В моем случае на проводе 9 датчиков ds18b20, с ds1820 дел не имел.
Чтобы не запутаться я им присвоил порядковые номера и сохраняю в EEPROM контроллера в меню инициализации. При смене датчика запоминаю его снова. Как-то по-другому мне в голову не приходило.