АвторСообщение



Пост N: 28
Зарегистрирован: 25.12.06
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 27.02.07 15:08. Заголовок: Интерфейс 1-Wire



Обсуждение интерфейса 1-Wire


Евгений Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 104 , стр: 1 2 3 All [только новые]


постоянный участник




Пост N: 33
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 02.03.07 16:04. Заголовок: Re:


Ниже даю кусок кода для записи в блокнотную память
..............................................................................................

;---------------------------------------------------------------------------------------------
; Запись в блокнотную память (4EН) применяется для записи данных в блокнотную память, ранее
; адресованного устройства. По данной команде запись производится во второй и третий байты для
; DS1820 и во второй, третий и четвертый - для DS18B20.
; Нулевой и первый байты - данные о температуре (только чтение), второй байт - TH Register,
; третий байт - TL Register, с четвертого по седьмой байт запись невозможна (зарезервировано).
; Для DS18B20 в четвертый байт записывается слово конфигурации, байты с пятого по седьмой -
; зарезервированы (запись невозможна).
;---------------------------------------------------------------------------------------------
Write_pad:
movlw 4EH ; Вывод команды Write Scratchpad (4Eh)
movwf O_Byte ;
call Out_Byte ;

movf TH_Reg,W ; Вывод верхней границы температуры (TH Register),
movwf O_Byte ; для DS1820, DS18B20 регистр номер 2
call Out_Byte ;

movf TL_Reg,W ; Вывод нижней границы температуры (TL Register),
movwf O_Byte ; для DS1820, DS18B20 регистр номер 3
call Out_Byte ;

return ; Для случая DS18B20 убирается (продолжается запись в
; регистр номер 4 - configuration register) т.е выводятся
; три байта подряд.

movf Conf_Reg,W ; Запись данных в конфигурационный регистр (только для
movwf O_Byte ; DS18B20)
call Out_Byte ;

return ;

Как видите проще пареной репы. Запись всегда начинается во второй байт, дальше в третий, все. Это для DS1820. Для случая DS18B20 запись производится во второй, третий и четвертый байты. Конфигурацию регистра Conf_Reg можно глянуть в даташите. По умолчанию стоит 12-ти разрядное декодирование, т.е. я был не прав говоря что все пойдет без проблем. Проблемы будут , выход простой: или уменьшить разрядность да 9-ти, или (в зависимости от разрядности) ввести несколько дополнительных делений на два. Например для 9-ти разрядного преобразования результат считанный с датчика надо разделить на 2: считали 50, разделили на 2, получили 25 - это и есть температура. Для 10-ти разрядов: делим на два, делим на два, т.е. считали 100, поделили на 2, получили 50, поделили на 2, получили искомую температуру (25). И т.д. Для 12-ти разрядов надо поизвести четыре последовательных деления на два. Или по другому вместо одного сдвига вправо для 9-ти разрядного декодирования, сделать четыре сдвига вправо для 12-ти разрядного. И вся любовь. Можно, конечно, задаться целью вывести на индикацию и все четыре знака после запятой, но это уже другая история, на любителя.




Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 40
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 05.03.07 13:53. Заголовок: Re:


Я тут еще раз даташит на DS18B20 посмотрел, погрешность у него такая же что и у DS1820 (+/-0,5 градуса) и если не принять специальных мер по калибровке (не ввести калибровочные коэффициенты), то смысла в выводе на индикатор лишних "цифирек" нет. Для калибровки нужен высокоточный образцовый термометр (дкмаю что у 90% радиолюбителей доступа к такому нет), отсюда практический вывод: переводим его в 9-ти разрядный режим и дело с концом. Для большинства применений погрешности в пол-градуса достаточно.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 105
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.03.07 14:09. Заголовок: Re:


Alberto пишет:

 цитата:
высокоточный образцовый термометр

Такой термометр есть почти у каждого - это медицинский ртутный термометр. Сначала измеряется температура тела с помощью медицинского термометра, а затем с помощью DS18B20.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 45
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 05.03.07 14:37. Заголовок: Re:


Ну нет, не скажите. У него какие пределы? От 30 до 42 градусов с точностью 0,1 градуса, а Вам будет нужен от 0 до 100 градусов с лишним и с погрешностью (посмотрите даташит) в 0,001 градуса. Есть у Вас такой? А по одной точке (температура тела 36,6) Вы ничего не откалибруете. Даже если измерить температуру тела больного, умирающего друга (42 градуса) у Вас ничего не получится. "Циферки" бегать будут, а толку никакого.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 108
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.03.07 14:40. Заголовок: Re:


Да, кстати, в 12-разрядном режиме, десятые доли градуса кодируются четырьмя битами, как потом правильно округлить результат?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 109
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 05.03.07 14:49. Заголовок: Re:


Alberto пишет:

 цитата:
От 30 до 42 градусов с точностью 0,1

Я пока сделал только одно устройство с этим датчиком. Это был "Термометр-терморегулятор для инкубатора", его задача состояла в том чтобы поддерживать температуру в районе 38 градусов с точностью 0.2 градуса. Калибровал выше указанным способом.
Alberto пишет:

 цитата:
0 до 100 градусов с лишним и с погрешностью (посмотрите даташит) в 0,001 градуса.

Найти такой термометр практически нереально.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 48
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 05.03.07 16:10. Заголовок: Re:


Пётр пишет:

 цитата:
Найти такой термометр практически нереально.


И я о том же. У нас на работе когда-то был термометр от -50 до 200 градусов (если память не изменяет) с делением в 0,1 градуса, размером под 2 метра, а потом куда-то благополучно исчез , то ли из-за того что ртути много содержал (по санитарным нормам убрали), то ли еще по какой причине.
"If the DS18B20 is configured for 12-bit resolution, all bits in the temperature register will contain valid data. For 11-bit resolution, bit 0 is undefined. For 10-bit resolution, bits 1 and 0 are undefined, and for 9-bit resolution bits 2, 1 and 0 are undefined. Table 2 gives examples of digital output data and the corresponding temperature reading for 12-bit resolution conversions."
О-о, гляжу в книгу - вижу , раза три смотрел, а слона-то и не заметил. Тут же ясно написано: при 12-ти битной конфигурации все биты содержат действительную информацию, при 11-ти битной конфигурации - бит 0 не определен, при 10-ти битной - биты 0 и 1 неопределены, при 9-ти битной - биты 0, 1 и 2 неопределены. Значит в любом случае надо делить на 16 (делать 4 сдвига вправо), просто не надо учитывать младшие разряды. Это даже легче. Всегда получаем с датчика значение вплоть до десятитысячных (четыре знака после запятой). Значит знак температуры надо контролировать по битам 3-7 байта MSB, остальные биты (0-2) работают в связке с байтом LSB. Т.е.: сначала определяем знак температуры и сохраняем признак (отрицательная/положительная), дальше обнуляем биты 3-7 байта MSB (больше не нужны и чтобы не мешали), делаем четыре сдвига вправо двухразрядного регистра MSB-LSB (после сдвига байта LSB надо обнулять бит С, иначе при следующем сдвиге байта MSB будут "запариваться" его старшие биты, тут правда надо учитывать то, что это информация содержит значение температуры после запятой). Сегодня дома сяду, посмотрю, как можно оформить эту процедуру. По обстоятельствам или используем все знаки после запятой (вплоть до десятитысячных), или меньше (три, два или одно число). Лучше сделать с округлением результата.
Пётр пишет:

 цитата:
Да, кстати, в 12-разрядном режиме, десятые доли градуса кодируются четырьмя битами, как потом правильно округлить результат?


Конечно, надо бы попробовать, но у меня нет DS18B20, так что все дальнейшие (как и предыдущие) рассуждения это просто мои рассуждения. Я бы сделал так: контролировал бы сотые, а дальше уход в два сценария, если меньше пяти оставляем десятки без изменения, если пять и больше прибавляем единицу к десяткам.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 116
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.03.07 12:25. Заголовок: Re:


Alberto пишет:

 цитата:
контролировал бы сотые, а дальше уход в два сценария

Я сделал по другому. Может это и неидеальный вариант, но зато рабочий.
_16                 movf          TEMP_READL,0 
andlw b'00001111'
addwf pcl,1
retlw 00h
retlw 01h
retlw 02h
retlw 02h
retlw 03h
retlw 03h
retlw 04h
retlw 05h
retlw 05h
retlw 06h
retlw 06h
retlw 07h
retlw 08h
retlw 08h
retlw 09h
retlw 09h


Перед вызовом этой подпрограммы в регистр TEMP_READL следует скопировать младший байт, считанный из DS18B20. В результате работы этой подпрограммы, в аккумуляторе будет число (т. е. десятые доли градуса) от 0 до 9, которое без каких либо преобразований можно вывести на индикатор.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 78
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 09.03.07 15:58. Заголовок: Re:


Ниже привожу список устройств, выпускаемых для шины 1-Wire (две первые цифры - групповой код):

