ds18b20 maxim (64 bit) или dallas

Обсуждаем цифровые устройства...
Закрыто
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

Amstron писал(а):а почему у меня на частоте 4 МГц работает болемение стабильно 50/50? А на 8 МГц работет очень редко!

Бду искать ...
Отвечаю сам на этот вопрос... может быть кому пригодится!

В своем компиле CodeVisionAVR C Compiler выставил частоту 8 МГц и получается, что если заново компилить, то код уже другой!!! И у меня после этого программа заработала правильно на 8 МГц! А на 4 не хотит... вопщем поменялось...

Но всеже проблема есть одна! Иногда проскакивет ошибка... скажем процентов 5 из всей работы...
Скажите в чем может быть дело?

asteroid7, скорее Вы правы что в моем компиле "И как самый поганый вариант - это внутренние функции компилятора или заранее откомпилированные типа 1wire.obj (не знаю точного CV расширения). В этом случае исходников не будет..."

Я ни где не нашол в своем компиле этих функций....
Реклама
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

Amstron писал(а):
Amstron писал(а): В своем компиле CodeVisionAVR C Compiler выставил частоту 8 МГц и получается, что если заново компилить, то код уже другой!!! И у меня после этого программа заработала правильно на 8 МГц! А на 4 не хотит... вопщем поменялось...

8) заработало!!! Надобыло сделать инициализацию датчика!!!

if( ds18b20_init( 0, 30, 60, DS18B20_12BIT_RES ) ) //инициализация датчика. Анализ присутствия датчика
{
indication_IND=555; //delay_ms( 1000 ); // если найден то пишем 555
}
else { indication_IND=222; // если не найден то пишем 222
};
Но всеже проблема есть одна! Иногда проскакивет ошибка... скажем процентов 0,1 из всей работы...
Скажите в чем может быть дело?
Реклама
Открыл глаза
Аватара пользователя
Сообщения: 63
Зарегистрирован: Ср окт 08, 2008 23:09:58
Откуда: Израиль.

Сообщение taraserker »

Amstron писал(а):
Amstron писал(а):
8) заработало!!! Надобыло сделать инициализацию датчика!!!

if( ds18b20_init( 0, 30, 60, DS18B20_12BIT_RES ) ) //инициализация датчика. Анализ присутствия датчика
{
indication_IND=555; //delay_ms( 1000 ); // если найден то пишем 555
}
else { indication_IND=222; // если не найден то пишем 222
};
Но всеже проблема есть одна! Иногда проскакивет ошибка... скажем процентов 0,1 из всей работы...
Скажите в чем может быть дело?
Делали одно устройство, брал в интернете несколько исходников 1-wire протоколов. Ни одно из них корректно с датчиками не работал. Когда написал собственный протокол четко заработало.
Там надо правильно выдерживать временные интервалы между импульсами, в примерах интервалы делались NOP-ами, и четко не выдерживался интервал каждого бита.
В общем помню, что то я переписал протокол и у меня заработали даже те датчики которые, мы заменили, не опрашивались на промышленном устройстве.
Женский паяльник? Плойка - это.
Контактная информация:
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

