Страница 3 из 4

Re: Интерфейс 1-Wire

Добавлено: Ср июн 01, 2011 23:03:10
ascentman
ууу.....ет складно для студента, которому надо всего то сдать лабораторку по микропроцесорах. не знаю: правильно я подключил на рис. - но надо такое простое задания решить: типа того, как считать серийной номер етого ds17.. или какие-то подпрограмки запису-чтения 1, 0 - подобно my last post.

Re: Интерфейс 1-Wire

Добавлено: Ср июн 01, 2011 23:08:43
ascentman
ARV писал(а): давным-давно я публиковал этот проект: http://arv.radioliga.com/content/view/29/44/ к нему прилагались несколько библиотечек на ассемблере... думаю, вам подойдет
а где там код на ассемблере, так и не нашел???

Re: Интерфейс 1-Wire

Добавлено: Чт июн 02, 2011 07:11:25
Мастер Ломастер
ascentman писал(а):а где там код на ассемблере, так и не нашел???
ну и студенты нынче пошли... в трех соснах заблудился - и на весь мир кричать о помощи...

Re: Интерфейс 1-Wire

Добавлено: Чт июн 02, 2011 08:23:34
nsl2004
ascentman писал(а):ууу.....ет складно для студента, которому надо всего то сдать лабораторку по микропроцесорах. не знаю: правильно я подключил на рис. - но надо такое простое задания решить: типа того, как считать серийной номер етого ds17.. или какие-то подпрограмки запису-чтения 1, 0 - подобно my last post.
Студент?!:shock: Предложения не согласованы, ошибок больше чем слов. Ну, уважаемый , насмешил так насмешил..

Re: Интерфейс 1-Wire

Добавлено: Чт июн 02, 2011 11:12:53
shkarbatov
Ранее я кидал ссылку на книгу. Там все подробно описано, есть готовые примеры ПО, включая запись 0 и 1.
Вы сначала рассберитесь с тем как вам советуют, и только потом задавайте новые вопросы.

Re: Интерфейс 1-Wire

Добавлено: Пт ноя 02, 2012 10:49:24
EmDmAl
Извините вопрос перенес.

Re: Интерфейс 1-Wire

Добавлено: Ср ноя 26, 2014 06:57:04
invisible86
Коты помогите, нужно связать два мк pic16f84a по 1-wire, те к примеру передать с мк на мк значение температуры считанной с датчика DS1820, тоторое хранится к примеру в переменной t.

уточню немного суть, программы пишу и компилирую в среде mikroC fo pic, там имеется даже пример для датчика ds1820, который легко повтирить. а вот как используя их команды из библиотеки передавать с контроллера на контроллер до меня не доходит.

может кто то делал что то подобное, помогите

Re: Интерфейс 1-Wire

Добавлено: Ср ноя 26, 2014 07:20:56
Smen
Сдаётся мне, что вопрос к сабжу не имеет никакого отношения. :roll:
И кстати, что за безумная идея связывать два контроллера по Ван-Вайеру?

Re: Интерфейс 1-Wire

Добавлено: Ср ноя 26, 2014 07:55:20
invisible86
наверно я такой безумный :write:

а есть предложение как по одному проводу данные передать другим способом?

Re: Интерфейс 1-Wire

Добавлено: Чт ноя 27, 2014 07:10:43
Smen
invisible86 писал(а):как по одному проводу данные передать
Например, обычным UART'ом.

Re: Интерфейс 1-Wire

Добавлено: Чт фев 19, 2015 22:26:34
Shyrik27
Здравствуйте. Хочу немного поживится умом-разумом. Пишу маленько программу для чтения температуры с >2 термометров DS 18B20. Есть код семейства, серийный номер (все в 16). Первой стоит проблема в вычисление CRC. Использую процедуру со статьи. На выходе получаю CRC в виде от 1 до (как мне кажется) 256. Так понимаю бинарное в десятичном представлении. (верно?) следовательно его нужно переобразовать в двоичную систему, и поставить в конец передаваемой строки (верно?). Дальше вопрос: в CRC передаю байты в обратном порядке (в порядке передачи) то есть если я сначала переобразовываю в бинарный вид код семейства, затем ID датчика (тоже разворачивать?).
Итого я наметил алгоритм:
1 перевожу код семейства в бинарный
2 - перевожу ID датчика в бинарный
3 - разворачиваю бинарный ID код датчика (по байтно)
4 передаю в CRC код семейства затем побайтно ID код девайса
5 после вычисления CRC переобразовываю его в бинарный вид и ставлю в хвост
6 согласно алгоритму (ресет/матч) - передаю: семейство>6 байт ID > CRC
Все ли так? Просто в голове уже каша, вот решил еще добавить "соли", да и темку "апнуть".

Re: Интерфейс 1-Wire