01 (DS1990A), DS2401 Только сетевой адрес 1-Wire (серийный номер)
02 (DS1991), (DS1425) Мультиключ (Multikey) iButton, защищенная память объемом 1152 бит
04 (DS1994), DS2404 4-Кбит энергонезависимое ОЗУ (RAM) с часами, таймером и сигнальными таймерами (alarms)
05 DS2405 Один адресуемый ключ
06 (DS1993) 4-Кбит энергонезависимое ОЗУ
08 (DS1992) 1-Кбит энергонезависимое ОЗУ
09 (DS1982), DS2502 1-Кбит СППЗУ (EPROM)
0A (DS1995) 16-Кбит энергонезависимое ОЗУ
0B (DS1985), DS2505 16-Кбит СППЗУ
0C (DS1996), (DS1996x2),(DS1996x4) 64…256-Кбит энергонезависимое ОЗУ
0F (DS1986), DS2506 64-Кбит СППЗУ
10 (DS1920), DS1820, DS18S20 Датчик температуры с программируемыми пороговыми значениями температуры
12 DS2406, DS2407 1-Кбит СППЗУ, двухканальный адресуемый ключ
14 (DS1971), DS2430A 256-бит ЭСППЗУ (EEPROM) и 64-бит однократно программируемый (ОТР) регистр
18 (DS1963S) 4-Кбит энергонезависимое ОЗУ и процессор SHA-1
1A (DS1963L) 4-Кбит энергонезависимое ОЗУ со счетчиками циклов записи
1D DS2423 4-Кбит энергонезависимое ОЗУ с внешними счетчиками
1F DS2409 2-канальный адресуемый ответвитель для подсетей
20 DS2450 4-канальный АЦП
21 (DS1921), (DS1921H),(DS1921Z) Датчик/регистратор температуры Thermochron™
22 DS1822 Недорогой датчик температуры
23 (DS1973), DS2433 4-Кбит ЭСППЗУ
24 (DS1904), DS2415 Часы реального времени (RTC)
26 DS2438 Интеллектуальный монитор батарейного питания с датчиком температуры и АЦП
27 DS2417 Часы реального времени с прерыванием
28 DS18B20 Датчик температуры с регулируемым разрешением
2C DS2890 Одноканальный цифровой потенциометр
30 DS2760 Высокоточный монитор Li-Ion-батареи с датчиком температуры и тока, встроенный АЦП
33 (DS1961S), DS2432 1-Кбит ЭСППЗУ с процессором SHA-1
91 (DS1981) 512-бит СППЗУ (только по специальному заказу)
96 (DS1955), (DS1957B) Поддерживающий Java™ криптографический iButton (64-Кбайт ПЗУ, 64…134-Кбайт энергонезависимое ОЗУ)

как видите, номенклатура большая и есть место для творчества.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 261
Зарегистрирован: 26.12.06
Откуда: Санкт-Ленинград
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.03.07 18:44. Заголовок: Re:



 цитата:
DS1990A

Общеизвестен, как ключ TouchMemory, он же - "таблетка" (для домофонов и других систем контроля доступа).

Obligatus Servus Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 79
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 09.03.07 19:45. Заголовок: Re:


Dmitry Dubrovenko пишет:

 цитата:
Общеизвестен, как ключ TouchMemory


он самый , на основе информации от КЕА можете "слепить" такую же систему доступа за один вечер . А добавив сюда DS2415 можно добавить фиксацию времени или проход в строго определенное время, или по определенным дням... Возможности практически безграничны

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 71
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.03.07 22:33. Заголовок: Re:


Искал одно, нашел другое, думаю будет интересно

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 100
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 20.03.07 17:42. Заголовок: Re:


Я тут на досуге вот о чем подумал. Если при работе с одним датчиком температуры всегда считывать и его серийный номер (вернее только номер серии), то по нему можно определить и его принадлежность к конкретной серии (DS1820 - 10h, DS18B20 - 28h), а значит можно сделать так, чтобы программа в зависимости от типа датчика выбирала то ли считанные данные делить на два (один сдвиг вправо считанной температуры для случая DS1820) или делить на 16 для DS18B20 (сдвигать оба считанных байта, см. сообщение от 05.03.07). Т.е. можно сделать так что программа будет работать и с DS1820, и с DS18B20, т.е. будет универсальной. Правда знак температуры надо определять по одному из битов 3-7 байта байта MSB.
А если при этом еще применить четырехразрядный светодиодный индикатор с динамической индикацией (считали температуру, подали команду на преобразование температуры, в течении 1 сек (+/- 0,2 сек роли не играют) отображаем ранее считанную информацию, а в это время в датчике идет процесс преобразования температуры, далее все опять повторяется), то можно сделать малогабаритный и дешевый термометр с довольно высокими эксплуатационными характеристиками.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 86
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.03.07 18:57. Заголовок: Re:


Alberto пишет:

 цитата:
можно сделать так что программа будет работать и с DS1820, и с DS18B20, т.е. будет универсальной


Как раз, встала такая проблема, DS18S20 небыло.
С математикой еще не разобрался, но думал использовать первый полубайт
для вывода .5 или .0 , тоесть с точностью пол градуса, и хоронить его потом.
А следующие два полубайта преобразовывать, как в программе с DS18S20.

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 160
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 20.03.07 19:22. Заголовок: Re:


vintik пишет:

 цитата:
первый полубайт
для вывода .5 или .0 , тоесть с точностью пол градуса

Если Вы будете использовать DS18B20, для того чтобы получить точность 0.5 градуса следует обнулить биты 0,1,2 в младшем байте.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 87
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.03.07 11:39. Заголовок: Re:


Может попробовать так,
в счетчик битов ввести число 4, на четвертом бите проверить RA4,
если бит4 =1 то .5
если бит4 =0 то .0
Затем в счетчик битов ввести число 8, и считать байт, операция деления отпадет,
дальше по программе..
Может ошибаюсь

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 88
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 21.03.07 12:01. Заголовок: Re:


Или,
поставить счетчик =12,
при совпадении с 4, снать инфу вывода RA4, сохранить в Flag
начиная с 5го бита, rlf Temp,F....???



Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 89
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 22.03.07 02:11. Заголовок: Re:


Alberto оказался прав, делением на 8 можно перейти с 18S20 на 18B20
практически не затронув материнской программы.
Скрытый текст


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 5
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.03.07 11:22. Заголовок: Re:


Здравствуйте уважаемые посетители данной ветки! Есть вопросы по датчику DS18B20. У меня есть в наличии только такой датчик. Как я понял, то в отличие от DS1820 значение температуры в нём кодируется двумя байтами. Причём, код температуры - в младшем полубайте старшего байта и старшем полубайте младшего. Биты 0, 1, 2, 3 младшего байта - признаки дробного значения температуры: 0 бит - 0,0625 градуса, 1 бит - 0,125, 2 бит - 0,25, 3 бит - 0,5 градуса. В старшем полубайте старшего байта - знак температуры (+/-). Переписав подпрограмму вычисления значения и знака температуры у меня получилось следующее:
Скрытый текст



Можно применить и деление на 16, но тогда будет использовано больше команд.
Вопрос к тем, кто уже прошёл эту стадию, всё-ли правильно?
Измеритель температуры работает, но верно-ли?


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 95
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.03.07 15:42. Заголовок: Re:


Может грубо, но так и в железе работает:
Скрытый текст


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 96
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 26.03.07 17:29. Заголовок: Re:


И еще, при охдаждении датчика не правильно показывает половинки градуса.
Т.е. -10,5 => -10 => -11.5 => -11 => -12.5 => -12
А если убрать доли градуса, то нормально, работает

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 9
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 11:10. Заголовок: Re:


Переписал код преобразования температуры.
Скрытый текст


У кого найдётся возможность проверить в Протеусе и железе? Спасибо!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 10
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 11:16. Заголовок: Re:


vintik
Как у Вас получается так красиво выложить листинг программы? У меня почему-то всё прибито к левой стороне.

На датчике надпись:

DALLAS
18B20
0445C2
280AG

Это DS18B20?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 98
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 11:33. Заголовок: Re:


RW1ZK пишет:

 цитата:
Как у Вас получается так красиво выложить листинг программы? У меня почему-то всё прибито к левой стороне.


Вы наверное не используете кнопочку "моноширинный текст", у меня шестая с права.
RW1ZK пишет:

 цитата:
Это DS18B20?


Похоже, а что, так и не заработал???

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 11
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 11:50. Заголовок: Re:


Работает... У меня как в той песне Высоцкого: "все извилины заплёл...". Написал отдельную подпрограмму (причём несколько вариантов) перекодировки данных. Остановился на последней. Работать должна правильно. Смущает datasheet на DS18B20, в котором указано, что температуре -55 соответствует значение b'11111100' & b'10010000'. При преобразовании получается -54. Ошибка? Для примера беру -25 (b'11111110' & b'01100000') - после преобразования -25, всё верно. Может всё-таки не -55, а -54.9375 градуса? В диапазоне положительных температур перекодировка работает корректно.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 12
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 12:28. Заголовок: Re:


Максимальная положительная температура, которую показал девайс +127.5 !? (по datasheet не более +125). Заметил ещё один глюк: при понижении температуры с +100 в младшем разряде на индикаторе остаётся 0! (Для примера +99.00 или +99.50). Он не гасится! Т.Е. в программе необходимо предусмотреть гашение правого нуля. Да, пропустил: в п/п установки (или нет) признака добавления символа 1 (темп.>99 градусов) тоже заменить Temp_LSB на Temp_MSB.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 99
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 12:50. Заголовок: Re:


