АвторСообщение
постоянный участник




Пост N: 351
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 21:03. Заголовок: Датчик DS1621


Народ! Срочно нужна помощь. Пробую работать с датчиком DS1621.
В программе вроде всё как надо, по даташиту.
Сделал модель в протеусе, так она не работает. Считывает правильно температуру только один раз!
Посмотрите пожалуйста, где мой косяк. Не чего придумать уже не могу. ХЕЛП!!!!
[BR]http://zalil.ru/30812192<\/u><\/a>

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 25 [только новые]


moderator




Пост N: 39
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 22:07. Заголовок: Во первых, у Вас в п..


Во первых, у Вас в протеусе 876А , а программа под 877А. Это так надо ?
Во вторых, что значит 1 раз считывает ? Где Вы это видите/наблюдаете ? У Вас, я вижу, программа зациклина (goto $). Каким образом она должна что-то делать много раз ?
Вопрос не понятен, если честно....

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




Пост N: 352
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 22:16. Заголовок: Alex пишет: Во перв..


Alex пишет:

 цитата:
Во первых, у Вас в протеусе 876А , а программа под 877А. Это так надо ?
Во вторых, что значит 1 раз считывает ? Где Вы это видите/наблюдаете ? У Вас, я вижу, программа зациклина (goto $). Каким образом она должна что-то делать много раз ?
Вопрос не понятен, если честно....



Ой! Поменял на 877... Смысл остался тот же.

Программа задаёт команду StartConvert T, потом пауза, потом 5 раз считывает температуру из датчика и только потом зацикливается.
Откройте терминал I2C (правой кнопкой). Первое считывание температуры верное, остальные нет.

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




Пост N: 353
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 22:19. Заголовок: Вот смотрите, первое..


Вот смотрите, первое считывание ОК, остальные строчки нет.
http://zalil.ru/30812923

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




Пост N: 40
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 23:10. Заголовок: Пролистал Даташит, п..

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




Пост N: 354
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 23:18. Заголовок: Alex пишет: Пролист..


Alex пишет:

 цитата:
Пролистал Даташит, посомтрел на диаграмму чтения. В ней видно что адрес устройства посылается 2 раза, перед командой чтения температур и перед самим чтением 2-х байт температуры. Эти команды, думаю, должны быть одинаковые. У Вас в одном случае 90, в другом - 91.



Наверно что то не то посмотрели. Вот:


Alex пишет:

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



Сейчас попробую.

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




Пост N: 41
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 23:21. Заголовок: VadimKHL пишет: Нав..


VadimKHL пишет:

 цитата:
Наверно что то не то посмотрели. Вот:

Да, действительно, не доглядел. Младший бит это - R/W
Будем разбираться дальше...

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




Пост N: 355
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 23:32. Заголовок: VadimKHL пишет: Ale..



 цитата:
Alex пишет:

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

VadimKHL пишет:
Сейчас попробую.



Тоже самое.
Увеличить<\/u><\/a>

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




Пост N: 356
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 06.04.11 23:42. Заголовок: Эх блин. Это похоже ..


Эх блин. Это похоже протеус глючит. Надо проверить в желе, и не трогать этот протеус (похоже проблема в нём):
[BR]http://pic.borda.ru/?1-5-0-00000022-000-0-0-1227544204<\/u><\/a>
В низу ветке, посты от Егорка


Народ, подскажите, как работать с отрицательными числами?


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




Пост N: 79
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 06:21. Заголовок: Посмотри в Википедии..


Посмотри в Википедии Дополнительный код

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



Пост N: 3
Зарегистрирован: 31.03.11
Откуда: Россия, Москва
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 07:25. Заголовок: Работать с отрицател..