Мне к примеру надо подключить одновременно 5 датчиков на один провод. Если я поставлю фирмы dallas, то они не смогут работать. Как я их буду распознавать??? Где собака зарыта? Какие датчики покупать???
Рекомендую подумать о надежности аппарата.Если к 1 проводу подключить много датчиков,это экономично, но плохо.При коротком замыкании линии или ее обрыве Вы утеряете всю информацию с N датчиков, и система выйдет из строя.Это ненадежно и является завлекаловкой от фирмы для потребителей.Лучше организовать сигнальный провод от каждого датчика и 2(5) общих с обработкой сигнала от каждого датчика. Лично я так делаю, и не имею проблем при обрыве\КЗ от 1-2 датчиков в системе.Не забудьте о том, что этот датчик при обращении к нему требует УБРАТЬ ВСЕ ПРЕРЫВАНИЯ в системе, ИНАЧЕ ИНФОРМАЦИЯ ИСКАЖАЕТСЯ - использует реальные ШИМ-сигналы. Я наелся по уши с причиной периодического хаотичного дергания температуры на экране, пока не последовал совету Майкла Предко.Он пишет об этом в книге "Справочник по PIC-микроконтроллерам", 2002 год,стр.278:"При передаче данных(речь - о шине 1WIRE) прерывания должны быть запрещены, поскольку переключение МК может нарушить процесс записи или считывания данных".Этого нет в I2C - прерывания не нарушают передачу двоичных кодов по факту. :)
Реклама
Эиком - электронные компоненты и радиодетали
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

user2007 писал(а): ..............\КЗ от 1-2 датчиков в системе.Не забудьте о том, что этот датчик при обращении к нему требует УБРАТЬ ВСЕ ПРЕРЫВАНИЯ в системе, ИНАЧЕ ИНФОРМАЦИЯ ИСКАЖАЕТСЯ - использует реальные ШИМ-сигналы. Я наелся по уши с причиной периодического хаотичного дергания температуры на экране, пока не последовал совету Майкла Предко.Он пишет об этом в книге "Справочник по PIC-микроконтроллерам", 2002 год,стр.278:"При передаче данных(речь - о шине 1WIRE) прерывания должны быть запрещены, поскольку переключение МК может нарушить процесс записи или считывания данных".Этого нет в I2C - прерывания не нарушают передачу двоичных кодов по факту. :)
А вы каким компилятором пользуетесь? У Вас нет таких проблем как у меня с датчиком, в том плане, что он иногда ошибку выдает???
Реклама
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

Я работаю на лицензионном BASCOM-AVR 1.11.8.8 и делаю медицинскую технику. На базе DS18S20 и DS18B20 выпущено примерно 1500 аппаратов терморегулирования для грудных детей. 0,1% датчиков выдает ошибку во 2 знаке - (то 36,6 - то 39,6)какие-то проблемы с регистром ПТК.Приходится выбрасывать.Если есть прерывания, барахлят все аппараты.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

user2007 писал(а):Если есть прерывания, барахлят все аппараты.
если барахлят при наличии прерываний - это проблемы вашей программы (или компилятора), а не датчиков. у меня (и у многих других) прерывания не мешают работе с датчиком! Ну, разве что кому-то взбрендит прерывания гнать через 5-10 микросекунд...

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

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

ARV писал(а):
user2007 писал(а):Если есть прерывания, барахлят все аппараты.
если барахлят при наличии прерываний - это проблемы вашей программы (или компилятора), а не датчиков. у меня (и у многих других) прерывания не мешают работе с датчиком! Ну, разве что кому-то взбрендит прерывания гнать через 5-10 микросекунд...

не стоит давать прочитанных где-то неверных или неверно понятых рекомендаций.
Я начинающий программист и не судите строго! Мне кажется что у меня возникает ошибка из-за того что у меня программа уходит в прерывание через определенное время, когда был послан запрос или не в то ремя контроллер начал считывать код!Это прерывание мне надо для динамической индикации. Если я ставлю коэффициент деления таймера 0, то у меня ошибка вечно висит. Если поставлю коэффициент 64, 256 то проблема исчезает и ошибка возникает очень радко.

Как бы так сделать, что когда датчик готов отдать результат измерения, то прекратить все прерывания и принимать сигнал с датчика??? Еще раз напомню, что компилирую в программе CodeVisionAVR C Compiler! Контроллер работает на частоте 8 МГц.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

Мой уютный бложик... заходите!
Контактная информация:
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