Поменял направление сдвига (rlf ->rrf), в положительном секторе стал
показывать корректно, но до +127, +128 показывает, как +95!?
В отрицательном секторе, вообще фигня какаято. На -1 показывает
-124, -2 > -125 и т.д.
Мне кажется, Вы теряете информацию при опросе DS, в материнской
программе, она лежит в одном байте, а в данном случае она разбивается
на два байта(если не ошибаюсь).
Пробовал только в Протеусе.


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 13
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 12:52. Заголовок: Re:


Для гашения нуля необходимо в п/п вывода на индикацию пары символов ",0" или ",5" после вывода символа "5" и возврата из ENTER_BF прописать строки:Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 14
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 13:18. Заголовок: Re:


Странно... Ниже отдельная п/п перекодировки.
Скрытый текст


В регистры Temp_МSB и Temp_LSB загружаем значения из datasheet:

+125°C          0000 0111 1101 0000       07D0h  
+85°C 0000 0101 0101 0000 0550h*
+25.0625°C 0000 0001 1001 0001 0191h
+10.125°C 0000 0000 1010 0010 00A2h
+0.5°C 0000 0000 0000 1000 0008h
0°C 0000 0000 0000 0000 0000h
-0.5°C 1111 1111 1111 1000 FFF8h
-10.125°C 1111 1111 0101 1110 FF5Eh
-25.0625°C 1111 1110 0110 1111 FF6Fh
-55°C 1111 1100 1001 0000 FC90h


Мне кажется, что Протеус врёт. Девайс больше +127.5 не показывает. Показания замирают на вышеуказанном значении.
Просьба к модератору форума: было-бы неплохо иметь возможность прикреплять файлы, чтобы не засорять экран листингом программы.





Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 108
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 28.03.07 20:23. Заголовок: Re:


Вот как я передалал программу ds1820.asm из рассылки К.Е.А. Красным цветом отмечены мои "переделки" для работы с DS18B20:
 
;----------------------------------------------------------
; Определение и вывод на индикацию знака температуры (+/-).
;----------------------------------------------------------
btfsc Temp_MSB,7 ; Бит 7 равен "0"
goto MINUS ; "НЕТ" - переход на п/п MINUS
movlw 2Bh ; "ДА" - выводим символ "+"
bsf PortA,RS ;
call ENTER_BF ;

;----> Возврат по стеку из ПП ENTER_BF.
goto SDVIG ; Переход на п/п SDVIG
;
MINUS:
movlw 2Dh ; Выводим символ "-"
bsf PortA,RS ;
call ENTER_BF ;
;
;----> Возврат по стеку из ПП ENTER_BF.
;----------------------------------------------------------
; Перевод двоичного числа младшего байта температуры
; из отрицательной области температур в положительную.
;----------------------------------------------------------
comf Temp_MSB,F ; Инвертировать байт Temp_MSB

comf Temp_LSB,F ; Инвертировать байт Temp_LSB
incf Temp_LSB,F ; Увеличить байт Temp_LSB на единицу
btfsc Status,C ; Был перенос?
incf Temp_MSB,F ; "ДА" - инкрементировать байт Temp_MSB
;============================================================================================
; Подпрограмма обработки содержимого младшего байта температуры.
;============================================================================================
; Деление числа, записанного в младшем байте температуры, на 2
; и запись, в бит №0 регистра Flag, признака символов "0" или "5".
;--------------------------------------------------------------------------------------------
SDVIG clrf Flag ;
btfsc Temp_LSB,3 ; Бит 3 байта Temp_LSB равен "0"
bsf Flag,0 ; "НЕТ" - признак 0,5 градуса
; "ДА" - нет 0,5 градуса
bcf Temp_LSB,0 ;Обнуляем биты 0-3 байта Temp_LSB
bcf Temp_LSB,1 ;
bcf Temp_LSB,2 ;
bcf Temp_LSB,3 ;

swapf Temp_LSB,F ; Меняем местами полубайты байта Temp_LSB
swapf Temp_MSB,W ; Меняем местами полубайты байта Temp_МSB с занесением результата
; в регистр W
addwf Temp_LSB,F ; Складываем число в Temp_LSB с содержимым регистра W с сохранением
; результата в Temp_LSB
; Дальше по тексту программы

На данном этапе в ячейке Temp_LSB находится значение температуры в шестнадцатиричном формате готовое к двоично-десятичному преобразованию. Все. Буду очень признателен, если кто проверит на реальном устройстве. У меня нет датчика DS18B20.


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 22
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.03.07 21:45. Заголовок: Re:


Alberto пишет:

 цитата:
Вот как я передалал программу ds1820.asm



Увы, к сожалению не фурычит. Прогнал в MPLAB. Ситуация следующая: В зоне температур от +125 до -0.5 градуса всё работает как часы...
Кавардак начинается ниже температуры -1 градус... Вместо -1 получается результат -2 градуса, вместо -10 выдаёт -11, вместо -25 -> -26. Но -55 получается чётко! Вот с этим подводным камнем столкнулся и я. И мне кажется, что я его обошёл (обошёл ли?). Теперь надо найти вариант уменьшения числа команд. Убедительная просьба проверить то, что получилось у меня.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 23
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.03.07 09:47. Заголовок: Re:


Ниже ещё один переработанный вариант под DS18B20. П/программа стала меньше на 3 команды, убран цикл подсчёта количества сдвигов.
Скрытый текст

Верхний предел измеренной температуры равен +127.5 градуса. С отрицательным значением проблема (мне бы на своё служебное место криогенную камеру, на худой случай холодильник...).

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 111
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 29.03.07 12:19. Заголовок: Re:


RW1ZK пишет:

 цитата:
Увы, к сожалению не фурычит. Прогнал в MPLAB.


Не может быть, я ее проганял в MPLAB'е, работает четко. Вот полный текст переработки, загоните в MPLAB, попробуйте. Подставлял числа с даташита. Все Ok.

;============================================================================================= 
LIST p=16F84a ; Используется м/контроллер PIC16F84A.
__CONFIG 03FF1H ; Бит защиты выключен, WDT выключен, XT-генератор.
;=============================================================================================
; Определение положения регистров специального назначения.
;=============================================================================================
IndF equ 00h ; Доступ к памяти через FSR.
PC equ 02h ; Счетчик команд.
Status equ 03h ; Регистр Status.
FSR equ 04h ; Регистр косвенной адресации.
PortA equ 05h ; Регистр Port A.
TrisA equ 05h ; Регистр Tris A-банк1.
PortB equ 06h ; Регистр Port B.
TrisB equ 06h ; Регистр Tris B-банк1.
;=============================================================================================
; Определение названия и положения регистров общего назачения.
;=============================================================================================
N equ 0Ch ; Счетчик битов.
Temp equ 0Dh ; Многофункциональный регистр временного хранения.
Temp_MSB equ 0Eh ; Байт знака температуры (старший байт).
Temp_LSB equ 0Fh ; Байт значения температуры (младший байт).
Flag equ 10h ; Регистр флагов.
Count equ 11h ; Многофункциональный счетчик.
LED0 equ 12h ; Регистры двоично-десятичного
LED1 equ 14h ; преобразования.
;=============================================================================================
; Определение места размещения результатов операций.
;=============================================================================================
W equ 0 ; Результат направить в аккумулятор.
F equ 1 ; Результат направить в регистр.
;=============================================================================================
; Присваивание битам названий.
;=============================================================================================
C equ 0 ; Флаг переноса-заема.
Z equ 2 ; Флаг нулевого результата.
RP0 equ 5 ; Бит выбора банка.
DQ equ 4 ; Бит порта A для управления DS1820.
RW equ 0 ; Бит №0 регистра PortA (вывод RA0 - линия RW).
RS equ 1 ; Бит №1 регистра PortA (вывод RA1 - линия RS).
E equ 2 ; Бит №2 регистра PortA (вывод RA2 - линия E).
BF equ 7 ; Бит №7 регистра PortB.
;=============================================================================================
org 0 ; Начать выполнение программы
goto START ; с подпрограммы START.
;*********************************************************************************************



START:
movlw b'11111110' ; Здесь добавляем данные с даташита
movwf Temp_MSB ;

movlw b'01101111' ; В данном случае -25,0625 градуса
movwf Temp_LSB ;

;----------------------------------------------------------
btfsc Temp_MSB,7 ; Bit 7 igual a "0"
goto MINUS ; "NO"
movlw 2Bh ; "SI"
bsf PortA,RS ;
call ENTER_BF ;
;
;----> Возврат по стеку из ПП ENTER_BF.
goto SDVIG ;
;
MINUS movlw 2Dh ;
bsf PortA,RS ;
call ENTER_BF ;
;
;----> Возврат по стеку из ПП ENTER_BF.
;----------------------------------------------------------
; Перевод двоичного числа младшего байта температуры
; из отрицательной области температур в положительную.
;----------------------------------------------------------
comf Temp_MSB,F ;

comf Temp_LSB,F ;
incf Temp_LSB,F ;
btfsc Status,C ;
incf Temp_MSB,F ;
;
;============================================================================================
; Подпрограмма обработки содержимого младшего байта температуры.
;============================================================================================
; Деление числа, записанного в младшем байте температуры, на 2
; и запись, в бит №0 регистра Flag, признака символов "0" или "5".
;--------------------------------------------------------------------------------------------
SDVIG clrf Flag ;
btfsc Temp_LSB,3 ;
bsf Flag,0

bcf Temp_LSB,0
bcf Temp_LSB,1
bcf Temp_LSB,2
bcf Temp_LSB,3