Работать с отрицательными числами нужно в зависимости от целей.
Например нужно вывести на индикацию в десятичной форме. Тогда сначала нужно найти модуль и знак. Знак - это старший разряд. А модуль находится как инверсия числа по условию знака. (Если знак минус, то инвертировать).
Инверсия в ПИКах - это либо COMF+INCF либо NEGF.
При преобразовании в десятичную форму необходимо сначала определиться с множителем.
Пример. Нужно вывести с точностью 2 двоичных разряда после точки (0,25 десятичных). Тогда (просто пример) число 10,25 при выводе суть будет 1025 и запятая в середине.
10,25 в двоичном представлении будет 1010.01
Игнорируя двоичную точку, получаем код 101001=41
Вычисляем множитель: 1025/41=25
Несложно догадаться, что для одного двоичного разряда после точки множителем будет 5, а для трех - 125, четырех - 625 и далее аналогично.
Теперь если любое округленное до 2 разрядов после точки двоичное число без учета точки домножить на 25 и преобразовать в двоично-десятичную форму, то получится готовое для вывода десятичное число равное исходной двоичной дроби (при этом нужно зажечь запятую перед двумя десятичными разрядами).
Когда делается округление исходной двоичной дроби до потребного числа разрядов, то последий отброшенный разряд даст условие инкремента сохраненного числа. Единица в старшем отброшенном разряде потребует инкремента сохраненной части без учета точки (запятой).

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




Пост N: 101
Зарегистрирован: 01.03.11
Откуда: Украина, Киев
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 08:46. Заголовок: VadimKHL, посмотрите..


VadimKHL, посмотрите ЛС.

«Never attribute to malice that which can be adequately explained by stupidity» («Никогда не приписывайте злонамеренности тому, что вполне может быть объяснено глупостью»)
Бритва Хэнлона
Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 357
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 09:25. Заголовок: Bigor пишет: А мод..


Bigor пишет:

 цитата:
А модуль находится как инверсия числа по условию знака. (Если знак минус, то инвертировать).
Инверсия в ПИКах - это либо COMF+INCF либо NEGF.



Так посмотрите в таблицу, если COMF+INCF значение температуры -0,5, то получиться значение 1,5.
Меня это смутило.

Photographer пишет:

 цитата:
Посмотри в Википедии Дополнительный код



Поподробнее можно, не смог найти.

Кстати, моя ПП преобразования и вывода числа работает так:
 
Входящие число Показания на индикаторе
0 ----> 0
1 ----> 0,5
2 ----> 1
3 ----> 1,5
4 ----> 2
и т.д.




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




Пост N: 42
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 10:05. Заголовок: VadimKHL пишет: есл..


VadimKHL пишет:

 цитата:
если COMF+INCF значение температуры -0,5, то получиться значение 1,5.

Как это так ?
11111111 10000000, после инверсии будет 00000000 01111111, и инкремент (+1) - 00000000 10000000 = 0.5

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




Пост N: 358
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 10:11. Заголовок: Alex пишет: Как это..


Alex пишет:

 цитата:
Как это так ?
11111111 10000000, после инверсии будет 00000000 01111111, и инкремент (+1) - 00000000 10000000 = 0.5



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

Получается всё просто, делаем сдвиг влево 2-х байтов.
Если в C 0, то температура положительная, можно выводить.
Если в С 1, то температура отрицательная, тогда инверсия и инкремент, потом вывод.

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




Пост N: 43
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 10:16. Заголовок: VadimKHL пишет: Пол..


VadimKHL пишет:

 цитата:
делаем сдвиг влево 2-х байтов.

Зачем ? Можно просто проверить старший бит.

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




Пост N: 359
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 10:21. Заголовок: Alex пишет: Зачем ?..


Alex пишет:

 цитата:
Зачем ? Можно просто проверить старший бит.



А посмотрите как работает моя ПП преобразования/вывода числа из поста 357.
Ей всё равно сдвиг нужен.
Пускай что бы вывести число 25,0 ей нужно входящее число 50.
если 25,5 то 51.


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




Пост N: 44
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 10:33. Заголовок: VadimKHL пишет: Пус..


VadimKHL пишет:

 цитата:
Пускай что бы вывести число 25,0 ей нужно входящее число 50.

