Например TDA7294

Форум РадиоКот • Просмотр темы - Написал свою Onewire для Codevision
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Ср янв 07, 2026 02:42:02

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 115 ]    , , 3, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Пт окт 27, 2023 17:56:52 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Думаю времена минимализма в написании программного кода давно прошли.
Вот только утром читал статью о вредном, бесполезном раздутии кода...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Пт окт 27, 2023 17:59:33 
Мудрый кот

Карма: 25
Рейтинг сообщений: 495
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1836
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Меня это тоже "раздражает", но пишете "быстро" код: через 10..30 минут, напр. уже есть рабочий образец (прогр. код и тест. конструкция), которому нужно немного, чтобы он стал "хороший". И не все профессионалы. Все в любительская часть в большинстве случаев.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Пт окт 27, 2023 18:03:11 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 2
которому нужно немного, чтобы он стал "хороший".

А вот это не факт. Автор темы как раз об этом и пишет. Библиотечные функции могут оказаться блокирующими и нигде в более-менее серьезных изделиях использоваться не смогут.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Пт окт 27, 2023 20:51:16 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1318
Рейтинг сообщения: 0
Вот у меня как раз пример не блокирующей функции.)


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 10:51:13 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -16
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 329
Рейтинг сообщения: 0
А зачем поиск для одного?

Один датчик внутри корпуса на той же линии и все, второй вы уже не подключите без SearchROM

Добавлено after 8 minutes 24 seconds:
Вот у меня как раз пример не блокирующей функции.)

Где этот пример? Страницей ранее? Там вообще нет ничего, кусок кода. У одноваре довольно жесткие тайминги как и у любого асинхронного канала. Совсем неблокирующий код там можно сделать только повесив датчики на USART и рулить в прерывании. А это можно сделать далеко не всегда, и занимает две ноги.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 11:33:28 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 4
второй вы уже не подключите без SearchROM

Шозабред? :facepalm:
При количестве датчиков более одного нужно определить их ID, чтобы начать обмен с каждым из них. Определение ID посредством SearchROM для термометров требует локализации каждого ID в пространстве. Делать это через измерение температуры возможно лишь тогда, когда разница температур очевидна. С другой стороны, автоматически это сделать невозможно, если диапазоны измерений разных датчиков пересекаются.
То есть гораздо проще создать тестовый разъем для датчика, в котором он будет один и в нем будет определен его ID. После чего он может быть включен в общую линию, а его ID в ПО на соответствующую позицию. SearchROM в этой процедуре не пришей-не пристегни - тупой никчемный процесс.
Совсем неблокирующий код там можно сделать только повесив датчики на USART

Даладна... :)))
Есть и другие способы. Например тот, который используется в самом UART на приеме.
Впрочем, все зависит от аппаратных ресурсов конкретного чипа.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 11:46:57 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1318
Рейтинг сообщения: 0
Где этот пример? Страницей ранее? Там вообще нет ничего, кусок кода.

Этот кусок показывает как за один проход выполняется 1 команда к датчику.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 15:54:03 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -16
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 329
Рейтинг сообщения: 0
Этот кусок ничего вообще не показывает. Он бессмысленный без всего остального.
Мой код работает примерно в два раза быстрее родной библиотеки Кодевижена и прерывания блокирует минимально.

Добавлено after 4 minutes 19 seconds:
Есть и другие способы. Например тот, который используется в самом UART на приеме.
Впрочем, все зависит от аппаратных ресурсов конкретного чипа.

Я вам про это и говорю. Вы вообще читаете сообщения?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 16:21:23 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Я вам про это и говорю. Вы вообще читаете сообщения?

Как раз все наоборот. Это вы не читаете мои.
Совсем неблокирующий код там можно сделать только повесив датчики на USART

Даладна... :)))
Есть и другие способы....

Тема вообще запилена исключительно для чтения своих сообщений автором этой темы. :dont_know:
ЗЫ. Прикольная у вас "неблокирующая" библиотека в которой передатчик 1W построен на delay... (это только то, что я не поленился посмотреть). А вы точно знаете что такое "неблокирующая"?
Или вы полагаете, что только прерывания не стоит блокировать? Впрочем, они у вас тоже блокируются. :)))
Даю на водку. :wink: :idea: Не стоит тянуть пины МК за пределы платы - история про SearchROM она как раз про это в вашем случае... Потому не стоит извращаться с КМОП драйвером пина с целью получения однопинового драйвера шины 1W.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 18:06:14 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2927
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18899
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 1
Медали: 1
Лучший человек Форума 2017 (1)
КРАМ писал(а):
Даю на водку.
лучше дай на пиво. от водки у него может сильнее обостриться осеннее обострение...

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 20:57:55 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -16
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 329
Рейтинг сообщения: 0
А собственно как сделать работу с асинхронной шиной без delay?
На прерываниях конечно можно. Но вот незадача, прерываний лишних не бывает.
Уважаемы КРАМ поделитесь своей реализацией одноваре без делеев? Внезапно если мы не пользуемся прерываниями это невозможно под AVR. Но вы видимо на новом уровне.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 21:23:13 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
А собственно как сделать работу с асинхронной шиной без delay?