swapf Temp_LSB,F ;
swapf Temp_MSB,W ;

addwf Temp_LSB,F

; В регистре Temp_LSB лежит готовое шестнадцатиричное значение.

;--------------------------------------------------------------------------------------------
; Установка (или нет) признака добавления (к показаниям) символа "1"
; (признак устанавливается при температуре от 100 градусов и выше).
;--------------------------------------------------------------------------------------------
movlw .100 ;
subwf Temp_LSB,W ; Temp_LSB - .100 = ? Результат - в W.
btfss Status,C ; Результат положительный или отрицательный?
goto BIN2_10 ; Если отрицательный, то признак добавления символа "1"
; не устанавливается (бит №7 регистра Flag=0).
bsf Flag,7 ; Если положительный, то устанавливается
; (бит №7 регистра Flag=1).

BIN2_10:
goto $


ENTER_BF:
return

end ; Конец программы.


Проверьте. Ошибки нет.
В Вашей программе уже есть ошибка. К байту Temp_LSB после инвертирования нужно прибавить единицу и если есть переполнение, то и к байту Temp_MSB, поднимите исходник, убедитесь.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 112
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 29.03.07 13:04. Заголовок: Re:


Вот здесь

http://up-file.com/download/8f551c467316/ds18b20.asm.html

я выложил полный текст программы Корабельникова Е.А., переделанный под DS18B20. Изменения выделены, погоняйте в MPLAB'е (там есть четыре заремированных строки, найдете без проблем). Я гонял вчера, работает четко. На работе у меня стоит испанская винда и работать корректно с русскими символами в MPLAB'е я не могу. Поэтому есть только те комментарии, что есть. Пробуйте.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 25
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 29.03.07 14:51. Заголовок: Re:


Alberto пишет:

 цитата:
Проверьте. Ошибки нет.



Работает на УРА!
Вот так наверное будет лучше:
Скрытый текст

На две команды меньше.
За ссылку спасибо. С меня и крабы!

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 100
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 11:22. Заголовок: Re:


RW1ZK пишет:

 цитата:
Мне кажется, что Протеус врёт. Девайс больше +127.5 не показывает.




Симулятор, он и есть симулятор, и конечно же необходима проверка в железе.
По тому, я всегда оговаривался, что симулировал в Рroteus, или железе.

Alberto пишет:

 цитата:
я выложил полный текст программы Корабельникова Е.А., переделанный под DS18B20.


Скачал Ваш исходник, проверил в Рroteus, и все бы хорошо, если бы не
ошибка на температуре -32.
Показывает:
-31 = -31
-32 = -16 ???
-33 = -33
Проверялось в Протеусе, по этому желательно перепроверить Вашими, доступными
методами.
Ели можно, то выложу проект для Протеуса, в котором есть исходник(.ASM), для
работы и с 1820 и с 18b20, инициализация ЖКИ, которая работает и в Протеусе,
и в железе.
Спрашиваю по тому, что выложенная информация, на файлообменнике, так или
иначе, становится общедоступной.
К сожалению, я так и не запустил инициализацию ЖКИ по флагу BF в Протеусе,
хотя в железе все работает отлично. Это пример того, что симулятор остается
симулятором, не более, но все же, жизнь немного облегчает ИМХО.


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 115
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 30.03.07 14:29. Заголовок: Re:


В тексте программы есть четыре заремированные строки, что то типа
movlw      b'11111110' 
movwf Temp_MSB
movlw b'01101111'
movwf Temp_LSB