Тогда получается да, сдвинули и проверяем C , в нём будет лежать знак.


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




Пост N: 80
Зарегистрирован: 01.03.11
Откуда: Уфа
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 11:46. Заголовок: VadimKHL пишет: Попо..

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




Пост N: 360
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 12:03. Заголовок: Photographer пишет: ..


Photographer пишет:

 цитата:
Скопируй хоть так "http://ru.wikipedia.org/wiki/Дополнительный_код_(представление_числа)"



Интересная статья.

Спасибо всем, разобрался.

Попробую теперь переделать программу датчика в режим "1 Shot".
Замысел такой, программа опроса датчика вызывается циклично через некоторое время (пускай каждые 50мс) из прерывания.
ПП датчика считывает флаг Done,
если конвертирование завершено, считать новую температуру и снова старт конвертирование температуры.
Если нет, то просто выход.



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




Пост N: 45
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 13:53. Заголовок: VadimKHL, если собир..


VadimKHL, если собираетесь работать с датчиком и из ОП прерывания и из основного цикла, учтите, что могут возникнуть конфликты, и данные будут записаны/прочитаны не правильно. Я бы не советовал так делать. Правильнее будет выставлять в ОП програмный флаг, а в основном цикле его проверять и сбрасывать.
Возможно, я не правильно Вас понял. Тогда извеняюсь.

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




Пост N: 361
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 14:10. Заголовок: Alex пишет: VadimKH..


Alex пишет:

 цитата:
VadimKHL, если собираетесь работать с датчиком и из ОП прерывания и из основного цикла, учтите, что могут возникнуть конфликты, и данные будут записаны/прочитаны не правильно. Я бы не советовал так делать. Правильнее будет выставлять в ОП програмный флаг, а в основном цикле его проверять и сбрасывать.
Возможно, я не правильно Вас понял. Тогда извеняюсь.



В моем случае лучше делать из прерывания. Т.к. основная масса программы связана с прерываниями, пульт, энкодер, клавиатура и т.д.
А основной цикл программы очень маленький, там просто ПП АЦП по циклу.
Так что получается основа моей программы это прерывания.
Туда и датчик завожу. Конфликтов не может быть просто так из за прерывания. Эти конфликты возникают при неправильной построенной структуры самой ПП.
Это всё учтено.

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




Пост N: 46
Зарегистрирован: 10.02.11
Откуда: Россия
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 14:13. Заголовок: Значит я Вас не прав..


Значит я Вас не правильно понял.

VadimKHL пишет:

 цитата:
Это всё учтено.

Это хорошо
Удачи !

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




Пост N: 362
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 07.04.11 14:14. Заголовок: Спасибо...


Спасибо.

P.S.: А что же делать с кривой моделью DS1621 в протеусе?
Может есть у кого рабочая или решение этой проблемы?

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


Пост N: 65
Зарегистрирован: 01.03.11
Рейтинг: 1
ссылка на сообщение  Отправлено: 07.04.11 15:43. Заголовок: VadimKHL пишет: P.S..


VadimKHL пишет:

 цитата:
P.S.: А что же делать с кривой моделью DS1621 в протеусе?
Может есть у кого рабочая или решение этой проблемы?

Если модель кривая, то можно отладить на другой модели с аналогичным интерфейсом... с минимумом переделок... я отлаживал работу с TDA7313 вообще на микросхеме памяти, подменив только адрес, определив его просто как #define Adress 0xXX...

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




Пост N: 363
Зарегистрирован: 31.01.08
Откуда: Россия, Владимирская обл., г.Петушки
Рейтинг: 0
ссылка на сообщение  Отправлено: 19.04.11 10:29. Заголовок: В железе всё работае..


В железе всё работает как часы. Модель 100% кривая в Протеусе.
Не наткнитесь на неё. А то я целый день голову ломал почему криво работает в протеусе, а оказалось всё работает.

Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки оффтопик свернутый текст

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



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