Так же, как работает приемник в UART. На таймере. Время захвата данных от синхронизирующего фронта известно. Причем тут delay?
Кстати, это время имеет приличный допуск. А на передачу допуск вообще ошеломительный - 60...120 мкс для нуля...
Какой еще нахрен delay? Вы вообще о чем? :facepalm:
поделитесь своей реализацией одноваре без делеев?

Увы, у меня 1W крайний раз работал на 8-битном ПИКе и код был написан на АСМе примерно 12 лет назад. Такшта никаких "делеев" там нет по определению. Как и нопов со счетчиками циклов.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 21:44:28 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2927
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18899
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
при работе с этим термометром совсем не обязательно использовать таймер для отмеривания таймингов.
я вполне успешно пользуюсь простыми задержками.
но чтобы выдержать начало тайм-слота, запрещать прерывания нужно.
при чтении запретить прерывания и не позднее 15 мкс прочитать бит, и тут же разрешить прерывания. окончание тайм-слота я отмериваю простой задержкой. и тайм-слот приема может безболезненно быть растянут наступившим прерыванием.
при записи запретить прерывания, выдать бит в порт, и тут же разрешить прерывания. окончание тайм-слота я отмериваю простой задержкой. и тайм-слот передачи может безболезненно быть растянут наступившим прерыванием.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 21:56:53 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
я вполне успешно пользуюсь простыми задержками.

А кто с этим спорил? :)
Разговор шел о блокирующем коде и задержка является типичным блокирующим кодом.
Таки да, опасность блокировки зависит от остального кода и для обычного термометра с динамической индикацией вообще по барабану как писать тайминги. Но ведь термометр нужен не только как термометр. И если он часть другого функционала, то не стоит торчать в задержках на нопах.
тайм-слот приема может безболезненно быть растянут наступившим прерыванием.

С этим трудно не согласиться... :beer:
Слейвы на 1W работают без кварцев с таймингами плюс-минус лапоть. Поэтому протокол не требует точных интервалов. А таймер позволяет не точные интервалы формировать, а делать это прозрачно для остального кода. Если канешна эта прозрачность необходима... :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:03:37 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2927
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18899
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
а у меня два больших проекта с этими термометрами (и в каждом проекте по два термометра), и простые задержки у меня не мешают работе основного функционала.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:08:08 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
простые задержки у меня не мешают

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:08:08 
Мудрый кот

Карма: 25
Рейтинг сообщений: 495
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1836
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Бы классифицировал использование 1-wire в процентах:
- с задержками/с/без использования прерываний для других целей/: напр. 95%
- с подсчетом времени по таймеру: напр. 4%
- другими специальными средствами: slave 1-wire /с другим МК/: 1 %
- с аппаратной частью: 0% :) (DS2482: 1-wire to I2c и др.)
- другое: 0%

Можем переписать числа по своему усмотрению, но они мало что изменит. (Напр. до сих пор мне никогда не приходилось заменять "задержки" на "таймерное сч. время" за DS (за хобби). Но наверное мое употребление: всегда простое).


Последний раз редактировалось veso74 Сб окт 28, 2023 22:13:02, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:11:42 
Потрогал лапой паяльник

Карма: -4
Рейтинг сообщений: -16
Зарегистрирован: Сб окт 20, 2007 14:12:03
Сообщений: 329
Рейтинг сообщения: 0
И вот именно для скорости у меня мастер не держит тайм слот до конца, он ждет когда ведомый опустит шину. Кварца то на ведомом нет. И по факту скорость работы вырастает. На поиск четырех датчиков уходит 13мс.
В любом случае весь критический код вертится в прерываниях, а хоть усрись их приходится запрещать в при работе с шиной.
Малоблокирующий код это код, который не блокирует прерывания внезапно. Ибо если на датчик уходит 3 мс то ты хоть усрись, проц эти 3 мс будет работать с шиной. А вот будут ли блокироваться прерывания в это время очень важно.


Последний раз редактировалось AVK Сб окт 28, 2023 22:15:34, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:13:13 
Друг Кота
Аватар пользователя

Карма: 139
Рейтинг сообщений: 2919
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 24672
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
мне никогда не приходилось заменять на таймерное

Если отвлечься от AVR (мы же обсуждаем ПРИНЦИПЫ АЛГОРИТМА, а не платформу), то если я сейчас захочу вставить термометр с 1W в любое из моих серийных изделий, то ни о каких задержках на нопах и блокировок прерываний там и речи быть не может. :o
Не то, чтобы МК перегружен, но есть очень критические секции исполнения, в которых прерывания требуют сортировки по приоритетам.


Последний раз редактировалось КРАМ Сб окт 28, 2023 22:17:37, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Написал свою Onewire для Codevision
СообщениеДобавлено: Сб окт 28, 2023 22:15:37 
Мудрый кот

Карма: 25
Рейтинг сообщений: 495
Зарегистрирован: Сб май 05, 2012 20:24:52
Сообщений: 1836
Откуда: KN34PC, Болгария
Рейтинг сообщения: 0
Дал целых 4% на эти случаи :). Ну так ещё можно поговорить и про ATTiny13A, там с таймерами возникнет проблема: куда его дальше использовать :P. Поэтому, как и написали: решение: по необходимости.


Последний раз редактировалось veso74 Сб окт 28, 2023 22:18:03, всего редактировалось 2 раз(а).

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 115 ]    , , 3, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y