в них я подставлял значения из даташита (попробуйте в MPLAB'е, не так красиво как в Протеусе, но... если понять принцип, то надежнее однозначно). А по поводу Протеуса, Вы сами сказали - "симулятор". Главное понять принцип и то, что нужно получить. У меня нет DS18B20, поэтому в железе проверить не могу, но могу дать 99,9% гарантии что все работает (оставлю 0,01% на опечатки). Подождем, может у кого-либо есть данный датчик и он сможет проверить работу программы в реальном устройстве.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 28
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 15:17. Заголовок: Re:


vintik пишет:

 цитата:
Скачал Ваш исходник, проверил в Рroteus, и все бы хорошо, если бы не
ошибка на температуре -32.
Показывает:
-31 = -31
-32 = -16 ???
-33 = -33



Прогнал в MPLAB. Действительно так! Вместо -32 получается -16!!!

Temp_LSB b'00000000'
Temp_MSB b'11111110'

Рабочий девайс у меня есть. В зоне положительных температур проверен, глюков нет. А по отрицательным проверить не смогу, тем более до таких температур. Зима закончилась...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 101
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 15:41. Заголовок: Re:


Alberto пишет:

 цитата:
У меня нет DS18B20, поэтому в железе проверить не могу


У меня есть, но проверить вжелезе тоже не могу,- нет такой температуры
RW1ZK пишет:

 цитата:
Прогнал в MPLAB. Действительно так!


            comf       Temp_MSB,F  ; Все биты байта Temp_MSB инвертируются 
comf Temp_LSB,F ; биты младшего байта температуры инвертируются
incf Temp_LSB,F ; биты младшего байта температуры инвертируются
btfsc Status,2 ; Был перенос?
incf Temp_MSB,F ; "ДА" - инкремент регистра Temp_MSB
; и к результату прибавляется 1.

Попробуйте проверять битом Z.
Не знаю почему, но бит С Status, на перенос не реагирует.

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 102
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 18:17. Заголовок: Re:


RW1ZK пишет:

 цитата:
Теперь всё верно.



А чтож верно, Вы в морозилку датчик помещали!??
С половинками градуса...., перед инверсией наверное нужно
сдвинуть влево оба байта, тогда третий бит в LSB останется живой,
а на третий MSB нам начхать , его заменит второй, неся
ту же информацию.
А если сдвинуть два раза, то и точность можно увеличить, ИМХО.

Пошевелил извилиной, хоть она и прямая , но выдала, что
двигать лучше вправо, тогда останеся живой седьмой бит LSB,
который несет в себе инфу.
Или переписывать в другой регистр через RLF и Status,C.


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 116
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 30.03.07 18:35. Заголовок: Re:


vintik пишет:

 цитата:
Не знаю почему, но бит С Status, на перенос не реагирует.


моя вина, каюсь. Команда incf влияет только на флаг Z и ни на какие больше.
vintik пишет:

 цитата:
перед инверсией наверное нужно сдвинуть влево оба байта


а можно объяснение. Зачем Вам их сдвигать влево?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 103
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 19:08. Заголовок: Re:


Alberto пишет:

 цитата:
Зачем Вам их сдвигать влево?


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


Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 117
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 30.03.07 19:47. Заголовок: Re:


vintik пишет:

 цитата:
это третий бит LSB, а он, теряется при преобразовании в положительное число


почему? Вот кусок кода
SDVIG: 
clrf Flag ; Очистить регистр флагов
btfsc Temp_LSB,3 ; Определить знак температуры. Бит 3 регистра Temp_LSB равен "0"?
bsf Flag,0 ; "НЕТ" - установить признак отрицательной температуры (бит 3 = "1")
; "ДА" - программа выполняется дальше
bcf Temp_LSB,0 ; Обнулить биты 0-3 регистра Temp_LSB
bcf Temp_LSB,1 ;
bcf Temp_LSB,2 ;
bcf Temp_LSB,3 ;

swapf Temp_LSB,F ; Поменять местами полубайты байта Temp_LSB
swapf Temp_MSB,W ; Поменять местами полубайты байта Temp_MSB с сохранением
; результата в регистре W

addwf Temp_LSB,F ; Сложить значение в регистре Temp_LSB с содержимым
; регистра W с сохранением результата в нем же, т.е.
; своеобразный аналог четырех сдвигов вправо обоих регистров

где видно что сначала определяется признак наличия половинки градуса и при его наличии выставляется флаг (bsf Flag,0). Другое дело что текст описания не откорректирован, это моя вина, просто как я уже писал Винда у меня испанская и в MPLAB'е у меня вот такая картинка

и ничего поделать не могу (компьютер на работе, винда лицензионная, испанская).
Как Вы проверяли программу? Я прогнал в MPLAB'е, никаких проблем. Ничего не теряется.
Вкратце опишу процедуру преобразования отрицательных чисел (считаем что по биту 7 байта Temp_MSB знак уже определен):
имеем -25,0625 - это 1111 1110 0110 11111
инвертируем его: 0000 0001 1001 0000
инкрементируем: 0000 0001 1001 0001
определяем наличие половинки градуса (бит 3 байта Temp_LSB, выделено красным), выставляем признак наличия (bsf Flag,0), меняем местами тетрады обоих байтов: 0001 0000 0001 1001, из них берем то, что выделено красным, получаем 0001 1001 - это 25. Где Вы увидели потерю половинки байта? Проделайте те же процедуры для любого другого значения... и привидите мне аргументированное (с примерами) возражение. Еще раз прошу прощения за то, что не исправил комментарии, но это объективные причины и тут я бессилен.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 104
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 20:49. Заголовок: Re:



Не знаю что происходит, но, при охлаждении датчика
температура высвечивается в порядке:
-1,5 -1,0 -2,5 -2,0 -3,5 -3,0
В исходнике (DS1820.asm) такого нет, работает корректно:
-1,0 -1,5 -2,0 -2,5 -3,0 -3,5

Поверте мне наслово.

И дело не в комментариях, а в работе, извините, если чемто огорчил, но
в математике пока никакой, надеюсь пока




Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 105
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 21:25. Заголовок: Re:


RW1ZK, вот ссылка
на адаптированный под DS18B20 исходник, попробуйте его, что он Вам покажет, и
сравните с работой сегоднешнего.
Я свой охлаждал в морозилке, или нагревал паяльником.

А файл, удалю через пару часов.

Я не МАГ, я только учусь. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 30
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 30.03.07 21:28. Заголовок: Re:


vintik пишет:

 цитата:
А чтож верно, Вы в морозилку датчик помещали!??


Увы, нет. Конструкция осталась на служебном месте и проверить смогу только в понедельник вечером.
Таблица кодировки отрицательных чисел следующая:
-0.5 -> FFF8H
-1.0 -> FFF0H
-1.5 -> FFE8H
-2.0 -> FFE0H
-2.5 -> FFD8H
-3.0 -> FFD0H
И так далее...
Ниже злополучный кусок кода. Подставляя в Temp_MSB и Temp_LSB значения от FFF8H и меньше всё получается верно.
Скрытый текст


Прогоните в MPLAB. Конечный результат соответствует исходному коду.
P.S. Файл скачал, можно убивать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 55
Зарегистрирован: 25.12.06
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 31.03.07 02:38. Заголовок: Re:


Уважаемые коллеги.
Перечитал то что написано, после чего настроение резко улучшилось, так как я убедился в том, что происходит не “тусовка”, а предметный разговор думающих людей, которые реально стремятся решить конкретную техническую задачу и разговаривают на одном языке, причем, вполне корректно.
Между прочим, это достаточно большая редкость и это нужно всячески ценить.
То, что имеются какие-то “непонятки” и люди еще до конца “не притерлись” друг к другу, абсолютно нормально и естественно (эти дела “с реактивным свистом” не делаются).
Я бы сильно удивился, если бы этого не было.
Так или иначе, именно это и есть реальная работа (нормальный, рабочий процесс), которая рано или поздно принесет свои “девиденды”.
Не ошибается только тот, кто не работает. Банально? Вне всякого сомнения, но это и есть истина, только уставшая.
“Первопроходцем” быть всегда трудно, и для этого, как минимум, нужно иметь “хулиганские” задатки и быть не из робкого десятка.
А вот это уже очень серьезно и весомо. Это называется “бойцовским” характером, который в магазине не купишь ни за какие деньги, но который каждый в себе может воспитать, если не будет шарахаться от каждого чиха и не будет занимать наблюдательную (выжидательную) позицию.
Ну получил “фингал”. Эка невидаль. Весь мир на “фингалах” учится, потому и развивается. Так, по определению, лучше всего “мозги прошибает”.
Те, кто не понимают этой аксиомы, многое теряют.
Для того чтобы ее по-настоящему понять, нужно заполучить целую “партию фингалов” (по другому как-то не получается), причем, с олимпиийским спокойствием и осознанным “бросанием на амбразуру”. Потом их будет меньше.
Лично мне, очень приятно видеть этот процесс “вживую” в том смысле, что из этого однозначно будет толк (он, кстати, уже есть).
Пожелание: обратите внимание на словосочетание “олимпийское спокойствие” и побольше внимания четкой, ясной и однозначной аргументации, так как много “недоразумений” возникает из-за “разнобоя”, связанного с неоднозначностью и недомолвками.





Евгений Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 165
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 0
ссылка на сообщение  Отправлено: 31.03.07 18:00. Заголовок: Re:


Alberto пишет:

 цитата:
что значит подружить

Программа "Cyra.exe " не русифицирует винду, а просто исправляет кодировку. Она вносит небольшие изменения в реестр, позволяющие использовать кодировку "Windows-1251". Поможет ли это в Вашем случае, я не знаю, но попробовать стоит. Если не поможет, есть ещё один способ - просто перетащить шрифты с Русской винды в Испанскую. Сделать это можно с помощью проги "PBFSetup.exe" , но предварительно нужно сохранить шрифты из испанской винды, на всякий случай.
Скачать архив

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 121
Зарегистрирован: 12.02.07
Откуда: Аргентина, Линкольн
Рейтинг: 0

Награды: Отлично!',
ссылка на сообщение  Отправлено: 31.03.07 18:20. Заголовок: Re:


Пётр пишет:

 цитата:
просто перетащить шрифты с Русской винды в Испанскую


это не помогло. Спасибо за программу , сейчас качаю. Буду пробовать. Есть еще один выход: поставить две винды, но тогда шефа могут поставить в "интересную позу" за использование пиратской копии , а потом он тоже самое сделает со мной , а это уже совсем не смешно .

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 31
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.04.07 12:57. Заголовок: Re:


Заметил ещё один глюк программы ds1820.asm. При выводе температуры меньше 10 градусов остаётся незначащий ноль. Для его гашения необходимы изменения в тексте программы:
Скрытый текст

Далее по тексту...

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 56
Зарегистрирован: 25.12.06
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.04.07 15:05. Заголовок: Re:


Иван, это не глюк. Просто, на этом этапе работы, я не ставил себе целью гашение незначащих нулей.
Обычно, такого рода “обслуга” задействуется на конечной стадии конструирования устройства, после того, как все более “глобальные” задачи последовательно решены.
Так что Вы сработали на опережение, что, как сами понемаете, вовсе не есть плохо.
Я же планирую сначала перевести программы DS1820_3 и _4 на шаг измерения 0,1 градус и после этого погасить незначащие нули.
Если Ваша процедура оптимальна, то она будет использована.
Спасибо за активное участие в обсуждении заявленной темы. Успехов Вам в работе!


Евгений Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 108
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.04.07 15:46. Заголовок: Re:


Тоже пытался убрать:


Решил проблему через флаги, чистит нули и с передеди и с зади:
Скрытый текст


Минусы, задействован бит в регистре Flag.

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 38
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.04.07 14:01. Заголовок: Re:


Сваял программу (на основе рассылки в рамках самоучителя) для чтения и вывода на ЖКИ содержимого ПЗУ температурных датчиков серии DSxxxx. Со своим датчиком DS18B20 проверил, работает ОК.
Скрытый текст

Проверьте на других датчиках... Please...


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 109
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.04.07 18:25. Заголовок: Re:


RW1ZK пишет:

 цитата:
Сваял программу (на основе рассылки в рамках самоучителя) для чтения и вывода на ЖКИ содержимого ПЗУ температурных датчиков серии DSxxxx. Со своим датчиком DS18B20 проверил, работает ОК.


ЗдОрово
Заготовки действительно суперские, а самое главное универсальные. можно ваять чего хош
Тоже, сдалал термометр-термостат, на основе материалов самоучителя, управляется одной кнопкой.
Жаль, что нет возможности обмена файлами, всетаки копировать текст, а потом его корректировать, не совсем то

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 39
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.04.07 18:32. Заголовок: Re:


Да, жаль... Есть предложение обмениваться файлами через email или ICQ... Мой EMAIL: rw1zk@mail.ru ICQ: 243878751.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 110
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.04.07 19:19. Заголовок: Re:


Полностью солидарен с Вами ( _vintik@mail.ru ), ICQ не имею, и не жалею об этом
Вышлите Ваш файл пожалуйста, а то я его скопировал, а он весь получился в одну строчку, и набирать...
ну уж очень большой кусок

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 111
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 10.04.07 22:38. Заголовок: Re:



Хороший инструмент, Спасибо
А так будет еще лучше

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 40
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 08:43. Заголовок: Re:


У меня выдаёт как на нижнем снимке. А верхний снимок, это что?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 112
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 09:05. Заголовок: Re:



А я сам, сначала не понял, а когда стал разбираться, то увидел, что из первой четверки
теряются два байта.
Заменил в; п/п преобразования данных в код ЖКИ HD44780
return на goto, и все заработало

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 113
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 09:23. Заголовок: Re:


RW1ZK пишет:

 цитата:
прикрепить изображение?


Так, вот же он, "мужик в пиджаке"
Четырнадцатый с права, потом на открывшемся окошке, указываете путь к рисунку на
ПК, затем в левом нижнем углу жмете "загрузить" и после загрузки на сервер, выбираете
вариант вывода Вашего рисунка.


Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 42
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 14:59. Заголовок: Re:


Исправленная программа Read_PZU: http://slil.ru/24219277

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 114
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 18:37. Заголовок: Re:


RW1ZK пишет:

 цитата:
Исправленная программа


Проверил с 18В20 работает корректно, а прога получилась даже короче

Так что, можно ложить в копилку


Р.С. Roslik открыл новую кнопку "свернутый текст", удобно, я все "моноширенные" тексты
попрятал

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 60
Зарегистрирован: 25.12.06
Откуда: Россия, Липецк
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 19:15. Заголовок: Re:


Иван, а не желаете ли Вы опубликовать свою программу в "Практикуме..."?
Если такое желание есть, то готовьте документацию и пришлите ее мне.
Авторство - Ваше.
P.S. Хорошая работа.

Евгений Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 43
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 20:24. Заголовок: Re:


ikarab пишет:

 цитата:
Авторство - Ваше.


Как же так, за основу взята Ваша работа...
ikarab пишет:

 цитата:
готовьте документацию и пришлите ее мне


Сделаем.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 44
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 0
ссылка на сообщение  Отправлено: 11.04.07 22:13. Заголовок: Re:


vintik пишет:

 цитата:
свернутый текст


Спасибо, тоже отредактировал.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 76
Зарегистрирован: 26.12.06
Откуда: Украина, Новомосковск
Рейтинг: 0
ссылка на сообщение  Отправлено: 12.04.07 08:10. Заголовок: Re:


Alberto пишет:

 цитата:
или все таки Virtual PC


Именно так, опечатка.

Чюдес не бывает, особенно когда касается электроники. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 116
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 13.04.07 13:06. Заголовок: Re:


ikarab пишет:

 цитата:
Альберто, процесс еще не дошел до стадии цепной реакции (контуры обозначены не до конца).
По моим прикидкам, она начнется с п/раздела 5/4 и далее. Может быть будет некоторая задержка с "перевариванием" информации, но это совершенно естественно. Люди не роботы.


Процесс идет и даже вырывается на белый свет


Немного флейма,
Хочу поблагодарить за реальную помощь!
Dmitry Dubrovenko - всяческая поддержка на форуме
Alberto - много полезных программ
Пётр - рограмма перевода текста для HD44780
RW1ZK - программа перевода 2\НЕХ для HD44780
Roslik - программа перевода 2\10


Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 117
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.04.07 09:52. Заголовок: Re:


Пётр пишет:

 цитата:
Если нужны будут ещё какие-то программы для компа - пишите



Вы гдето оговаривались, что делали термостат для 18В20, с точностью в десятые
градуса, можно попросить исходник?

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


Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 188
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 1
ссылка на сообщение  Отправлено: 14.04.07 10:28. Заголовок: Re:


vintik пишет:

 цитата:
что делали термостат для 18В20

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

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 190
Зарегистрирован: 12.01.07
Откуда: Приднестровье
Рейтинг: 1
ссылка на сообщение  Отправлено: 14.04.07 11:30. Заголовок: Re:


vintik пишет:

 цитата:
Загвоздка получается в сравнении измеренной отрицательной и установленной
положительной

А в чём собственно проблема, ведь сравнивать можно косвенным методом. Если 7 бит установлен в 1, значит температура отрицательная если сброшен, положительная.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 119
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.04.07 11:59. Заголовок: Re:


Заработало!
С помощью седьмых битов старших регистров изм. данных и уст.
порога, все решилось.
Достаточно было расписать логику на бумаге, так что спасибо
Петр, за хороший совет, данный вовремя.
Причем, проблемы с минусами, вообще не затронулись.
Все уже крутится в железе.



Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 50
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 1
ссылка на сообщение  Отправлено: 20.04.07 18:19. Заголовок: Re:


Кто разобрался в кодировании значений порогов температуры (регистры TH, TL EEPROM)? Читаю datasheets... 7-й бит ... 0 -> температура положительная, 1 -> температура отрицательная. Остаются биты 6-0. Максимальное число = 127. Смотрю листинг программы DS1820_a.asm. Значение верхнего порога TH: +25 градусов Цельсия ->32H, перевожу в десятичный вид -> 50. Вывод: необходимое значение температуры умножить на 2 и загнать его в регистр TH или TL (по необходимости). А что в сухом остатке... Т.к. максимально возможное число для 7-ми бит (в восьмом знак температуры) равно 127-ми, то получается, что есть возможность установить максимально возможный предел в 63,5 градуса? Что-то не так...
Help...

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 149
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 23.04.07 13:56. Заголовок: Re:


Вообще то в данном случае (DS1820_a.asm) регистры TH и TL не используются по своему прямому назначению (команда Alarm Search (ECh)). В данном случае они были использованы как энегронезависимая память находящаяся непосредственно в датчике (зачем добру пропадать). Здесь просто считывается число из одного из регистров (или TH, или TL: в данный момент под рукой нет листинга программы DS1820_a.asm, поэтому точно сказать не могу) и сравнивается с измеренной температурой. Отсюда и указанный Вами предел. В родном применении точность сравнения была в 1 градус, т.е. бит 7 знак температуры, а оставшиеся биты сама температура с точностью в один градус (111 1111 = 127).

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 153
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 24.04.07 13:18. Заголовок: Re:


Меня попросили еще раз выложить исходник с исправлениями для работы с датчиком DS18B20, выложил сюда:
http://up-file.com/download/ec0bc3882311/DS18B20.zip.html
правда хочу напомнить, что это версия без гашения левого незначащего нуля и с разрешением в 0,5 градуса. Все изменения выделены, так что при желании можно те же изменения внести в более новые исходники из рассылки.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 53
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 1
ссылка на сообщение  Отправлено: 24.04.07 20:10. Заголовок: Re:


Здесь полная версия термометра с гашением незначащих нулей и разрешением в 0.5 градуса для DS18B20.
http://slil.ru/24284622

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 128
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 24.04.07 23:07. Заголовок: Re:


Интересно, получилось на 11команд короче, добавил еще одну метку
ENTER_BFА bsf PORTA, RS

Жаль, но проверить сейчас не получается

Да, жизнь, она как зебра.... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 156
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 25.04.07 19:42. Заголовок: Re:


RW1ZK пишет:

 цитата:
Здесь полная версия термометра с гашением незначащих нулей и разрешением в 0.5 градуса для DS18B20.
http://slil.ru/24284622


только что посмотрел Вашу программу и нашел одну ошибку (сам ее допустил, поэтому сразу обратил внимание), она уже обсуждалась здесь, поэтому повторяться не буду (для наводки Ваше сообщение от 30.03.07, сообщение Винтика и мое от того же числа). Это относится к неправильной работе при отрицательных температурах. Поищите, я на эти грабли уже наступил, хороший урок был . Почему не говорю где ошибка? Я так понимаю, что мы здесь новички в программировании, поэтому (лично мне) интереснее найти самому, если будут проблемы (сомневаюсь, но всяко бывает) - помогу.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 57
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 1
ссылка на сообщение  Отправлено: 25.04.07 20:48. Заголовок: Re:


Alberto пишет:

 цитата:
и нашел одну ошибку


Вот я и говорю, там есть над чем поработать.
А если серьёзно, то исправленная версия осталась на рабочем компе. Завтра выложу, если всё ещё есть необходимость. Банальная невнимательность! Вот так всегда, когда в наличии несколько компов... Честно говоря, этот проект мной практически заброшен. Жду, когда прийдёт мой заказ из чипинфо (ещё 4 датчика DS18B20). Потом будет продолжение. А пока разработка синтезатора на SAA1057 для FM приёмника и не только... В наличии есть 2 кварцевых фильтра на 25 мгц. Один с полосой пропускания 60 кгц, второй - 15 кгц. Хочу ещё собрать приёмник на 137 мгц для приёма спутников погоды серии NOAA.

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 157
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 26.04.07 12:50. Заголовок: Re:


RW1ZK пишет:

 цитата:
если всё ещё есть необходимость


думаю что имея все подсказки можно дать человеку и самому разобраться - это и полезнее и интереснее. Если будут затруднения, то другое дело.
RW1ZK пишет:

 цитата:
разработка синтезатора... собрать приёмник на 137 мгц для приёма...


А вот это для меня китайская грамота , может просто потому, что никогда не интересовало.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 58
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 1
ссылка на сообщение  Отправлено: 26.04.07 15:41. Заголовок: Re:


Alberto пишет:

 цитата:
и самому разобраться


Добро, на этом и остановимся...
Alberto пишет:

 цитата:
это для меня китайская грамота


Приёмник-ничего сложного. Сложнее разобраться с синтезатором. Пока на пике был RC генератор, схема синтезатора работала без проблем. Сейчас на пик поцепил кварц и схема заткнулась. Пока разбираюсь... Достала меня эта SAA1057!

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 36
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 08.05.07 03:32. Заголовок: Ключи-таблетки от домофонов


Здравствуйте! Не могу считать код из ROM ключа-таблетки от домофона. Может кто-нибудь подскажет где скачать даташит на эти таблетки?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 66
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск
Рейтинг: 1
ссылка на сообщение  Отправлено: 08.05.07 06:41. Заголовок: Re:

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 177
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 08.05.07 15:25. Заголовок: Re:


А что за "таблетки"? Поконкретнее, они ведь разные есть. Я работал с DS1995A. Если что, могу помочь.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 37
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 14.05.07 00:32. Заголовок: Re:


Alberto пишет
 цитата:
А что за "таблетки"?


Если б я только знал название. На них же не написано. Пробовал считеть ROM посредством устройства для считывания ROM описанного в практикуме. Первый раз считалось что-то осмысленное (не знаю, может контакт ненадёжный был ). А потом полная читаются одни нули и хоть ты тресни. Думал увеличить время заряда паразитной ёмкости. Хрен там, увеличил почти до одной минуты - всё-равно читаются нули. Может там включается защита от считывания и этот флаг записывается в EEPROM? В общем нужна информация, а где взять - не знаю

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 182
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 14.05.07 12:35. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
На них же не написано.


как так? У меня все как на рисунке:

только надпись DS1990A не полукругом внизу, а в виде прямой линии на месте надписи DALLAS. Может просто вытерли? А иначе очень сложно определить конкретный тип.
Ruslan Lipin пишет:

 цитата:
Думал увеличить время заряда паразитной ёмкости.


с временными параметрами надо осторожно. У меня была похожая проблема. Я сначала разобрался с DS1990A, самый простой приборчик: имеет только серийный номер и ничего больше. Все заработало, сделал замок (работает уже почти год без единого сбоя), потом решил перейти на использование термометров DS1820, пробовал считать s/n (от простого к сложному) и все . Я по глупости своей посчитал что раз протокол один, то и заработать должно. Из десяти заработало только два. Увеличивал подтягивающий резистор, начинали работать еще некоторые. Дошел до 100 кОм - заработало восемь. Что я только не делал: и на форумы разные писал, и ... Потом взял еще раз даташит и прошелся по диаграммам. Оказалось что в даташите (русском), с которым я работал вначале, была ошибка в диаграмме. Для ключей было все равно 60 мкс или 90, а вот для термометров... Увеличил время и все пошло.
Если интересно могу скинуть мою старую программу для ключей, отображает на ЖКИ серийный номер, контрольную сумму и тип прибора. Я ее использовал для проверки замка на этапе изучения.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 38
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 01.06.07 08:42. Заголовок: Re:


Alberto Было бы интересно посмотреть на программу. А можно на мыло? ruslan2651@yandex.ru
И ещё ссылку на даташит, пожалуйста! Что касается надписи на ключе - тыльная его часть вклеена в пластиковый брелок, аккуратный такой, если отдеру брелок, то ключ рано или поздно потеряю и в свой подъезд больше не попаду

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1
Зарегистрирован: 10.04.07
Откуда: россия, москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.06.07 16:56. Заголовок: о закрытой части про 1-Wire + Proteus


"работаю", пока только разбираюсь в MPLAB 7.52.0.0 (с сайта www.microchip.ru) + Proteus 6.9.0.5 с сайта www.kazus.ru). Речь идёт о ПП считывания CRC с датчика DS18S20 с помощью кода "CRC_PZU.asm" предложенного Ikarab в самоучителе по 1-Wire.
Собственно грабли
1. - подключил в MPLAB схемку PIC16F84A + DS18S20 из Proteusа
2. - попытка №1, прописываю в свойствах DS18S20 в Proteusе серийный номер DS18S20 (например 112233445566)
2.1. - в результате DS18S20 в ответ на команду Read ROM (033h) выдаёт контроллеру следующий наборчик
2.2. - 19_00_00_33_44_55_66_10, где (19) -собственно CRC, (00_00_33_44_55_66) - якобы серийный номер DS18S20 и (10) - код семейства. думаю ладно, счас победю ...
3. - попытка №2 серийный номер DS18S20 - ABSDEF (шесть знаков hex)
3.1. - в ответ на Read ROM получаем 05_00_00_00_AB_CD_EF_10
3.2. - где (05) -собственно CRC, (00_00_00_AB_CD_EF) - якобы серийный номер DS18S20 и (10) - код семейства, пара нулей перед _AB тоже претерпела измения (покраснела).