ARV писал(а):ваш CodeVision принадлежит как раз к числу тех компиляторов, библиотеки которых не любят прерывания. т.е. ваша версия о причинах проблем может быть верной. а вот лекарство тут очень горькое - перестать пользоваться CodeVision и пользоваться другими компиляторами. ну, как минимум - написать свою правильную библиотеку 1-wire
Я с Вами полностью согласен! Тем боле у меня программа растет, а там еще кроме этих прерывания будут и другие((((
На IAR придется переходить... У кого есть такой опыт: перехода с этого компилятора?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

никому не навязываю своего мнения :))) но лично я пользуюсь WinAVR
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

ARV писал(а):
user2007 писал(а):Если есть прерывания, барахлят все аппараты.
если барахлят при наличии прерываний - это проблемы вашей программы (или компилятора), а не датчиков. у меня (и у многих других) прерывания не мешают работе с датчиком! Ну, разве что кому-то взбрендит прерывания гнать через 5-10 микросекунд...

не стоит давать прочитанных где-то неверных или неверно понятых рекомендаций.

Я ссылаюсь на литературу(см.Майкл Предко, выше,снизочтите,почитайте) и ЛИЧНЫЙ опыт.У меня в программе идут прерывания от системного таймера 1 раз в 4 миллисекунды.При запрете прерываний информация считывается без искажений.В системе DS18S20 четко заданы временные интервалы "1" и "0" (по сути дела,ШИМ).Вам надо пояснить, что при уходе в прерывания МК асинхронно замораживает работу в основном программном цикле? Если вы пропускаете считывание по времени,получаете искажения.Если запрещаете прерывания на время обмена информацией с датчиком, все нормально .Датчик тут, конечно, ни при чем.Но иногда - 0,3% - идет брак по причине плохой работы ПКТ(преобразователь КОД-ТЕМПЕРАТУРА).Это БРАК ДАТЧИКА в партии.Вы на единичном экземпляре работаете или на 1500 в эксплуатации на протяжении 7 лет, как я?Если на одном любительском макете - интереса к Вам больше не имею. На DS1624 таких проблем нет - обмен по I2С цифровой синхронный битовый и может быть прерван и продолжен без последствий .
:))
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

user2007 писал(а):Вы на единичном экземпляре работаете или на 1500 в эксплуатации на протяжении 7 лет, как я?Если на одном любительском макете - вопросов к Вам больше не имею.
на одном Любительском. Сейчас заменю датчик - позже отпишусь. Может быть и вправду бракованный))
Открыл глаза
Сообщения: 66
Зарегистрирован: Пт дек 10, 2010 18:29:26

Сообщение user2007 »

Снизойдите - попробуйте - запретите прерывания на время обмена информацией с датчиком!Короче, при СЧИТЫВАНИИ КОДА из датчика!На время преобразования (у меня дается 6 секунд)разрешите, в это время датчик работает "внутри себя". :)
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Amstron писал(а):Хочу собрать термометр на цифровом датчике ds18b20. Уже собрался покупать. Начал изучать даташиты и наткнулся на то, что
У фирмы maxim есть "Each device has a unique 64-bit serial code stored in an onboard ROM" , а у dallas нет !!!
Даллас и максим - это одна и та же компания -))
И все ds18S20 и ds18b20 - одинаковые и у всех уникальный серийник по которому они адресуются.
Не парься.
Нашел транзистор. Понюхал.
Сообщения: 173
Зарегистрирован: Вт дек 21, 2010 21:18:52

Сообщение Amstron »

user2007 писал(а):Снизойдите - попробуйте - запретите прерывания на время обмена информацией с датчиком!Короче, при СЧИТЫВАНИИ КОДА из датчика!

Я не могу найти эту библиотеку. Похоже она встроенная! И это грустно...
user2007 писал(а):
На время преобразования (у меня дается 6 секунд)разрешите, в это время датчик работает "внутри себя". :)
Об этом поподробнее! К примеру на 11 битах преобразование, если я не ошибаюсь идео около 350 мС. Вы хотите сказать, что бы я разрешил это преобразование делать 6 секунд? Как?
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