Добавлено: Сб фев 21, 2015 12:02:26
Shyrik27
Снова. Здравствуйте. Кто может ответить на вопрос связанный с вычислением CRC. Вопрос таков. Имею полученый код семейства (28h) и серийный номер устройства (допустим 00000001b81c (тоже в h)). на вычисление CRC перевожу код семейства (28h) в бинарный вид (00101000) и таким же самым образом перевожу ID (начинаю с 1С = 00011100). Вычисление провожу в паскале, подстановкой в таблицу (все по производителю). Так вот вопрос (!) в CRC я передаю байт в каком виде: 16 или бинарном, и в каком порядке: прямом (00101000), или обратном (00010100)? И какое число я получаю на выходе? десятичное или 16? Заранее благодарен

Re: Интерфейс 1-Wire

Добавлено: Чт фев 26, 2015 20:45:37
Shyrik27
Что же продолжу монолог. Разобрался уже и с CRC, и с передачей байтов, и с прочей хитростью. Вот дошел до того, что нужно было. Считываю температуру с любого нужного мне датчика (!, во блин достижение то). Но процесс считывания с одного - около 3,5 с. А у меня их будет как минимум 10 (это - 35 сек на одно обновление. Согласитесь, как то не очень гуд). Вот теперь подумываю как бы его "синхронизировать" Гадаю как? Потоки в Delphi относительно команд? Кто как с этим боролся, и как решалось?

Re: Интерфейс 1-Wire

Добавлено: Пт фев 27, 2015 09:11:17
Gudd-Head
процесс считывания с одного - около 3,5 с
чёт хуйня какая-то. Потому и остальным пох на ваши потуги.

Re: Интерфейс 1-Wire

Добавлено: Пт фев 27, 2015 10:39:35
Shyrik27
Что же, крайне интересная позиция. Надеюсь такой взгляд и отношение на этом форуме имеете только Вы. К тому же мне кажется, что не стоит столь критично отзываться на чужие вопросы, этим можно показать только свою культуру.

Re: Интерфейс 1-Wire

Добавлено: Пн мар 02, 2015 21:26:27
Shyrik27
И так, отпишусь о проделанном и осмысленном. 1. удалось снизить время на чтение одного датчика с 3,5с до 1с (в принципе это около минимума возможного) и того 10 датчиков - 10с-9с. Для меня это вполне приемлемо. Как. 1. - были дублированы задержки функции и после функции (так как функция скрыта в библиотеке). 2. Была изменена структура считывания температуры (вместо reset/match rom/convertt t/reset/match rom/read scartchpad было использовано: reset/skip rom/convertt t/reset/match rom/read scartchpad). Как то так. Осталось запустить цикл чтения в потоке, и цель вроде как выполнена. спасибо за внимание.

Re: Интерфейс 1-Wire

Добавлено: Вт мар 03, 2015 09:05:09
Gudd-Head
Shyrik27 писал(а):удалось снизить время на чтение одного датчика с 3,5с до 1с (в принципе это около минимума возможного)
Конкретно чтение температуры после преобразования reset/match rom/read scartchpad занимает около 14 мс. Если у вас все датчики делают преобразование температуры одновременно (судя по skip rom/convertt t), непонятно на что у вас уходит 1 с на чтение одного датчика.

Re: Интерфейс 1-Wire

Добавлено: Вт мар 10, 2015 07:54:23
Smen
Gudd-Head писал(а):непонятно на что у вас уходит 1 с на чтение одного датчика
Видимо, на последовательный подсчёт CRC. :)

Re: Интерфейс 1-Wire

Добавлено: Вт мар 10, 2015 11:15:56
Хатуль_мадан
Жуть какая-то. Время на общение с 1 датчиком (со skip rom) уходит менее 20мС, даже если ожидать время обработки прерываний на индикацию. Все остальное время около 1Сек просто тупо ждем, пока датчик совершит очередное преобразование, или можно занять его еще чем-либо. На 10 датчиков думаю время на опрос увеличится до 0,5С примерно, добавится обращение к датчикам по их коду, ну ни как не несколько секунд.
Вот пример с 1 датчиком, зеленый - 1-Wire:
http://img.radiokot.ru/files/19962/lgkm1eslo.png

Re: Интерфейс 1-Wire

Добавлено: Вт мар 10, 2015 12:05:00
Shyrik27
Хатуль_мадан писал(а):Жуть какая-то.
Вот это уже существенное замечание. Но как же тот факт, что процедура RESET длится >480 us? А мне нужно перед опросом каждого датчика послать MatchROM (следовательно сначала Reset) или тупо посылаем matchrom/read/match rom/read/ Я немного уже позабыл как там код выглядит ((отложил на недельку дабы другие дела подогнать да голову освежить) сегодня гляну и начну экспериментировать более активно, если вы все так уверены в том, что можно достичь (небывалых для моего воображения) <1c на 10 датчиков.