получается што Proteus выдаёт в MPLAB не весь CRC, первые два числа серийного номера датчика не считываются.

вывод
- может я не так как нужно ввожу серийный номер DS18S20
- может DS18S20 в Proteusе думает совсем не так как я
- может Proteus считает что всё што нужно MPLABу он уже выдал, а на самом деле всё совсем не так
- может быть вообще всё совсем не так.

если у кого есть желание помогите пожалуйста разобраться, мозг уже кипит

если автор темы считает что это грабли Proteusа, то можно стести топик в тему про Proteus, но поскольку код "CRC_PZU.asm" - Ikarab из закрытой части самоучителя и относится к 1-Wire написал сюда.

как сюда архивчик с этими файлами закинуть?

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 192
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.06.07 17:16. Заголовок: Re:


kormovik пишет:

 цитата:
думаю ладно, счас победю ...


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 2
Зарегистрирован: 10.04.07
Откуда: россия, москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.06.07 17:28. Заголовок: Re:


на всякий случай ссылочка на архивчик с файлами http://kormovik.nm.ru/001/
если не затруднит проверьте пожалуйста, всё-таки спокойнее спать буду зная што это не я накосячил с протеусом.

P.S. железа пока нет, но собираюсь, токо учусь есщё.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 124
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг: 1
ссылка на сообщение  Отправлено: 28.06.07 19:43. Заголовок: Re:


