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

Вопросы и замечания по статьям и схемам, представленным на нашем сайте

При поддержке РадиоКОТструктор.ру


Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Длительность ресета сопоставима со временем записи 1 байта (команды).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Shyrik27
Родился
Сообщения: 7
Зарегистрирован: Чт фев 19, 2015 22:03:42

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

Сообщение Shyrik27 »

Gudd-Head писал(а):Длительность ресета сопоставима со временем записи 1 байта (команды).
А как же даташит? там ресет указан жестко.?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Чё?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
Хатуль_мадан
Электрический кот
Сообщения: 1004
Зарегистрирован: Ср мар 03, 2010 11:48:00
Откуда: Уфа

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

Сообщение Хатуль_мадан »

Ну правильно, "там ресет указан жестко" не менее 480мкС и примерно столько же тратится времени на передачу 1 байта (8бит). Не путайте микросекунды с миллисекундами. На предыдущей странице я давал ссылку на график всего пакета общения. На нем вся шкала развертки осциллографа 20мС и в ней умещаются последовательно сброс, команды пропуска кода и чтения памяти, далее 8 принятых байт включая CRC, потом снова сброс и команды на новое преобразование. Оставшееся время около 1 Сек просто ждем и отображаем то, что принято от датчика. Причем, на графике видно, что команды принимаются/передаются не потоком друг за другом, а с паузой на ожидание прерываний, чтобы не мешать одним процессом другому. Прерывания на индикацию происходят каждую миллисекунду.
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

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

Сообщение alex68md »

возникло два вопроса

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

как мы узнаем это завершилась передча или устройство отвалилось от сети ?

- PRESENCE). Этот же импульс устройство всегда выдает в линию, если обнаружит сигнал RESET.
Мк дал ресерт и все 10 устройств затараторили презентом... явно колизия какаято намечается ?
alex68md
Грызет канифоль
Сообщения: 275
Зарегистрирован: Сб янв 03, 2015 21:03:24

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

Сообщение alex68md »

сори тема живая ?
Аватара пользователя
binary1
Родился
Сообщения: 2
Зарегистрирован: Вт июл 26, 2016 04:41:08

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

Сообщение binary1 »

Спасибо за прекрасную статью!

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

Остались сомнения по поводу размеров "зоны ввода значения в МК", указанного автором статьи:
Изображение


По даташитам снайперская точность не нужна:
Изображение

Код: Выделить всё

если импульс короче 15мкс => передается логическая 1
если импульс длинее 60мкс => передается логический 0
Вложения
write.gif
(12.19 КБ) 987 скачиваний
psw2.ru
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пт мар 02, 2018 13:47:57

Re: Re:

Сообщение psw2.ru »

Понимаю что некропостер, но однако - хочется поделится напримером программной реализации считывания/печати/обработки порогов температуры нескольких DS18B20 на Pic-18 без программных задержек.
В качестве источника микросекундных задержек используется таймер и высокоприоритетные прерывания.
[uquote="Liv",url="/forum/viewtopic.php?p=425977#p425977"]На ассемблере сейчас никто не пишет. Почти.

Код: Выделить всё

//---------- Вычисление контрольной суммы: ----------
void Do_Crc8(char b, char *crc)
{
  for(char i = 0; i < 8; b = b >> 1, i++)
    if((b ^ *crc) & 1) *crc = ((*crc ^ 0x18) >> 1) | 0x80;
     else *crc = (*crc >> 1) & ~0x80;
}
[/uquote]
Например вычисление CRC на Асм Пик-18, семь команд мелкопроца на бит, побитный ввод инфы:

Код: Выделить всё

NextBitRead 
;ложных проходов быть не должно при подсчёте контрольной суммы
; call CalcCRC ; Процедура проверена на документации и серийнике датчика и чтении скратчпада - работает
   rrncf   DS1820_CRC,F,BANKED   ; Вращаем минуя перенос
   movf   DS1820_CRC,W,BANKED   ;
   bcf      DS1820_CRC,7,BANKED   ; чистим старший (место под результат)
   xorwf   W_1_ReadBuf,W,BANKED; Результат XOR входа и старшего бита CRC
; в старшем бите Акк
    bnn      DoneXor   ; Заменил на анализ знакового бита (бит-7)
   movlw   b'10001100'   ; ************* То Самое "Представление Полинома"
   xorwf   DS1820_CRC,F,BANKED   ; инвертируем старший и серединку
DoneXor

использовано в универсальной заготовке, для примера работало в учебной плате частотника http://vfd.psw2.ru/ там есть исходники, фото/видео работы.
Для припаивания парочки DS18B20 в боевой частотник для измерения темп двигла не хватило терпения делать изоляцию на DS18B20 (на датчике примерно 160 вольт от земли).
Полагаю что на Си частотник на Pic18F4431 с аналогичной точностью и скоростью вычислений фазных значений не будет написан никогда.
Основание - сравнение машинного кода от компилятора Си с самописанным асмом.
Smen
Грызет канифоль
Сообщения: 256
Зарегистрирован: Вт окт 08, 2013 07:38:59
Откуда: СПб

Re: Re:

Сообщение Smen »

psw2.ru писал(а):используется таймер
Так всегда и делал, начиная с ПИК16 (разумеется без приоритетов) :)
Ответить

Вернуться в «Статьи»