user2007 писал(а):Вы на единичном экземпляре работаете или на 1500 в эксплуатации на протяжении 7 лет, как я?Если на одном любительском макете - интереса к Вам больше не имею. На DS1624 таких проблем нет - обмен по I2С цифровой синхронный битовый и может быть прерван и продолжен без последствий :))
снизойдите, посмотрите все, что было написано мною лично и другими товарищами (очень рекомендую обратиться к публикациям Ридико Леонида Ивановича, знаниям которого можно доверять смело) про интерфейс 1-wire. я этот протокол чуть ли не наизусть выучил. и количество экземпляров совершенно ни о чем не говорят: если вы написали плохую программу - она будет глючить и в миллионе устройств. о том, что 1 или 0 по протоколу 1-wire определяется в критический интервал в 15 микросекунд (обратите внимание - МИКРОсекунд), вы, надеюсь в курсе? и прерывания надо запрещать только на эти самые 15 микросекунд - это, надеюсь, для вас так же не секрет. а на весь процесс обмена можно не запрещать. то есть вашим прерываниям каждые 4 МИЛЛИсекунды эти жалкие 15-микросекундные запреты ну никак повредить не могут. теоретически я допускаю, что могут быть такие приложения, где джиттер в 15 микросекунд для прерывания недопустим, но подозреваю, что это не ваш случай.

если же вы хотите завалить меня количеством своих девайсов - интереса к вам более не имею :)))

P.S. про левые датчики слышал, самому не попадались.
P.P.S. литература тоже может быть разной - я встречал грубейшие ошибки в книжках и про AVR, и про MCS-51 (про вторые - меньше), поэтому склонен доверять только фирменным даташитам, а из них не следует, что надо запрещать прерывания на весь процесс обмена с датчиком, который по стандарту может длиться НЕОГРАНИЧЕННОЕ время.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Amstron писал(а):Вы хотите сказать, что бы я разрешил это преобразование делать 6 секунд? Как?
это бред. то, что у автора сообщения дается 6 секунд на замер - это ни к чему лично вас не обязывает. вы можете и каждые 5 секунд опрашивать датчик, и каждые 47,32 секунды - дело ваше, главное - не раньше, чем закончится замер в датчике.

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

у Armstron-а, похоже, такой редкий опрос сделан для того, чтобы снизить вероятность ошибок, и может еще по каким-то ему одному ведомым причинам...
Последний раз редактировалось ARV Ср дек 29, 2010 21:11:46, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18787
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

Satyr писал(а):И все ds18S20 и ds18b20 - одинаковые и у всех уникальный серийник по которому они адресуются.
или я чего-то не понял, или это сказан очередной бред про датчики: каждая микросхема с интерфейсом 1-wire обладает уникальным идентификатором, а вовсе не все с одинаковым. тем более что DS18S20 и DS18B20 отнюдь не одинаковые, а довольно заметно отличаются друг от друга по параметрам и возможностям.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

ARV писал(а):
Satyr писал(а):И все ds18S20 и ds18b20 - одинаковые и у всех уникальный серийник по которому они адресуются.
или я чего-то не понял, или это сказан очередной бред про датчики: каждая микросхема с интерфейсом 1-wire обладает уникальным идентификатором, а вовсе не все с одинаковым. тем более что DS18S20 и DS18B20 отнюдь не одинаковые, а довольно заметно отличаются друг от друга по параметрам и возможностям.
Скорее чтото не понял.
И DS18B20 (и DS18S20) выпускаются только далласом (максим - одна из торговых марок далласа).
И все 1wire девайсы имеют уникальный идентификатор из типа девайса, серийника и CRC на них.

B и S различаются только макс. разрядностью и временем преобразования. Если нужна точность не более 0.5 градуса - взаимозаменяемы.
Закрыто

Вернуться в «Цифровая техника»