kormovik пишет:

 цитата:
если не затруднит проверьте пожалуйста


http://slil.ru/24569748 Рабочая программа...
Почему у Вас программа начинается с адреса 100H? Сравните свою и эту программу... Найдите отличия...
Кстати: в версиях MPLAB 7.xx отдельно прописывать PortA, TrisA, EEData, IntCon, PC не нужно. Для подключения служит директива #include. Посмотрите на вышеуказанный листинг... Зачем у Вас подключён в проект линковщик?

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 195
Зарегистрирован: 26.12.06
Откуда: Одесса
Рейтинг: 0
ссылка на сообщение  Отправлено: 28.06.07 20:34. Заголовок: Re:


В протеусе меняются только три байта, очевидно они посчитали что этого достаточно.


При этом Scratch RAM свои значения не меняет, а должна.
В общем там вопросов больше чем ответов, если схема работает в железе, то
в протеусе могут быть сплошные ошибки.
Я его использую по очень осторожно, и никак не опираюсь на него.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 3
Зарегистрирован: 10.04.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 02.07.07 10:35. Заголовок: Re:


vintik пишет:

 цитата:
очевидно они посчитали что этого достаточно

, дааа, а я-то думал что мне в протеусе такое не встретится, теперь только в железе тестить.
Но как было просто и легко до этих граблей, эх ......

RW1ZK пишет:

 цитата:
Почему у Вас программа начинается с адреса 100H


я ещё только учусь и 90% в глухом тумане, но при старте с нулевого адреса MPLAB выдаёт
"MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x000000ca
Errors : 1"


 цитата:
Кстати: в версиях MPLAB 7.xx отдельно прписывать ....


я и не прописывал, пишу сам (так лучше понимаю) код к 1-Wire, но наступил на эти с CRC датчика, думал сам где-то напартачил и для очистки совести обратился к части кода от Ikarab "CRC_PZU.asm" - из закрытой части самоучителя.


 цитата:
Зачем у Вас подключён в проект линковщик?


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

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 136
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг: 1
ссылка на сообщение  Отправлено: 02.07.07 12:59. Заголовок: Re:


kormovik пишет:

 цитата:
а вот отсюда если можно то поподробнее


Линковщик, он же компоновщик, служит для соединения нескольких объектных файлов в один исполняемый. Объясняю по русски на 2-х пальцах: если Ваш проект слишком большой и не помещается в один файл, или Вам удобнее программу отлаживать по частям.., то сначала создаются объектные файлы (модули) см. ниже... После этого их компилируют (линкуют, компонуют) в один исполняемый. В вашем случае программа короткая, отследить её работу в MPLAB SIM не представляет ни какой трудности, поэтому линковщик не нужен. В проект подключаются: file.asm и file.inc


Объектный модуль (также — объектный файл, англ. object file) — файл с промежуточным представлением отдельного модуля программы, полученный в результате обработки исходного кода компилятором. Объектный файл содержит в себе особым образом подготовленный код, который может быть объединён с другими объектными файлами при помощи линковщика для получения готового исполняемого модуля либо библиотеки.
Объектные файлы представляют собой блоки машинного кода и данных, с неопределенными адресами ссылок на данные и процедуры в других объектных модулях, а также список своих процедур и данных. Линковщик собирает код и данные каждого объектного модуля в итоговую программу, вычисляет и заполняет адреса перекрестных ссылок между модулями. Также в процессе линковки происходит связывание программы со статическими и динамическими библиотеками (являющихся архивами объектных файлов).


Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 4
Зарегистрирован: 10.04.07
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 03.07.07 08:55. Заголовок: Re:


RW1ZK пишет:

 цитата:
Линковщик, он же компоновщик ......


Спасибо за подробное и доходчивое объяснение, "по русски на 2-х пальцах" очень просто и понятно.
Но остался открытым вопрос про старт с 0-го адреса, почему MPLAB, точнее наверное этот самый "Линковщик, он же компоновщик" выдаёт;
"MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x000000ca
Errors : 1"

Хотя это и не относится к теме ветки.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 137
Зарегистрирован: 26.12.06
Откуда: Россия, Заозерск, Мурманской обл.
Рейтинг: 1
ссылка на сообщение  Отправлено: 03.07.07 09:33. Заголовок: Re:


kormovik пишет:

 цитата:
почему этот самый "Линковщик, он же компоновщик" выдаёт...


Потому, что у Вас нет созданных объектных модулей, которые необходимо скомпоновать в один файл... Смотрите пост выше: ликовщик, он же компоновщик, для чего нужен... В Вашем случае имеется 1 исполняемый файл (программа). Удалите его из проекта и да пребудет с Вами счастье!

Удивление рождает жажду познания... Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 52
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 08.08.07 03:05. Заголовок: Re:


Alberto спасибо! Получил, приступил к колдоству. Отделил таблетку от ключа и выпал в осадок. Там ничего не написано. Пошёл в магазин. DS1990 - тютю. Пробовал работать с имеющимся экземпляром с помощью Вашей заготовки. Результат - читаются одни нули. У меня вопросик есть маленький. После того как ключ сформирует нулевой уровень отклика устройство должно ожидать, когда этот отклик завершиться (на линии снова установится 1)? Или же этот отклик устройство просто пережидает, а потом посылает команду чтения? В вашей заготовке ожидания завершения отклика (плавающая задержка) нет. Пробовал её врезать и... в общем так и не дождался завершения этого отклика даже спустя 1 минуту! Такое впечатление, что вместо начинки у этой хитрой таблетки стоит проволочная перемычка. Хотя подъезд мой открывает. Другой - ни в какую. Значит есть код. Может этой таблетки току не хватает. Если не достану DS1990 то буду наращивать ток, пока не спалю. Ещё раз спасибо! Рано или поздно я взломаю эту тему!

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 222
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 08.08.07 18:15. Заголовок: Re:


По правильному нужно дождаться импульса присутствия, но это была первая программа где я разбирался с шиной 1-Wire и я данный кусок кода просто не вписал. Если долго (сейчас не вспомню что-то около 1-1,5 мс) держать микроконтроллером шину в "0", то просто не будет заряжаться конденсатор таблетки и она работать не будет, т.е. логика такова:
МК посылает импульс сброса (480 мкс) потом выставляет "1" (за счет подтягивающего резистора) и читает импульс "присутствия" (уровень "0" от 60 до 240 мкс), который посылает таблетка через 15-60 мкс после окончания импульса сброса. Поиграйтесь со временем ожидания (оно у меня постоянное, хотя лучше сделать плавающую задержку). Только не забывайте что "таблетка" питается от конденсатора, который в свою очередь заряжается импульсами "1". У меня ест много довольно хороших описаний работы "таблеток" на русском языке, посмотрю дома. Если не забуду, завтра вышлю. На днях могу подправить программу, добавив ожидание (быстро не обещаю - на работе аврал). А палить не стоит , все ж таки хорошая вещь.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 53
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 09.08.07 00:55. Заголовок: Re:


Альберто. А в какой момент необходимо послать импульс сброса? Насколько я понимаю, если сделать это сразу после включения питания устройства, то очень может быть, что кондёр таблетки окажется ещё не заряженым, и следовательно она ведёт себя неадекватно. Может после включения питания необходимо выставить в линию единичку (посредством подтягивающего резистора) и подождать когда этот кондёр зарядиться (дождаться когда на линии появится 1), а потом начинать посылку импульса сброса. Затем, как Вы говорите через 15-60 мкс, таблетка должна сформировать отклик присутствия (уровень 0 на 60-240 мкс). После появления этого отклика (уровня 0 на линии) микроконтроллер должен тупо пережидать эти 240 мкс или всё-таки посредством плавающей задержки дожидается окончания этого отклика (дожидаться появления 1 на линии)? Сегодня попробую воспользоваться Вашим советом. Интуиция пдсказывает, что если кроме как 0 от этой таблетки мне дождаться так ничего не удалось, то нужно попытаться увеличить ток. У меня стоит резистор на 4,7кОм. Может стоит уменьшить этот номинал?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 224
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 09.08.07 13:03. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
Может после включения питания необходимо выставить в линию единичку


дело в том что "таблетка" не подключена к линии все время, т.е. процессор время от времени посылает импульсы сброса "в надежде" обнаружить "таблетку" на линии.
Ruslan Lipin пишет:

 цитата:
микроконтроллер должен тупо пережидать эти 240 мкс или всё-таки посредством плавающей задержки дожидается окончания этого отклика (дожидаться появления 1 на линии)


у меня тупо пережидает 300 - 400 мкс (сейчас уже не помню, а исходника под рукой нет), хотя правильнее дождаться появления "1".
Ruslan Lipin пишет:

 цитата:
У меня стоит резистор на 4,7кОм.


у меня тоже. Я сделал около 20 замков, с ними работает больше 300 "таблеток" (правда это были DS1990A) и никаких проблем. Похожая проблема у меня была с DS1820 (при активном питании). Но в той программе что я Вам выслал это уже исправлено.
Проверьте подтянули ли Вы 1-Wire шину именно к +5В, у меня как то было похожее: не запускался ЖКИ, а потом оказалось что я подключил переменный резистор к общему проводу (оба крайних вывода). Иногда так бывает. Замотаешься... и...
Вот здесь то описание, по которому я изучал (и добился своего) шину 1-Wire, плюс даташит конечно.
http://up-file.com/download/3785c7787680/iButton.rar.html
плюс схема как надо подключать, сначала у меня был использован вывод RA0 потом я перешел на RA4, но сути дела это не меняет, просто везде советуют для реализации шины 1-Wire использовать именно его, т.к. это вывод с ОК:
http://up-file.com/download/edead0178620/ds1990a.wmf.html


Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 236
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 10.08.07 12:29. Заголовок: Re:


Я сделал немного неправильно, что не написал как надо работать с программой. Включаете питание (к шине 1-Wire ничего не подключено), на индикаторе появляется надпись "Listo" ("Готов" по-русски, у нас не найти ЖКИ с русским знакогенератором) и устройство переходит в режим ожидания. При касании "таблетки" на экране высвечивается информация (код семейства, код устройства и CRC), для перезапуска надо отключить и включить питание. Я это сделал что бы было достаточно времени сравнить данные выгравированные на "таблетке" со считанными данными. Там есть строка:
STOP    goto    STOP

ее лучше заменить на переход на п/п задержки в 3-5 сек и начать весь цикл по новой.
Вчера собрал на макетке устройство. Так вот, все нули читаются в двух случаях:
1. если нет подтягивающего резистора;
2. если подключить неправильно таблетку.
Обод таблетки - это общий провод, а центр - это контакт шины. Посмотрите внимательно.

Еще импульс сброса должен быть от 480 до 960 мкс, это строка выделенная красным:
;--------------------------------------------------------------------------------------------- 
; Инициализация шины
;---------------------------------------------------------------------------------------------
DS_Init call Pin_HI ; Установка вывода в высокоимпедансное состояние,
; за счет подтягивающегося резистора, шина уст. в "1"
call Pin_LO ; Установка шины в "0"

movlw .49 ; К-во циклов для паузы в 10 мкс
call Pause_X ; П/п паузы в 10 мкс
call Pin_HI ; Установка вывода в высокоимпедансное состояние,
; за счет подтягивающегося резистора, шина уст. в "1"
return

у меня длительность импульса 490 мкс плюс несколько мкс на переключение из "0" в "1", может для Вашего экземпляра это очень мало? "Поиграйте" с этим значением (вплоть до 96 - это будет 960 мкс). Больше 1,2 мс не стоит, т.к. разрядится конденсатор "таблетки".


Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 54
Info: ок
Зарегистрирован: 10.01.07
Откуда: Россия, Хабаровск
Рейтинг: 0
ссылка на сообщение  Отправлено: 16.08.07 08:39. Заголовок: Re:


Альберто. Спасибо! Сохранил Ваши рекомендации и программу до лучших времён. Я вчера окончательно разочаровался в своей безымяной таблетке. С подтягивающим резистором у меня всё в норме, но даже с ним на линии при подключенной таблетке не устанавливается единица (я специально под эту проверку программу писал). Без таблетки - единичка, с таблеткой - ноль, хоть целую вечность жди. Затем стал уменьшать номинал подтягивающего резистора. Уменьшил до 430 Ом и только тогда с подключенной таблеткой на линии появилась единица. Только после этого через Вашу программу стали читаться одни единички. Складывается такое впечатление, что этот ключ тупее чем постоянный резистор. Конечно-же это не так. Сегодня подойду к домофону с мультиметром, может наступит осенение

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 257
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 16.08.07 12:16. Заголовок: Re:


Ruslan Lipin пишет:

 цитата:
с таблеткой - ноль, хоть целую вечность жди


попробуйте поменять полярность подключения "таблетки".
Ruslan Lipin пишет:

 цитата:
Складывается такое впечатление, что этот ключ тупее чем постоянный резистор.


я где-то встречал описание замка на чем-то похожем на "таблетку", но содержащем внутри именно постоянный резистор. И замок работал по принципу измерения сопротивления. Точнее ничего сказать не могу, сильно не вникал. Может у Вас таже ситуация? Попробуйте померить сопротивление Вашей "таблетки" (в обе стороны). А я вечером гляну что показывает мультиметр у меня, может как-то опредилимся с Вашей ситуацией.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 259
Зарегистрирован: 12.02.07
Откуда: Argentina, Lincoln
Рейтинг: 1

Награды: Отлично!',
ссылка на сообщение  Отправлено: 17.08.07 12:24. Заголовок: Re:


Вчера посмотрел что покажет мультиметр: при подключении общего вывода мультиметра к общему выводу "таблетки" (ободок) и плюса к центральному выводу "таблетки" мультиметр показывает сопротивление около 1,6 МОм, которое начинает уменьшаться приблизительно за 10 - 15 сек до 0,6 МОм, при обратном подключении - на короткое время появляются показания чуть меньше 2 МОм и потом выходит за границы диапазона измерения.

Не ошибается только тот, кто ничего не делает. Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 236
Зарегистрирован: 06.05.07
Откуда: Россия, Липецк
Рейтинг: 3
ссылка на сообщение  Отправлено: 16.01.08 18:11. Заголовок: "Просьба продолж..


Просьба продолжить это обсуждение в теме "Интерфейс 1-Wire. Часть 2.".

Безумству храбрых поем мы песню (А.М.Горький) Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 104 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты нет, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия